Documentation ¶
Index ¶
- Variables
- func ComplexSelectorsEqual(a []ComplexSelector, b []ComplexSelector, check *CrossFileEqualityCheck) bool
- func HashComplexSelectors(hash uint32, selectors []ComplexSelector) uint32
- func HashRules(hash uint32, rules []Rule) uint32
- func HashTokens(hash uint32, tokens []Token) uint32
- func MaybeCorrectDeclarationTypo(text string) (string, bool)
- func RulesEqual(a []Rule, b []Rule, check *CrossFileEqualityCheck) bool
- func TokensAreCommaSeparated(tokens []Token) bool
- func TokensEqual(a []Token, b []Token, check *CrossFileEqualityCheck) bool
- func TokensEqualIgnoringWhitespace(a []Token, b []Token) bool
- type AST
- type Combinator
- type ComplexSelector
- type Composes
- type CompoundSelector
- type CrossFileEqualityCheck
- type D
- type ImportedComposesName
- type KeyframeBlock
- type NameToken
- type NamespacedName
- type NthIndex
- type PseudoClassKind
- type R
- type RAtCharset
- type RAtImport
- type RAtKeyframes
- type RAtLayer
- type RBadDeclaration
- type RComment
- type RDeclaration
- type RKnownAt
- type RQualified
- type RSelector
- type RUnknownAt
- type Rule
- type SS
- type SSAttribute
- type SSClass
- type SSHash
- type SSPseudoClass
- type SSPseudoClassWithSelectorList
- type SubclassSelector
- type Token
- func (t Token) DimensionUnit() string
- func (t Token) DimensionUnitIsSafeLength() bool
- func (t Token) DimensionValue() string
- func (a Token) Equal(b Token, check *CrossFileEqualityCheck) bool
- func (a Token) EqualIgnoringWhitespace(b Token) bool
- func (t Token) FractionForPercentage() (float64, bool)
- func (t Token) IsAngle() bool
- func (t Token) IsOne() bool
- func (t Token) IsZero() bool
- func (t Token) PercentageValue() string
- func (t *Token) TurnLengthIntoNumberIfZero() bool
- func (t *Token) TurnLengthOrPercentageIntoNumberIfZero() bool
- type WhitespaceFlags
Constants ¶
This section is empty.
Variables ¶
View Source
var KnownDeclarations = map[string]D{}/* 328 elements not displayed */
Functions ¶
func ComplexSelectorsEqual ¶ added in v0.18.14
func ComplexSelectorsEqual(a []ComplexSelector, b []ComplexSelector, check *CrossFileEqualityCheck) bool
func HashComplexSelectors ¶ added in v0.18.14
func HashComplexSelectors(hash uint32, selectors []ComplexSelector) uint32
func HashTokens ¶ added in v0.11.19
func MaybeCorrectDeclarationTypo ¶ added in v0.14.12
func RulesEqual ¶ added in v0.11.19
func RulesEqual(a []Rule, b []Rule, check *CrossFileEqualityCheck) bool
func TokensAreCommaSeparated ¶ added in v0.12.10
func TokensEqual ¶ added in v0.11.19
func TokensEqual(a []Token, b []Token, check *CrossFileEqualityCheck) bool
func TokensEqualIgnoringWhitespace ¶ added in v0.11.19
Types ¶
type Combinator ¶ added in v0.18.14
type ComplexSelector ¶
type ComplexSelector struct {
Selectors []CompoundSelector
}
func (ComplexSelector) CloneWithoutLeadingCombinator ¶ added in v0.18.14
func (s ComplexSelector) CloneWithoutLeadingCombinator() ComplexSelector
func (ComplexSelector) Equal ¶ added in v0.13.13
func (a ComplexSelector) Equal(b ComplexSelector, check *CrossFileEqualityCheck) bool
func (ComplexSelector) IsRelative ¶ added in v0.17.14
func (sel ComplexSelector) IsRelative() bool
func (ComplexSelector) UsesPseudoElement ¶ added in v0.17.14
func (sel ComplexSelector) UsesPseudoElement() bool
type Composes ¶ added in v0.18.19
type Composes struct { // Note that each of these can be either local or global. Local examples: // // .foo { composes: bar } // .bar { color: red } // // Global examples: // // .foo { composes: bar from global } // .foo :global { composes: bar } // .foo { :global { composes: bar } } // :global .bar { color: red } // Names []ast.LocRef // Each of these is local in another file. For example: // // .foo { composes: bar from "bar.css" } // .foo { composes: bar from url(bar.css) } // ImportedNames []ImportedComposesName // This tracks what CSS properties each class uses so that we can warn when // "composes" is used incorrectly to compose two classes from separate files // that declare the same CSS properties. Properties map[string]logger.Loc }
type CompoundSelector ¶
type CompoundSelector struct { TypeSelector *NamespacedName SubclassSelectors []SubclassSelector NestingSelectorLoc ast.Index32 // "&" Combinator Combinator // Optional, may be 0 // If this is true, this is a "&" that was generated by a bare ":local" or ":global" WasEmptyFromLocalOrGlobal bool }
func (CompoundSelector) Clone ¶ added in v0.18.14
func (sel CompoundSelector) Clone() CompoundSelector
func (*CompoundSelector) HasNestingSelector ¶ added in v0.17.10
func (sel *CompoundSelector) HasNestingSelector() bool
func (CompoundSelector) IsInvalidBecauseEmpty ¶ added in v0.18.14
func (sel CompoundSelector) IsInvalidBecauseEmpty() bool
func (CompoundSelector) IsSingleAmpersand ¶ added in v0.17.14
func (sel CompoundSelector) IsSingleAmpersand() bool
func (CompoundSelector) Range ¶ added in v0.18.19
func (sel CompoundSelector) Range() (r logger.Range)
type CrossFileEqualityCheck ¶ added in v0.17.10
type CrossFileEqualityCheck struct { ImportRecordsA []ast.ImportRecord ImportRecordsB []ast.ImportRecord Symbols ast.SymbolMap SourceIndexA uint32 SourceIndexB uint32 }
This is necessary when comparing tokens between two different files
func (*CrossFileEqualityCheck) RefsAreEquivalent ¶ added in v0.18.18
type D ¶ added in v0.7.9
type D uint16
const ( DUnknown D = iota DAlignContent DAlignItems DAlignSelf DAlignmentBaseline DAll DAnimation DAnimationDelay DAnimationDirection DAnimationDuration DAnimationFillMode DAnimationIterationCount DAnimationName DAnimationPlayState DAnimationTimingFunction DAppearance DBackdropFilter DBackfaceVisibility DBackground DBackgroundAttachment DBackgroundClip DBackgroundColor DBackgroundImage DBackgroundOrigin DBackgroundPosition DBackgroundPositionX DBackgroundPositionY DBackgroundRepeat DBackgroundSize DBaselineShift DBlockSize DBorder DBorderBlockEnd DBorderBlockEndColor DBorderBlockEndStyle DBorderBlockEndWidth DBorderBlockStart DBorderBlockStartColor DBorderBlockStartStyle DBorderBlockStartWidth DBorderBottom DBorderBottomColor DBorderBottomLeftRadius DBorderBottomRightRadius DBorderBottomStyle DBorderBottomWidth DBorderCollapse DBorderColor DBorderImage DBorderImageOutset DBorderImageRepeat DBorderImageSlice DBorderImageSource DBorderImageWidth DBorderInlineEnd DBorderInlineEndColor DBorderInlineEndStyle DBorderInlineEndWidth DBorderInlineStart DBorderInlineStartColor DBorderInlineStartStyle DBorderInlineStartWidth DBorderLeft DBorderLeftColor DBorderLeftStyle DBorderLeftWidth DBorderRadius DBorderRight DBorderRightColor DBorderRightStyle DBorderRightWidth DBorderSpacing DBorderStyle DBorderTop DBorderTopColor DBorderTopLeftRadius DBorderTopRightRadius DBorderTopStyle DBorderTopWidth DBorderWidth DBottom DBoxDecorationBreak DBoxShadow DBoxSizing DBreakAfter DBreakBefore DBreakInside DCaptionSide DCaretColor DClear DClip DClipPath DClipRule DColor DColorInterpolation DColorInterpolationFilters DColumnCount DColumnFill DColumnGap DColumnRule DColumnRuleColor DColumnRuleStyle DColumnRuleWidth DColumnSpan DColumnWidth DColumns DComposes DContainer DContainerName DContainerType DContent DCounterIncrement DCounterReset DCssFloat DCssText DCursor DDirection DDisplay DDominantBaseline DEmptyCells DFill DFillOpacity DFillRule DFilter DFlex DFlexBasis DFlexDirection DFlexFlow DFlexGrow DFlexShrink DFlexWrap DFloat DFloodColor DFloodOpacity DFont DFontFamily DFontFeatureSettings DFontKerning DFontSize DFontSizeAdjust DFontStretch DFontStyle DFontSynthesis DFontVariant DFontVariantCaps DFontVariantEastAsian DFontVariantLigatures DFontVariantNumeric DFontVariantPosition DFontWeight DGap DGlyphOrientationVertical DGrid DGridArea DGridAutoColumns DGridAutoFlow DGridAutoRows DGridColumn DGridColumnEnd DGridColumnGap DGridColumnStart DGridGap DGridRow DGridRowEnd DGridRowGap DGridRowStart DGridTemplate DGridTemplateAreas DGridTemplateColumns DGridTemplateRows DHeight DHyphens DImageOrientation DImageRendering DInitialLetter DInlineSize DInset DJustifyContent DJustifyItems DJustifySelf DLeft DLetterSpacing DLightingColor DLineBreak DLineHeight DListStyle DListStyleImage DListStylePosition DListStyleType DMargin DMarginBlockEnd DMarginBlockStart DMarginBottom DMarginInlineEnd DMarginInlineStart DMarginLeft DMarginRight DMarginTop DMarker DMarkerEnd DMarkerMid DMarkerStart DMask DMaskComposite DMaskImage DMaskOrigin DMaskPosition DMaskRepeat DMaskSize DMaskType DMaxBlockSize DMaxHeight DMaxInlineSize DMaxWidth DMinBlockSize DMinHeight DMinInlineSize DMinWidth DObjectFit DObjectPosition DOpacity DOrder DOrphans DOutline DOutlineColor DOutlineOffset DOutlineStyle DOutlineWidth DOverflow DOverflowAnchor DOverflowWrap DOverflowX DOverflowY DOverscrollBehavior DOverscrollBehaviorBlock DOverscrollBehaviorInline DOverscrollBehaviorX DOverscrollBehaviorY DPadding DPaddingBlockEnd DPaddingBlockStart DPaddingBottom DPaddingInlineEnd DPaddingInlineStart DPaddingLeft DPaddingRight DPaddingTop DPageBreakAfter DPageBreakBefore DPageBreakInside DPaintOrder DPerspective DPerspectiveOrigin DPlaceContent DPlaceItems DPlaceSelf DPointerEvents DPosition DPrintColorAdjust DQuotes DResize DRight DRotate DRowGap DRubyAlign DRubyPosition DScale DScrollBehavior DShapeRendering DStopColor DStopOpacity DStroke DStrokeDasharray DStrokeDashoffset DStrokeLinecap DStrokeLinejoin DStrokeMiterlimit DStrokeOpacity DStrokeWidth DTabSize DTableLayout DTextAlign DTextAlignLast DTextAnchor DTextCombineUpright DTextDecoration DTextDecorationColor DTextDecorationLine DTextDecorationSkip DTextDecorationStyle DTextEmphasis DTextEmphasisColor DTextEmphasisPosition DTextEmphasisStyle DTextIndent DTextJustify DTextOrientation DTextOverflow DTextRendering DTextShadow DTextSizeAdjust DTextTransform DTextUnderlinePosition DTop DTouchAction DTransform DTransformBox DTransformOrigin DTransformStyle DTransition DTransitionDelay DTransitionDuration DTransitionProperty DTransitionTimingFunction DTranslate DUnicodeBidi DUserSelect DVerticalAlign DVisibility DWhiteSpace DWidows DWidth DWillChange DWordBreak DWordSpacing DWordWrap DWritingMode DZIndex DZoom )
type ImportedComposesName ¶ added in v0.18.19
type KeyframeBlock ¶ added in v0.7.8
type NamespacedName ¶
type NamespacedName struct { // If present, this is an identifier or "*" and is followed by a "|" character NamespacePrefix *NameToken // This is an identifier or "*" Name NameToken }
func (NamespacedName) Clone ¶ added in v0.18.14
func (n NamespacedName) Clone() NamespacedName
func (NamespacedName) Equal ¶ added in v0.11.19
func (a NamespacedName) Equal(b NamespacedName) bool
func (NamespacedName) Range ¶ added in v0.18.19
func (n NamespacedName) Range() logger.Range
type PseudoClassKind ¶ added in v0.18.14
type PseudoClassKind uint8
const ( PseudoClassGlobal PseudoClassKind = iota PseudoClassHas PseudoClassIs PseudoClassLocal PseudoClassNot PseudoClassNthChild PseudoClassNthLastChild PseudoClassNthLastOfType PseudoClassNthOfType PseudoClassWhere )
func (PseudoClassKind) HasNthIndex ¶ added in v0.18.17
func (kind PseudoClassKind) HasNthIndex() bool
func (PseudoClassKind) String ¶ added in v0.18.14
func (kind PseudoClassKind) String() string
type R ¶
type R interface { Equal(rule R, check *CrossFileEqualityCheck) bool Hash() (uint32, bool) }
type RAtCharset ¶ added in v0.7.7
type RAtCharset struct {
Encoding string
}
func (*RAtCharset) Equal ¶ added in v0.11.19
func (a *RAtCharset) Equal(rule R, check *CrossFileEqualityCheck) bool
func (*RAtCharset) Hash ¶ added in v0.11.19
func (r *RAtCharset) Hash() (uint32, bool)
type RAtImport ¶
type RAtKeyframes ¶ added in v0.7.8
type RAtKeyframes struct { AtToken string Name ast.LocRef Blocks []KeyframeBlock CloseBraceLoc logger.Loc }
func (*RAtKeyframes) Equal ¶ added in v0.11.19
func (a *RAtKeyframes) Equal(rule R, check *CrossFileEqualityCheck) bool
func (*RAtKeyframes) Hash ¶ added in v0.11.19
func (r *RAtKeyframes) Hash() (uint32, bool)
type RAtLayer ¶ added in v0.14.23
type RBadDeclaration ¶
type RBadDeclaration struct {
Tokens []Token
}
func (*RBadDeclaration) Equal ¶ added in v0.11.19
func (a *RBadDeclaration) Equal(rule R, check *CrossFileEqualityCheck) bool
func (*RBadDeclaration) Hash ¶ added in v0.11.19
func (r *RBadDeclaration) Hash() (uint32, bool)
type RComment ¶ added in v0.13.10
type RComment struct {
Text string
}
type RDeclaration ¶
type RDeclaration struct { KeyText string Value []Token KeyRange logger.Range Key D // Compare using this instead of "Key" for speed Important bool }
func (*RDeclaration) Equal ¶ added in v0.11.19
func (a *RDeclaration) Equal(rule R, check *CrossFileEqualityCheck) bool
func (*RDeclaration) Hash ¶ added in v0.11.19
func (r *RDeclaration) Hash() (uint32, bool)
type RKnownAt ¶
type RQualified ¶
func (*RQualified) Equal ¶ added in v0.11.19
func (a *RQualified) Equal(rule R, check *CrossFileEqualityCheck) bool
func (*RQualified) Hash ¶ added in v0.11.19
func (r *RQualified) Hash() (uint32, bool)
type RSelector ¶
type RSelector struct { Selectors []ComplexSelector Rules []Rule CloseBraceLoc logger.Loc }
type RUnknownAt ¶
func (*RUnknownAt) Equal ¶ added in v0.11.19
func (a *RUnknownAt) Equal(rule R, check *CrossFileEqualityCheck) bool
func (*RUnknownAt) Hash ¶ added in v0.11.19
func (r *RUnknownAt) Hash() (uint32, bool)
type SS ¶
type SS interface { Equal(ss SS, check *CrossFileEqualityCheck) bool Hash() uint32 Clone() SS }
type SSAttribute ¶
type SSAttribute struct { MatcherOp string // Either "" or one of: "=" "~=" "|=" "^=" "$=" "*=" MatcherValue string NamespacedName NamespacedName MatcherModifier byte // Either 0 or one of: 'i' 'I' 's' 'S' }
func (*SSAttribute) Clone ¶ added in v0.18.14
func (ss *SSAttribute) Clone() SS
func (*SSAttribute) Equal ¶ added in v0.11.19
func (a *SSAttribute) Equal(ss SS, check *CrossFileEqualityCheck) bool
func (*SSAttribute) Hash ¶ added in v0.11.19
func (ss *SSAttribute) Hash() uint32
type SSClass ¶
type SSHash ¶
type SSPseudoClass ¶
type SSPseudoClass struct { Name string Args []Token IsElement bool // If true, this is prefixed by "::" instead of ":" }
func (*SSPseudoClass) Clone ¶ added in v0.18.14
func (ss *SSPseudoClass) Clone() SS
func (*SSPseudoClass) Equal ¶ added in v0.11.19
func (a *SSPseudoClass) Equal(ss SS, check *CrossFileEqualityCheck) bool
func (*SSPseudoClass) Hash ¶ added in v0.11.19
func (ss *SSPseudoClass) Hash() uint32
type SSPseudoClassWithSelectorList ¶ added in v0.18.14
type SSPseudoClassWithSelectorList struct { Selectors []ComplexSelector Index NthIndex Kind PseudoClassKind }
See https://drafts.csswg.org/selectors/#grouping
func (*SSPseudoClassWithSelectorList) Clone ¶ added in v0.18.14
func (ss *SSPseudoClassWithSelectorList) Clone() SS
func (*SSPseudoClassWithSelectorList) Equal ¶ added in v0.18.14
func (a *SSPseudoClassWithSelectorList) Equal(ss SS, check *CrossFileEqualityCheck) bool
func (*SSPseudoClassWithSelectorList) Hash ¶ added in v0.18.14
func (ss *SSPseudoClassWithSelectorList) Hash() uint32
type SubclassSelector ¶ added in v0.18.14
type Token ¶ added in v0.7.8
type Token struct { // Contains the child tokens for component values that are simple blocks. // These are either "(", "{", "[", or function tokens. The closing token is // implicit and is not stored. Children *[]Token // 8 bytes // This is the raw contents of the token most of the time. However, it // contains the decoded string contents for "TString" tokens. Text string // 16 bytes // The source location at the start of the token Loc logger.Loc // 4 bytes // URL tokens have an associated import record at the top-level of the AST. // This index points to that import record. // // Symbol tokens have an associated symbol. This index is the "InnerIndex" // of the "Ref" for this symbol. The "SourceIndex" for the "Ref" is just // the source index of the file for this AST. PayloadIndex uint32 // 4 bytes // The division between the number and the unit for "TDimension" tokens. UnitOffset uint16 // 2 bytes // This will never be "TWhitespace" because whitespace isn't stored as a // token directly. Instead it is stored in "HasWhitespaceAfter" on the // previous token. This is to make it easier to pattern-match against // tokens when handling CSS rules, since whitespace almost always doesn't // matter. That way you can pattern match against e.g. "rgb(r, g, b)" and // not have to handle all possible combinations of embedded whitespace // tokens. // // There is one exception to this: when in verbatim whitespace mode and // the token list is non-empty and is only whitespace tokens. In that case // a single whitespace token is emitted. This is because otherwise there // would be no tokens to attach the whitespace before/after flags to. Kind css_lexer.T // 1 byte // These flags indicate the presence of a "TWhitespace" token before or after // this token. There should be whitespace printed between two tokens if either // token indicates that there should be whitespace. Note that whitespace may // be altered by processing in certain situations (e.g. minification). Whitespace WhitespaceFlags // 1 byte }
We create a lot of tokens, so make sure this layout is memory-efficient. The layout here isn't optimal because it biases for convenience (e.g. "string" could be shorter) but at least the ordering of fields was deliberately chosen to minimize size.
func CloneTokensWithImportRecords ¶ added in v0.14.0
func CloneTokensWithImportRecords( tokensIn []Token, importRecordsIn []ast.ImportRecord, tokensOut []Token, importRecordsOut []ast.ImportRecord, ) ([]Token, []ast.ImportRecord)
func CloneTokensWithoutImportRecords ¶ added in v0.18.14
func (Token) DimensionUnit ¶ added in v0.7.9
func (Token) DimensionUnitIsSafeLength ¶ added in v0.13.15
func (Token) DimensionValue ¶ added in v0.7.9
func (Token) Equal ¶ added in v0.11.19
func (a Token) Equal(b Token, check *CrossFileEqualityCheck) bool
func (Token) EqualIgnoringWhitespace ¶ added in v0.11.19
func (Token) FractionForPercentage ¶ added in v0.11.19
func (Token) PercentageValue ¶ added in v0.11.19
func (*Token) TurnLengthIntoNumberIfZero ¶ added in v0.11.19
https://drafts.csswg.org/css-values-3/#lengths For zero lengths the unit identifier is optional (i.e. can be syntactically represented as the <number> 0).
func (*Token) TurnLengthOrPercentageIntoNumberIfZero ¶ added in v0.12.10
type WhitespaceFlags ¶ added in v0.8.43
type WhitespaceFlags uint8
const ( WhitespaceBefore WhitespaceFlags = 1 << iota WhitespaceAfter )
Click to show internal directories.
Click to hide internal directories.