Types
CombinatorType = enum ctNone, ctDescendant, ctChild, ctNextSibling, ctSubsequentSibling
ComplexSelector = object specificity*: uint pseudo*: PseudoElement
CompoundSelector = object ct*: CombinatorType
CSSAnB = tuple[A, B: int32]
CSSAngleType = range[catDeg .. catTurn]
CSSAtRule = ref object name*: CSSAtRuleType hasBlock*: bool prelude*: seq[CSSToken] oblock*: seq[CSSToken]
CSSAtRuleType = enum cartUnknown = "-cha-unknown", cartImport = "import", cartMedia = "media", cartLayer = "layer"
CSSDeclaration = object f*: CSSImportantFlag hasVar*: bool case t*: CSSDeclarationType of cdtProperty: p*: CSSWidePropertyType of cdtVariable: v*: CAtom of cdtNestedRule: r*: CSSQualifiedRule value*: seq[CSSToken]
CSSDeclarationType = enum cdtProperty, cdtVariable, cdtNestedRule
CSSDimensionType = enum cdtUnknown = "", cdtN = "n", cdtNDash = "n-", cuAuto = "", cuCap = "cap", cuCh = "ch", cuCm = "cm", cuDvb = "dvb", cuDvh = "dvh", cuDvi = "dvi", cuDvmax = "dvmax", cuDvmin = "dvmin", cuDvw = "dvw", cuEm = "em", cuEx = "ex", cuIc = "ic", cuIn = "in", cuLh = "lh", cuLvmax = "lvmax", cuLvmin = "lvmin", cuMm = "mm", cuPc = "pc", cuPt = "pt", cuPx = "px", cuRcap = "rcap", cuRch = "rch", cuRem = "rem", cuRex = "rex", cuRic = "ric", cuRlh = "rlh", cuSvmax = "svmax", cuSvmin = "svmin", cuVb = "vb", cuVh = "vh", cuVi = "vi", cuVmax = "vmax", cuVmin = "vmin", cuVw = "vw", catDeg = "deg", catGrad = "grad", catRad = "rad", catTurn = "turn"
CSSFunctionType = enum cftUnknown = "-cha-unknown", cftCalc = "calc", cftChaAnsi = "-cha-ansi", cftCounter = "counter", cftHost = "host", cftHsl = "hsl", cftHsla = "hsla", cftIs = "is", cftLang = "lang", cftNot = "not", cftNthChild = "nth-child", cftNthLastChild = "nth-last-child", cftRgb = "rgb", cftRgba = "rgba", cftSrc = "src", cftUrl = "url", cftVar = "var", cftWhere = "where", cftLayer = "layer"
CSSImportantFlag = enum cifNormal, cifImportant
CSSNthChild = object anb*: CSSAnB ofsels*: SelectorList
CSSPropertyType = enum cptBgcolorIsCanvas = "-cha-bgcolor-is-canvas", cptBorderBottomStyle = "border-bottom-style", cptBorderCollapse = "border-collapse", cptBorderLeftStyle = "border-left-style", cptBorderRightStyle = "border-right-style", cptBorderTopStyle = "border-top-style", cptBoxSizing = "box-sizing", cptCaptionSide = "caption-side", cptClear = "clear", cptDisplay = "display", cptFlexDirection = "flex-direction", cptFlexWrap = "flex-wrap", cptFloat = "float", cptFontStyle = "font-style", cptListStylePosition = "list-style-position", cptListStyleType = "list-style-type", cptOverflowX = "overflow-x", cptOverflowY = "overflow-y", cptPosition = "position", cptTextAlign = "text-align", cptTextDecoration = "text-decoration", cptTextTransform = "text-transform", cptVerticalAlign = "vertical-align", cptVisibility = "visibility", cptWhiteSpace = "white-space", cptWordBreak = "word-break", cptBorderBottomWidth = "border-bottom-width", cptBorderLeftWidth = "border-left-width", cptBorderRightWidth = "border-right-width", cptBorderTopWidth = "border-top-width", cptChaColspan = "-cha-colspan", cptChaRowspan = "-cha-rowspan", cptFlexGrow = "flex-grow", cptFlexShrink = "flex-shrink", cptFontWeight = "font-weight", cptInputIntrinsicSize = "-cha-input-intrinsic-size", cptOpacity = "opacity", cptBackgroundColor = "background-color", cptBorderBottomColor = "border-bottom-color", cptBorderLeftColor = "border-left-color", cptBorderRightColor = "border-right-color", cptBorderSpacingBlock = "-cha-border-spacing-block", cptBorderSpacingInline = "-cha-border-spacing-inline", cptBorderTopColor = "border-top-color", cptBottom = "bottom", cptColor = "color", cptFlexBasis = "flex-basis", cptFontSize = "font-size", cptHeight = "height", cptLeft = "left", cptMarginBottom = "margin-bottom", cptMarginLeft = "margin-left", cptMarginRight = "margin-right", cptMarginTop = "margin-top", cptMaxHeight = "max-height", cptMaxWidth = "max-width", cptMinHeight = "min-height", cptMinWidth = "min-width", cptPaddingBottom = "padding-bottom", cptPaddingLeft = "padding-left", cptPaddingRight = "padding-right", cptPaddingTop = "padding-top", cptRight = "right", cptTop = "top", cptVerticalAlignLength = "-cha-vertical-align-length", cptWidth = "width", cptZIndex = "z-index", cptBackgroundImage = "background-image", cptContent = "content", cptCounterReset = "counter-reset", cptCounterIncrement = "counter-increment", cptCounterSet = "counter-set", cptQuotes = "quotes"
CSSQualifiedRule = ref object sels*: SelectorList decls*: seq[CSSDeclaration]
CSSRule = object case t*: CSSRuleType of crtAt: at*: CSSAtRule of crtQualified: qualified*: CSSQualifiedRule
CSSRuleType = enum crtAt, crtQualified
CSSShorthandType = enum cstNone = "", cstAll = "all", cstMargin = "margin", cstPadding = "padding", cstBorderStyle = "border-style", cstBorderColor = "border-color", cstBorderWidth = "border-width", cstBackground = "background", cstListStyle = "list-style", cstFlex = "flex", cstFlexFlow = "flex-flow", cstOverflow = "overflow", cstVerticalAlign = "vertical-align", cstBorderSpacing = "border-spacing", cstBorderBottom = "border-bottom", cstBorderLeft = "border-left", cstBorderRight = "border-right", cstBorderTop = "border-top", cstBorder = "border"
CSSSimpleBlock = ref object value*: seq[CSSToken]
CSSToken = object t*: CSSTokenType flags*: set[CSSTokenFlag] dt*: CSSDimensionType s*: string
CSSTokenType = enum cttIdent, cttFunction, cttAtKeyword, cttHash, cttString, cttBadString, cttUrl, cttBadUrl, cttDelim, cttNumber, cttPercentage, cttDimension, cttCdo = "<!--", cttCdc = "-->", cttWhitespace, cttBang = "!", cttDollar = "$", cttAnd = "&", cttLparen = "(", cttRparen = ")", cttStar = "*", cttPlus = "+", cttComma = ",", cttMinus = "-", cttDot = ".", cttSlash = "/", cttColon = ":", cttSemicolon = ";", cttLt = "<", cttEquals = "=", cttGt = ">", cttRbracket = "[", cttLbracket = "]", cttCaret = "^", cttLbrace = "{", cttPipe = "|", cttRbrace = "}", cttTilde = "~"
CSSUnit = range[cuAuto .. cuVw]
CSSWidePropertyType = object sh*: CSSShorthandType p*: CSSPropertyType
HostSelector = ref object specificity*: uint csel*: CompoundSelector
PseudoClass = enum pcFirstChild = "first-child", pcLastChild = "last-child", pcOnlyChild = "only-child", pcHover = "hover", pcRoot = "root", pcChecked = "checked", pcFocus = "focus", pcLink = "link", pcVisited = "visited", pcTarget = "target", pcDisabled = "disabled", pcHost = "host", pcDefined = "defined", pcFirstNode = "-cha-first-node", pcLastNode = "-cha-last-node", pcBorderNonzero = "-cha-border-nonzero"
PseudoElement = enum peNone = "-cha-none", peBefore = "before", peLinkHint = "-cha-link-hint", peLinkMarker = "-cha-link-marker", peMarker = "marker", peBackdrop = "backdrop", peAfter = "after"
RelationFlag = enum rfNone, rfI, rfS
RelationType = enum rtExists, rtEquals, rtToken, rtBeginDash, rtStartsWith, rtEndsWith, rtContains
Selector = ref object case t*: SelectorType of stType: tag*: CAtom of stId: id*: CAtom of stClass: class*: CAtom of stAttr: attr*: CAtom rel*: SelectorRelation value*: string of stUniversal: nil of stPseudoClass: pc*: PseudoClass of stIs, stWhere, stNot: fsels*: SelectorList of stHost: host*: HostSelector of stLang: lang*: string of stNthChild, stNthLastChild: nthChild*: CSSNthChild
SelectorList = seq[ComplexSelector]
SelectorRelation = object t*: RelationType flag*: RelationFlag
SelectorType = enum stType, stId, stAttr, stClass, stUniversal, stPseudoClass, stIs = "is", stNot = "not", stWhere = "where", stLang = "lang", stNthChild = "nth-child", stNthLastChild = "nth-last-child", stHost = "host"
Consts
FirstHWordPropType = cptBorderBottomWidth
FirstObjPropType = cptBackgroundImage
FirstWordPropType = cptBackgroundColor
LastBitPropType = cptWordBreak
LastHWordPropType = cptOpacity
LastWordPropType = cptZIndex
Procs
proc `$`(c: CSSQualifiedRule): string {....raises: [], tags: [RootEffect], forbids: [].}
proc `$`(c: CSSSimpleBlock): string {....raises: [], tags: [], forbids: [].}
proc `$`(cxsel: ComplexSelector): string {....raises: [], tags: [RootEffect], forbids: [].}
proc `$`(decl: CSSDeclaration): string {....raises: [], tags: [RootEffect], forbids: [].}
proc `$`(nthChild: CSSNthChild): string {....raises: [], tags: [RootEffect], forbids: [].}
proc `$`(p: CSSWidePropertyType): string {....raises: [], tags: [], forbids: [].}
proc `$`(sels: CompoundSelector): string {....raises: [], tags: [RootEffect], forbids: [].}
proc `$`(slist: SelectorList): string {....raises: [], tags: [RootEffect], forbids: [].}
proc `[]`(cxsel: ComplexSelector; i: BackwardsIndex): lent CompoundSelector {. inline, ...raises: [], tags: [], forbids: [].}
proc `[]`(cxsel: ComplexSelector; i: int): lent CompoundSelector {.inline, ...raises: [], tags: [], forbids: [].}
proc `[]`(cxsel: var ComplexSelector; i: BackwardsIndex): var CompoundSelector {. inline, ...raises: [], tags: [], forbids: [].}
proc anyPropertyType(s: string): Opt[CSSWidePropertyType] {....raises: [], tags: [], forbids: [].}
proc checkFunctionEnd(ctx: var CSSParser): Opt[void] {....raises: [], tags: [], forbids: [].}
proc consumeImports(ctx: var CSSParser): seq[CSSAtRule] {....raises: [], tags: [RootEffect], forbids: [].}
proc consumeInt(ctx: var CSSParser): Opt[int32] {....raises: [], tags: [], forbids: [].}
proc cssDimensionToken(n: float32; dt: CSSDimensionType): CSSToken {....raises: [], tags: [], forbids: [].}
proc cssNumberToken(n: float32): CSSToken {....raises: [], tags: [], forbids: [].}
proc cssPercentageToken(n: float32; flags: set[CSSTokenFlag] = {}): CSSToken {. ...raises: [], tags: [], forbids: [].}
proc initCSSDeclaration(name: string): Opt[CSSDeclaration] {....raises: [], tags: [], forbids: [].}
proc initCSSParser(iq: string): CSSParser {....raises: [], tags: [], forbids: [].}
proc initCSSParser(toks: openArray[CSSToken]): CSSParser {....raises: [], tags: [], forbids: [].}
proc initCSSParserSink(toks: var seq[CSSToken]): CSSParser {....raises: [], tags: [], forbids: [].}
proc len(cxsel: ComplexSelector): int {.inline, ...raises: [], tags: [], forbids: [].}
proc name(decl: CSSDeclaration): string {....raises: [], tags: [], forbids: [].}
proc parseComponentValues(iq: string): seq[CSSToken] {....raises: [], tags: [], forbids: [].}
proc parseDeclarations(iq: string): seq[CSSDeclaration] {....raises: [], tags: [RootEffect], forbids: [].}
proc parseSelectors(ibuf: string): SelectorList {....raises: [], tags: [RootEffect], forbids: [].}
proc peekFunction(ctx: var CSSParser; ft: CSSFunctionType): bool {....raises: [], tags: [], forbids: [].}
proc peekIdentNoCase(ctx: var CSSParser; s: string): bool {....raises: [], tags: [], forbids: [].}
proc peekTokenType(ctx: var CSSParser): CSSTokenType {....raises: [], tags: [], forbids: [].}
proc propertyType(s: string): Opt[CSSPropertyType] {....raises: [], tags: [], forbids: [].}
proc shorthandType(s: string): CSSShorthandType {....raises: [], tags: [], forbids: [].}
proc skipBlanks(ctx: var CSSParser) {....raises: [], tags: [], forbids: [].}
proc skipBlanksCheckDone(ctx: var CSSParser): Opt[void] {....raises: [], tags: [], forbids: [].}
proc skipBlanksCheckHas(ctx: var CSSParser): Opt[void] {....raises: [], tags: [], forbids: [].}
proc skipFunction(ctx: var CSSParser) {....raises: [], tags: [RootEffect], forbids: [].}
proc wide(p: CSSPropertyType): CSSWidePropertyType {....raises: [], tags: [], forbids: [].}
Iterators
iterator items(csel: CompoundSelector): Selector {.inline, ...raises: [], tags: [], forbids: [].}
iterator items(cxsel: ComplexSelector): lent CompoundSelector {.inline, ...raises: [], tags: [], forbids: [].}
iterator parseListOfRules(ctx: var CSSParser; topLevel: bool): CSSRule {.inline, ...raises: [], tags: [RootEffect], forbids: [].}
iterator ritems(cxsel: ComplexSelector): lent CompoundSelector {.inline, ...raises: [], tags: [], forbids: [].}
Templates
template ft(tok: CSSToken): CSSFunctionType {..}