1 |
yakumo_izuru |
1.1 |
package gcss |
2 |
|
|
|
3 |
|
|
import "io" |
4 |
|
|
|
5 |
|
|
// mixinInvocation represents a mixin invocation. |
6 |
|
|
type mixinInvocation struct { |
7 |
|
|
elementBase |
8 |
|
|
name string |
9 |
|
|
paramValues []string |
10 |
|
|
} |
11 |
|
|
|
12 |
|
|
// WriteTo writes the selector to the writer. |
13 |
|
|
func (mi *mixinInvocation) WriteTo(w io.Writer) (int64, error) { |
14 |
|
|
return 0, nil |
15 |
|
|
} |
16 |
|
|
|
17 |
|
|
// decsParams returns the mixin's declarations and params. |
18 |
|
|
func (mi *mixinInvocation) decsParams() ([]*declaration, map[string]string) { |
19 |
|
|
md, ok := mi.Context().mixins[mi.name] |
20 |
|
|
|
21 |
|
|
if !ok { |
22 |
|
|
return nil, nil |
23 |
|
|
} |
24 |
|
|
|
25 |
|
|
params := make(map[string]string) |
26 |
|
|
|
27 |
|
|
l := len(mi.paramValues) |
28 |
|
|
|
29 |
|
|
for i, name := range md.paramNames { |
30 |
|
|
if i < l { |
31 |
|
|
params[name] = mi.paramValues[i] |
32 |
|
|
} |
33 |
|
|
} |
34 |
|
|
|
35 |
|
|
return md.decs, params |
36 |
|
|
} |
37 |
|
|
|
38 |
|
|
// selsParams returns the mixin's selectors and params. |
39 |
|
|
func (mi *mixinInvocation) selsParams() ([]*selector, map[string]string) { |
40 |
|
|
md, ok := mi.Context().mixins[mi.name] |
41 |
|
|
|
42 |
|
|
if !ok { |
43 |
|
|
return nil, nil |
44 |
|
|
} |
45 |
|
|
|
46 |
|
|
params := make(map[string]string) |
47 |
|
|
|
48 |
|
|
l := len(mi.paramValues) |
49 |
|
|
|
50 |
|
|
for i, name := range md.paramNames { |
51 |
|
|
if i < l { |
52 |
|
|
params[name] = mi.paramValues[i] |
53 |
|
|
} |
54 |
|
|
} |
55 |
|
|
|
56 |
|
|
return md.sels, params |
57 |
|
|
} |
58 |
|
|
|
59 |
|
|
// newMixinInvocation creates and returns a mixin invocation. |
60 |
|
|
func newMixinInvocation(ln *line, parent element) (*mixinInvocation, error) { |
61 |
|
|
name, paramValues, err := mixinNP(ln, false) |
62 |
|
|
|
63 |
|
|
if err != nil { |
64 |
|
|
return nil, err |
65 |
|
|
} |
66 |
|
|
|
67 |
|
|
return &mixinInvocation{ |
68 |
|
|
elementBase: newElementBase(ln, parent), |
69 |
|
|
name: name, |
70 |
|
|
paramValues: paramValues, |
71 |
|
|
}, nil |
72 |
|
|
} |