comparison vendor/github.com/yosssi/gcss/at_rule.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 (
4 "bytes"
5 "io"
6 "strings"
7 )
8
9 // atRule represents an at-rule of CSS.
10 type atRule struct {
11 elementBase
12 }
13
14 // WriteTo writes the at-rule to the writer.
15 func (ar *atRule) WriteTo(w io.Writer) (int64, error) {
16 bf := new(bytes.Buffer)
17
18 bf.WriteString(strings.TrimSpace(ar.ln.s))
19
20 if len(ar.sels) == 0 && len(ar.decs) == 0 && !ar.hasMixinDecs() && !ar.hasMixinSels() {
21 bf.WriteString(semicolon)
22 n, err := w.Write(bf.Bytes())
23 return int64(n), err
24 }
25
26 bf.WriteString(openBrace)
27
28 // Writing to the bytes.Buffer never returns an error.
29 ar.writeDecsTo(bf, nil)
30
31 for _, sel := range ar.sels {
32 // Writing to the bytes.Buffer never returns an error.
33 sel.WriteTo(bf)
34 }
35
36 // Write the mixin's selectors.
37 for _, mi := range ar.mixins {
38 sels, prms := mi.selsParams()
39
40 for _, sl := range sels {
41 sl.parent = ar
42 // Writing to the bytes.Buffer never returns an error.
43 sl.writeTo(bf, prms)
44 }
45 }
46
47 bf.WriteString(closeBrace)
48
49 n, err := w.Write(bf.Bytes())
50
51 return int64(n), err
52 }
53
54 // newAtRule creates and returns a at-rule.
55 func newAtRule(ln *line, parent element) *atRule {
56 return &atRule{
57 elementBase: newElementBase(ln, parent),
58 }
59 }