minicss 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,76 +3,34 @@
3
3
  module MiniCSS
4
4
  module CSS
5
5
  module StringRefinements
6
- refine String do
7
- def eof? = false
8
- def digit? = between?("0", "9")
9
- def hex? = digit? || between?("a", "f") || between?("A", "F")
10
- def uppercase? = between?("A", "Z")
11
- def lowercase? = between?("a", "z")
12
- def letter? = uppercase? || lowercase?
6
+ refine Integer do
7
+ # EOF sentinel check
8
+ def eof? = (self == -1)
9
+
10
+ # ASCII digit / hex
11
+ def digit? = (0x30..0x39).cover?(self)
12
+ def hex? = digit? || (0x61..0x66).cover?(self) || (0x41..0x46).cover?(self)
13
+ def uppercase? = (0x41..0x5A).cover?(self)
14
+ def lowercase? = (0x61..0x7A).cover?(self)
15
+ def letter? = uppercase? || lowercase?
13
16
  def one_of?(*what) = what.include?(self)
14
17
 
15
- def non_ascii_ident?
16
- self == "\u00B7" \
17
- || between?("\u00C0", "\u00D6") \
18
- || between?("\u00D8", "\u00F6") \
19
- || between?("\u00F8", "\u037D") \
20
- || between?("\u037F", "\u1FFF") \
21
- || self == "\u200C" \
22
- || self == "\u200D" \
23
- || self == "\u203F" \
24
- || self == "\u2040" \
25
- || between?("\u2070", "\u218F") \
26
- || between?("\u2C00", "\u2FEF") \
27
- || between?("\u3001", "\uD7FF") \
28
- || between?("\uF900", "\uFDCF") \
29
- || between?("\uFDF0", "\uFFFD") \
30
- || self >= "\u{10000}"
31
- end
32
-
33
- def uni = unpack1("U")
34
- def ident_start? = letter? || uni >= 0x80 || self == "_"
35
- def ident_point? = ident_start? || digit? || uni == 0x2D
18
+ # Ident start/point rules
19
+ def ident_start? = letter? || self >= 0x80 || self == 0x5F
20
+ def ident_point? = ident_start? || digit? || self == 0x2D
36
21
 
22
+ # Non-printable checks
37
23
  def non_printable?
38
- between?("\u0000", "\u0008") \
39
- || self == "\u000B" \
40
- || between?("\u000B", "\u001F") \
41
- || self == "\u007F"
24
+ (0x0000..0x0008).cover?(self) ||
25
+ self == 0x000B ||
26
+ (0x000C..0x001F).cover?(self) ||
27
+ self == 0x007F
42
28
  end
43
29
 
44
- def newline? = (self == "\n")
45
- def whitespace? = newline? || self == "\u0009" || self == "\u0020"
30
+ # Whitespace / newline
31
+ def newline? = (self == 0x0A)
32
+ def whitespace? = newline? || self == 0x09 || self == 0x20
46
33
  end
47
-
48
- refine Integer do
49
- def surrogate_leading? = between?(0xD800, 0xDBFF)
50
- def surrogate_trailing? = between?(0xDC00, 0xDFFF)
51
-
52
- def surrogate? = surrogate_leading? || surrogate_trailing?
53
- def overflows_maximum_codepoint? = self > 0x10FFFF
54
- end
55
- end
56
-
57
- class EOF
58
- def self.instance
59
- @instance ||= new
60
- end
61
-
62
- def eof? = true
63
- def digit? = false
64
- def hex? = false
65
- def uppercase? = false
66
- def lowercase? = false
67
- def letter? = false
68
- def one_of?(*) = false
69
- def non_ascii_ident? = false
70
- def uni = 0
71
- def ident_start? = false
72
- def ident_point? = false
73
- def non_printable? = false
74
- def newline? = false
75
- def whitespace? = false
76
34
  end
77
35
  end
78
36
  end
@@ -1,56 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module MiniCSS
4
- module CSS
5
- class TokenStream
6
- using StringRefinements
7
-
8
- def initialize(tokens)
9
- @tokens = tokens
10
- @idx = 0
11
- @marks = []
12
- end
13
-
14
- def peek
15
- token = @tokens[@idx]
16
- return Token::EOF unless token
17
-
18
- token
19
- end
20
-
21
- def peek1
22
- token = @tokens[@idx + 1]
23
- return Token::EOF unless token
24
-
25
- token
26
- end
27
-
28
- def empty? = peek.eof?
29
-
30
- def consume
31
- peek.tap { @idx += 1 }
32
- end
33
-
34
- def discard
35
- @idx += 1 unless empty?
36
- nil
37
- end
38
-
39
- def mark
40
- @marks << @idx
41
- end
42
-
43
- def restore
44
- @idx = pop
45
- end
46
-
47
- def pop
48
- @marks.pop
49
- end
50
-
51
- def discard_whitespace
52
- discard while peek.kind == :whitespace
53
- end
54
- end
55
- end
56
- end
3
+ require_relative "../../minicss_token_stream"