import {StringDictionary} from './StringDictionary'; /** * The purpose of a tag handler is to convert tags to JavaScript instructions. */ export interface TagHandler { onopentag( name: string, attrs: StringDictionary, key: string, statics: StringDictionary, varArgs: StringDictionary, options: Options ): string onclosetag?( name: string, options: Options ): string } /** * Dictionary of tag handlers. */ export interface TagHandlers { [k: string]: TagHandler } /** * The default tag handlers. */ export interface DefaultTagHandlers extends TagHandlers { /** * @example * ```javascript * idomizer.compile(''); * ``` */ 'tpl-logger': TagHandler /** * @example * ```javascript * idomizer.compile(` * \\n *
  • * *
  • *
    * `); * ``` */ 'tpl-each': TagHandler /** * @example * ```javascript * idomizer.compile(` * *

    1 value

    * *

    some values

    * *

    no values to display

    *
    * `); * ``` */ 'tpl-if': TagHandler /** * @example * ```javascript * idomizer.compile(` * *

    1 value

    * *

    some values

    *
    * `); * ``` */ 'tpl-else-if': TagHandler /** * @example * ```javascript * idomizer.compile(` * *

    1 value

    * *

    no values to display

    *
    * `); * ``` */ 'tpl-else': TagHandler /** * @example * ```javascript * idomizer.compile(`;`); * ``` */ 'tpl-text': TagHandler /** * @example * ```javascript * let anotherRenderFunction = // antoher IncrementalDOM render function * idomizer.compile(` * * `)(IncrementalDOM, { * anotherRender: anotherRenderFunction * }); * ``` */ 'tpl-call': TagHandler } /** * The idomizer options. */ export interface Options { /** * Append a end of line character ('\\n') after each statements. */ pretty?: boolean /** * Discovered static attributes will be handled as dynamic attributes. */ ignoreStaticAttributes?: boolean /** * Regular expression to inject interpolated values. */ interpolation?: RegExp /** * Regular expression to inject JavaScript code. */ expression?: RegExp /** * The name of the IncrementalDOM's key. Should be used when dealing with loops. */ attributeKey?: string /** * The flag to skip the process eventual children. * @example * ``` *

    * ``` */ attributeSkip?: string /** * If true exceptions raised during interpolation will be skipped and an empty string wil be used as result value.
    By default true. */ skipExceptions?: boolean /** * If true element name having `-` or having an attribute `is` will be skipped. * By default `true`. */ skipCustomElements?: boolean /** * The name of the variable exposing the data. */ varDataName?: string /** * The name of the variable exposing the helpers. */ varHelpersName?: string /** * The list of self closing elements. (http://www.w3.org/TR/html5/syntax.html#void-elements) */ selfClosingElements?: string[] /** * The built in and custom tags. */ tags?: TagHandlers }