Mercurial > yakumo_izuru > aya
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 } |
