comparison vendor/github.com/yosssi/gcss/element.go @ 66:787b5ee0289d draft

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