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