diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/github.com/yosssi/gcss/element.go	Sun Jul 23 13:18:53 2023 +0000
@@ -0,0 +1,41 @@
+package gcss
+
+import "io"
+
+// element represents an element of GCSS source codes.
+type element interface {
+	io.WriterTo
+	AppendChild(child element)
+	Base() *elementBase
+	SetContext(*context)
+	Context() *context
+}
+
+// newElement creates and returns an element.
+func newElement(ln *line, parent element) (element, error) {
+	var e element
+	var err error
+
+	switch {
+	case ln.isComment():
+		e = newComment(ln, parent)
+	case ln.isAtRule():
+		e = newAtRule(ln, parent)
+	case ln.isMixinDeclaration():
+		// error can be ignored becuase the line is checked beforehand
+		// by calling `ln.isMixinDeclaration()`.
+		e, _ = newMixinDeclaration(ln, parent)
+	case ln.isMixinInvocation():
+		// error can be ignored becuase the line is checked beforehand
+		// by calling `ln.isMixinInvocation()`.
+		e, _ = newMixinInvocation(ln, parent)
+	case ln.isVariable():
+		e, err = newVariable(ln, parent)
+	case ln.isDeclaration():
+		e, err = newDeclaration(ln, parent)
+	default:
+		e, err = newSelector(ln, parent)
+	}
+
+	return e, err
+}