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; }