diff vendor/github.com/yosssi/gcss/mixin_invocation.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/mixin_invocation.go	Sun Jul 23 13:18:53 2023 +0000
@@ -0,0 +1,72 @@
+package gcss
+
+import "io"
+
+// mixinInvocation represents a mixin invocation.
+type mixinInvocation struct {
+	elementBase
+	name        string
+	paramValues []string
+}
+
+// WriteTo writes the selector to the writer.
+func (mi *mixinInvocation) WriteTo(w io.Writer) (int64, error) {
+	return 0, nil
+}
+
+// decsParams returns the mixin's declarations and params.
+func (mi *mixinInvocation) decsParams() ([]*declaration, map[string]string) {
+	md, ok := mi.Context().mixins[mi.name]
+
+	if !ok {
+		return nil, nil
+	}
+
+	params := make(map[string]string)
+
+	l := len(mi.paramValues)
+
+	for i, name := range md.paramNames {
+		if i < l {
+			params[name] = mi.paramValues[i]
+		}
+	}
+
+	return md.decs, params
+}
+
+// selsParams returns the mixin's selectors and params.
+func (mi *mixinInvocation) selsParams() ([]*selector, map[string]string) {
+	md, ok := mi.Context().mixins[mi.name]
+
+	if !ok {
+		return nil, nil
+	}
+
+	params := make(map[string]string)
+
+	l := len(mi.paramValues)
+
+	for i, name := range md.paramNames {
+		if i < l {
+			params[name] = mi.paramValues[i]
+		}
+	}
+
+	return md.sels, params
+}
+
+// newMixinInvocation creates and returns a mixin invocation.
+func newMixinInvocation(ln *line, parent element) (*mixinInvocation, error) {
+	name, paramValues, err := mixinNP(ln, false)
+
+	if err != nil {
+		return nil, err
+	}
+
+	return &mixinInvocation{
+		elementBase: newElementBase(ln, parent),
+		name:        name,
+		paramValues: paramValues,
+	}, nil
+}