annotate vendor/github.com/yosssi/gcss/at_rule.go @ 81:6ce24b93c8d0 draft

I keep inserting random bugs Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author yakumo.izuru
date Tue, 12 Dec 2023 14:27:29 +0000
parents 787b5ee0289d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
66
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
1 package gcss
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
2
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
3 import (
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
4 "bytes"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
5 "io"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
6 "strings"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
7 )
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
8
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
9 // atRule represents an at-rule of CSS.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
10 type atRule struct {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
11 elementBase
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
12 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
13
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
14 // WriteTo writes the at-rule to the writer.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
15 func (ar *atRule) WriteTo(w io.Writer) (int64, error) {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
16 bf := new(bytes.Buffer)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
17
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
18 bf.WriteString(strings.TrimSpace(ar.ln.s))
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
19
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
20 if len(ar.sels) == 0 && len(ar.decs) == 0 && !ar.hasMixinDecs() && !ar.hasMixinSels() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
21 bf.WriteString(semicolon)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
22 n, err := w.Write(bf.Bytes())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
23 return int64(n), err
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
24 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
25
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
26 bf.WriteString(openBrace)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
27
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
28 // Writing to the bytes.Buffer never returns an error.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
29 ar.writeDecsTo(bf, nil)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
30
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
31 for _, sel := range ar.sels {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
32 // Writing to the bytes.Buffer never returns an error.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
33 sel.WriteTo(bf)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
34 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
35
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
36 // Write the mixin's selectors.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
37 for _, mi := range ar.mixins {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
38 sels, prms := mi.selsParams()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
39
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
40 for _, sl := range sels {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
41 sl.parent = ar
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
42 // Writing to the bytes.Buffer never returns an error.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
43 sl.writeTo(bf, prms)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
44 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
45 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
46
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
47 bf.WriteString(closeBrace)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
48
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
49 n, err := w.Write(bf.Bytes())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
50
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
51 return int64(n), err
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
52 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
53
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
54 // newAtRule creates and returns a at-rule.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
55 func newAtRule(ln *line, parent element) *atRule {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
56 return &atRule{
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
57 elementBase: newElementBase(ln, parent),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
58 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
59 }