annotate vendor/github.com/yosssi/gcss/element.go @ 67:4edfa07d5fe0 draft

bfchroma turned out to be a hassle Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author yakumo.izuru
date Thu, 07 Sep 2023 16:52:43 +0000
parents 787b5ee0289d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
66
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
1 package gcss
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
2
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
3 import "io"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
4
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
5 // element represents an element of GCSS source codes.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
6 type element interface {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
7 io.WriterTo
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
8 AppendChild(child element)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
9 Base() *elementBase
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
10 SetContext(*context)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
11 Context() *context
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
12 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
13
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
14 // newElement creates and returns an element.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
15 func newElement(ln *line, parent element) (element, error) {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
16 var e element
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
17 var err error
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
18
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
19 switch {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
20 case ln.isComment():
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
21 e = newComment(ln, parent)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
22 case ln.isAtRule():
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
23 e = newAtRule(ln, parent)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
24 case ln.isMixinDeclaration():
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
25 // error can be ignored becuase the line is checked beforehand
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
26 // by calling `ln.isMixinDeclaration()`.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
27 e, _ = newMixinDeclaration(ln, parent)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
28 case ln.isMixinInvocation():
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
29 // error can be ignored becuase the line is checked beforehand
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
30 // by calling `ln.isMixinInvocation()`.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
31 e, _ = newMixinInvocation(ln, parent)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
32 case ln.isVariable():
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
33 e, err = newVariable(ln, parent)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
34 case ln.isDeclaration():
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
35 e, err = newDeclaration(ln, parent)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
36 default:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
37 e, err = newSelector(ln, parent)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
38 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
39
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
40 return e, err
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
41 }