Skip to content

Latest commit

 

History

History
773 lines (446 loc) · 17 KB

AstFactory.md

File metadata and controls

773 lines (446 loc) · 17 KB

css-selector-parser / Exports / AstFactory

Interface: AstFactory

AST structure generators and matchers. For instance, ast.selector({rules: [...]}) creates AstSelector and ast.isSelector(...) checks if AstSelector was specified.

Example

// Represents CSS selector: ns|div#user-34.user.user-active[role="button"]:lang(en)::before > *
const selector = ast.selector({
    rules: [
        ast.rule({
            items: [
                ast.tagName({name: 'div', namespace: ast.namespaceName({name: 'ns'})}),
                ast.id({name: 'user-34'}),
                ast.className({name: 'user'}),
                ast.className({name: 'user-active'}),
                ast.attribute({
                    name: 'role',
                    operator: '=',
                    value: ast.string({value: 'button'})
                }),
                ast.pseudoClass({
                    name: 'lang',
                    argument: ast.string({value: 'en'})
                }),
                ast.pseudoElement({name: 'before'})
            ],
            nestedRule: ast.rule({combinator: '>', items: [ast.wildcardTag()]})
        })
    ]
});
console.log(ast.isSelector(selector)); // prints true
console.log(ast.isRule(selector)); // prints false

Table of contents

Properties

Properties

attribute

attribute: (props: { caseSensitivityModifier?: string ; name: string ; namespace?: AstNamespaceName | AstWildcardNamespace | AstNoNamespace ; operator?: string ; value?: AstSubstitution | AstString }) => AstAttribute

Type declaration

▸ (props): AstAttribute

Parameters
Name Type Description
props Object -
props.caseSensitivityModifier? string Comparison case sensitivity modifier (i.e. "i" in case if "[role='button' i]").
props.name string Attribute name (i.e. "href" in case if "[href]").
props.namespace? AstNamespaceName | AstWildcardNamespace | AstNoNamespace Namespace according to https://drafts.csswg.org/selectors/#attrnmsp.
props.operator? string Comparison operator (i.e. "|=" in case if "[role|=button]").
props.value? AstSubstitution | AstString Comparison value (i.e. "button" in case if "[role=button]").
Returns

AstAttribute


className

className: (props: { name: string }) => AstClassName

Type declaration

▸ (props): AstClassName

Parameters
Name Type Description
props Object -
props.name string ID name. I.e. .user -> "user".
Returns

AstClassName


formula

formula: (props: { a: number ; b: number }) => AstFormula

Type declaration

▸ (props): AstFormula

Parameters
Name Type Description
props Object -
props.a number Multiplier of n.
props.b number Constant added to a*n.
Returns

AstFormula


formulaOfSelector

formulaOfSelector: (props: { a: number ; b: number ; selector: AstRule }) => AstFormulaOfSelector

Type declaration

▸ (props): AstFormulaOfSelector

Parameters
Name Type Description
props Object -
props.a number Multiplier of n.
props.b number Constant added to a*n.
props.selector AstRule Selector that goes after formula (i.e. "div -> span" in case of ":nth-child(2n + 1 of div > span)"
Returns

AstFormulaOfSelector


id

id: (props: { name: string }) => AstId

Type declaration

▸ (props): AstId

Parameters
Name Type Description
props Object -
props.name string ID name. I.e. #root -> "root".
Returns

AstId


isAttribute

isAttribute: (entity: unknown) => entity is AstAttribute

Type declaration

▸ (entity): entity is AstAttribute

Parameters
Name Type
entity unknown
Returns

entity is AstAttribute


isClassName

isClassName: (entity: unknown) => entity is AstClassName

Type declaration

▸ (entity): entity is AstClassName

Parameters
Name Type
entity unknown
Returns

entity is AstClassName


isFormula

isFormula: (entity: unknown) => entity is AstFormula

Type declaration

▸ (entity): entity is AstFormula

Parameters
Name Type
entity unknown
Returns

entity is AstFormula


isFormulaOfSelector

isFormulaOfSelector: (entity: unknown) => entity is AstFormulaOfSelector

Type declaration

▸ (entity): entity is AstFormulaOfSelector

Parameters
Name Type
entity unknown
Returns

entity is AstFormulaOfSelector


isId

isId: (entity: unknown) => entity is AstId

Type declaration

▸ (entity): entity is AstId

Parameters
Name Type
entity unknown
Returns

entity is AstId


isNamespaceName

isNamespaceName: (entity: unknown) => entity is AstNamespaceName

Type declaration

▸ (entity): entity is AstNamespaceName

Parameters
Name Type
entity unknown
Returns

entity is AstNamespaceName


isNoNamespace

isNoNamespace: (entity: unknown) => entity is AstNoNamespace

Type declaration

▸ (entity): entity is AstNoNamespace

Parameters
Name Type
entity unknown
Returns

entity is AstNoNamespace


isPseudoClass

isPseudoClass: (entity: unknown) => entity is AstPseudoClass

Type declaration

▸ (entity): entity is AstPseudoClass

Parameters
Name Type
entity unknown
Returns

entity is AstPseudoClass


isPseudoElement

isPseudoElement: (entity: unknown) => entity is AstPseudoElement

Type declaration

▸ (entity): entity is AstPseudoElement

Parameters
Name Type
entity unknown
Returns

entity is AstPseudoElement


isRule

isRule: (entity: unknown) => entity is AstRule

Type declaration

▸ (entity): entity is AstRule

Parameters
Name Type
entity unknown
Returns

entity is AstRule


isSelector

isSelector: (entity: unknown) => entity is AstSelector

Type declaration

▸ (entity): entity is AstSelector

Parameters
Name Type
entity unknown
Returns

entity is AstSelector


isString

isString: (entity: unknown) => entity is AstString

Type declaration

▸ (entity): entity is AstString

Parameters
Name Type
entity unknown
Returns

entity is AstString


isSubstitution

isSubstitution: (entity: unknown) => entity is AstSubstitution

Type declaration

▸ (entity): entity is AstSubstitution

Parameters
Name Type
entity unknown
Returns

entity is AstSubstitution


isTagName

isTagName: (entity: unknown) => entity is AstTagName

Type declaration

▸ (entity): entity is AstTagName

Parameters
Name Type
entity unknown
Returns

entity is AstTagName


isWildcardNamespace

isWildcardNamespace: (entity: unknown) => entity is AstWildcardNamespace

Type declaration

▸ (entity): entity is AstWildcardNamespace

Parameters
Name Type
entity unknown
Returns

entity is AstWildcardNamespace


isWildcardTag

isWildcardTag: (entity: unknown) => entity is AstWildcardTag

Type declaration

▸ (entity): entity is AstWildcardTag

Parameters
Name Type
entity unknown
Returns

entity is AstWildcardTag


namespaceName

namespaceName: (props: { name: string }) => AstNamespaceName

Type declaration

▸ (props): AstNamespaceName

Parameters
Name Type Description
props Object -
props.name string Namespace name (i.e. "ns" in case of "ns|div"). "
Returns

AstNamespaceName


noNamespace

noNamespace: (props?: {}) => AstNoNamespace

Type declaration

▸ (props?): AstNoNamespace

Parameters
Name Type
props? Object
Returns

AstNoNamespace


pseudoClass

pseudoClass: (props: { argument?: AstSelector | AstSubstitution | AstString | AstFormula | AstFormulaOfSelector ; name: string }) => AstPseudoClass

Type declaration

▸ (props): AstPseudoClass

Parameters
Name Type Description
props Object -
props.argument? AstSelector | AstSubstitution | AstString | AstFormula | AstFormulaOfSelector Pseudo-class value (i.e. "en" in case of ":lang(en)").
props.name string Pseudo-class name (i.e. "hover" in case of ":hover").
Returns

AstPseudoClass


pseudoElement

pseudoElement: (props: { argument?: AstSelector | AstSubstitution | AstString ; name: string }) => AstPseudoElement

Type declaration

▸ (props): AstPseudoElement

Parameters
Name Type Description
props Object -
props.argument? AstSelector | AstSubstitution | AstString Pseudo-element value (i.e. "foo" in case of "::part(foo)").
props.name string Pseudo-element name (i.e. "before" in case of "::before").
Returns

AstPseudoElement


rule

rule: (props: { combinator?: string ; items: (AstTagName | AstWildcardTag | AstId | AstClassName | AstPseudoClass | AstAttribute | AstPseudoElement)[] ; nestedRule?: AstRule }) => AstRule

Type declaration

▸ (props): AstRule

Parameters
Name Type Description
props Object -
props.combinator? string Rule combinator which was used to nest this rule (i.e. ">" in case of "div > span" if the current rule is "span").
props.items (AstTagName | AstWildcardTag | AstId | AstClassName | AstPseudoClass | AstAttribute | AstPseudoElement)[] Items of a CSS rule. Can be tag, ids, class names, pseudo-classes and pseudo-elements.
props.nestedRule? AstRule Nested rule if specified (i.e. "div > span").
Returns

AstRule


selector

selector: (props: { rules: AstRule[] }) => AstSelector

Type declaration

▸ (props): AstSelector

Parameters
Name Type Description
props Object -
props.rules AstRule[] List of CSS rules. Every rule contains conditions. Selector is considered matched once at least one rule matches.
Returns

AstSelector


string

string: (props: { value: string }) => AstString

Type declaration

▸ (props): AstString

Parameters
Name Type Description
props Object -
props.value string The actual string value.
Returns

AstString


substitution

substitution: (props: { name: string }) => AstSubstitution

Type declaration

▸ (props): AstSubstitution

Parameters
Name Type Description
props Object -
props.name string Substitution name (i.e. "var" in case of "[role=$var]" or ":lang($var)").
Returns

AstSubstitution


tagName

tagName: (props: { name: string ; namespace?: AstNamespaceName | AstWildcardNamespace | AstNoNamespace }) => AstTagName

Type declaration

▸ (props): AstTagName

Parameters
Name Type Description
props Object -
props.name string Tag name, i.e. "div".
props.namespace? AstNamespaceName | AstWildcardNamespace | AstNoNamespace Namespace according to https://www.w3.org/TR/css3-namespace/.
Returns

AstTagName


wildcardNamespace

wildcardNamespace: (props?: {}) => AstWildcardNamespace

Type declaration

▸ (props?): AstWildcardNamespace

Parameters
Name Type
props? Object
Returns

AstWildcardNamespace


wildcardTag

wildcardTag: (props?: { namespace?: AstNamespaceName | AstWildcardNamespace | AstNoNamespace }) => AstWildcardTag

Type declaration

▸ (props?): AstWildcardTag

Parameters
Name Type Description
props? Object -
props.namespace? AstNamespaceName | AstWildcardNamespace | AstNoNamespace Namespace according to https://www.w3.org/TR/css3-namespace/.
Returns

AstWildcardTag