@frontmeans/doqry v1.0.4
Document Query Notation
Structured CSS Selectors
Doqry represents CSS selectors as data structures rather than trying to parse selectors text.
Structured CSS selector is one of:
- raw CSS selector text,
- CSS selector part, or
- an array consisting of strings, parts, and their combinators.
Raw CSS selector text is never interpreted and is used verbatim.
CSS combinator is one of: >, +, or ~.
CSS selector part is a structure representing selectors like
element-name#id.class1.classN[attr1][attr2]:pseudo-class::pseudo-element.
Each selector part is represented by corresponding property:
- Element selector:
{ e: 'element-name' }forelement-name. - Element selector in XML namespace:
{ ns: 'ns-prefix', e: 'element-name' }forns-prefix | element-name. - Universal element selector:
{ e: '*' }, which is the same as{}for*. - Universal element selector in XML namespace:
{ ns: 'ns-prefix', e: '*' }, which is the same as{ ns: 'ns-prefix' }forns-prefix | *. - Element identifier:
{ i: 'element-id' }for#element-id. - Element class:
{ c: 'class-name' }for.class-name. - Multiple element classes:
{ c: ['class-1', 'class-2'] }for.class-1.class-2. - Attribute selector:
{ u: ['disabled'] }for[disabled],{ u: ['lang', '|=', 'en'] }for[lang |= "en"]. - Pseudo-element:
{ e: 'li', u: ['::', 'after'] }forli::after. - Pseudo-class:
{ u: [':', 'host', { c: 'active' }] }for:host(.active),{ u: [':', 'is', [{ e: 'ul' }, '>', { e: 'li' }], [{ c: 'menu'}, { c: 'menu-item'}]] }for:is(ul > li, .menu > .menu-item) - Additional selectors:
{ e: 'a', s: '[href^=https://]:visited' }fora[href^=https://]:visited. - Raw CSS selector:
{ s: '.my-selector' }for.my-selector.
Selector part may combine multiple properties. Parts may be combined too.
E.g. [{ e: 'ul', c: 'unstyled' }, '>', { e: 'li' }] corresponds to ul.unstyled > li CSS selector.
Qualifiers
CSS selector may include qualifiers. Qualifiers do not correspond to CSS selectors directly. Instead, they are used internally to classify selectors. E.g. they may represent at-rule selectors.
Qualifiers represented by $ property of structured CSS selector part, that may contain either one qualifier, or an
array of qualifiers:
{ c: 'sr-only', $: '@media=screen' }.
Each qualifier is a string in the <name>[=<value>] format, where the <name> may be qualified and consist of multiple
colon-separated parts like block:visibility:hidden.
The presence of q1:q2:q3=v qualifier means the same as presence of q1, q1:q2, q1:q2:q3, and q1:q2:q3=v
qualifiers.
API
The following operations over structure CSS selectors supported:
doqryDisplayText(selector)- Convertsselectorto textual representation including qualifiers.doqryEqual(first, second)- Checks whether thefirstselector equals to thesecondone.doqryPicker(selector)- Normalizesselectorrepresentation and converts it to CSS picker.doqryText(selector, format?)- Convertsselectorto textual representation in the givenformat. By default, converts to representation that can be used in CSS (i.e. without qualifiers).
2 years ago
2 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago