minicss 0.1.6 → 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.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/.ruby-version +1 -0
- data/README.md +124 -5
- data/Rakefile +25 -1
- data/benchmarks/bootstrap-4.css +8975 -0
- data/benchmarks/bootstrap-4.min.css +7 -0
- data/benchmarks/ruby_prof.rb +41 -0
- data/benchmarks/selectors.rb +41 -0
- data/benchmarks/stylesheet.rb +75 -0
- data/ext/minicss_scanner/extconf.rb +7 -0
- data/ext/minicss_scanner/minicss_scanner.c +1436 -0
- data/ext/minicss_scanner/minicss_scanner.h +132 -0
- data/ext/minicss_token_stream/extconf.rb +5 -0
- data/ext/minicss_token_stream/minicss_token_stream.c +195 -0
- data/lib/minicss/css/parser.rb +50 -54
- data/lib/minicss/css/refinements.rb +21 -63
- data/lib/minicss/css/token_stream.rb +1 -54
- data/lib/minicss/css/tokenizer.rb +13 -552
- data/lib/minicss/css.rb +1 -1
- data/lib/minicss/sel.rb +10 -8
- data/lib/minicss/serializer.rb +48 -52
- data/lib/minicss/version.rb +1 -1
- metadata +19 -6
data/lib/minicss/serializer.rb
CHANGED
|
@@ -1,79 +1,75 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module MiniCSS
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
class Serializer
|
|
5
|
+
def self.serialize(root) = new(root).css
|
|
6
|
+
|
|
7
|
+
def initialize(root)
|
|
8
|
+
@str = +""
|
|
9
|
+
@root = root
|
|
10
|
+
end
|
|
6
11
|
|
|
7
12
|
def serialize(value)
|
|
8
13
|
case value
|
|
9
14
|
when Array
|
|
10
|
-
value.
|
|
15
|
+
value.each { serialize(it) }
|
|
11
16
|
when String
|
|
12
|
-
value
|
|
17
|
+
@str << value
|
|
13
18
|
when AST::Rule
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"}"
|
|
19
|
-
].flatten.compact.join
|
|
19
|
+
@str << (value.valid_selector? ? Sel.stringify(value.selector) : value.raw_selector) << "{"
|
|
20
|
+
value.decls.each { serialize(it) }
|
|
21
|
+
value.child_rules.each { serialize(it) }
|
|
22
|
+
@str << "}"
|
|
20
23
|
when AST::Decl
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
";"
|
|
26
|
-
].flatten.compact.join
|
|
24
|
+
@str << "#{value.name}:"
|
|
25
|
+
value.value.each { serialize(it) }
|
|
26
|
+
@str << (value.important? ? "!important" : "")
|
|
27
|
+
@str << ";"
|
|
27
28
|
when AST::Dimension
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
value.unit
|
|
32
|
-
].compact.join
|
|
29
|
+
@str << value.sign if value.sign
|
|
30
|
+
@str << (value.type == :integer ? value.value.to_i : value.value.to_f).to_s
|
|
31
|
+
@str << value.unit
|
|
33
32
|
when AST::Percentage
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"%"
|
|
38
|
-
].compact.join
|
|
33
|
+
@str << value.sign if value.sign
|
|
34
|
+
@str << (value.type == :integer ? value.value.to_i : value.value.to_f).to_s
|
|
35
|
+
@str << "%"
|
|
39
36
|
when AST::Number
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
(value.type == :integer ? value.value.to_i : value.value.to_f).to_s
|
|
43
|
-
].compact.join
|
|
37
|
+
@str << value.sign if value.sign
|
|
38
|
+
@str << (value.type == :integer ? value.value.to_i : value.value.to_f).to_s
|
|
44
39
|
when AST::AtRule
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
value.prelude
|
|
49
|
-
|
|
40
|
+
@str << "@" << value.name
|
|
41
|
+
if value.prelude && !value.prelude.nil? && !value.prelude.empty?
|
|
42
|
+
@str << " "
|
|
43
|
+
value.prelude.each { serialize(it) }
|
|
44
|
+
end
|
|
45
|
+
|
|
50
46
|
if value.child_rules.empty?
|
|
51
|
-
|
|
47
|
+
@str << ";"
|
|
52
48
|
else
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
@str << "{"
|
|
50
|
+
value.child_rules.each { serialize(it) }
|
|
51
|
+
@str << "}"
|
|
56
52
|
end
|
|
57
|
-
val.flatten.compact.join
|
|
58
53
|
when AST::URL
|
|
59
|
-
"url(
|
|
54
|
+
@str << "url(" << value.value << ")"
|
|
60
55
|
when AST::Function
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
")"
|
|
65
|
-
].join
|
|
56
|
+
@str << value.name << "("
|
|
57
|
+
value.value.each { serialize(it) }
|
|
58
|
+
@str << ")"
|
|
66
59
|
when AST::Block
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
value.right_token
|
|
71
|
-
].flatten.compact.join
|
|
60
|
+
@str << value.left_token
|
|
61
|
+
value.value.each { serialize(it) }
|
|
62
|
+
@str << value.right_token
|
|
72
63
|
when AST::StringToken
|
|
73
|
-
|
|
64
|
+
@str << value.quoting << (value.value || "") << value.quoting
|
|
74
65
|
else
|
|
75
66
|
raise "Unexpected element in serialization pipeline: #{value.class} #{value.inspect}"
|
|
76
67
|
end
|
|
77
68
|
end
|
|
69
|
+
|
|
70
|
+
def css
|
|
71
|
+
serialize(@root)
|
|
72
|
+
@str
|
|
73
|
+
end
|
|
78
74
|
end
|
|
79
75
|
end
|
data/lib/minicss/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,29 +1,42 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: minicss
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vito Sartori
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies: []
|
|
12
|
-
description: MiniCSS is a
|
|
12
|
+
description: MiniCSS is a CSS parsing library
|
|
13
13
|
email:
|
|
14
14
|
- hey@vito.io
|
|
15
15
|
executables: []
|
|
16
|
-
extensions:
|
|
16
|
+
extensions:
|
|
17
|
+
- ext/minicss_scanner/extconf.rb
|
|
18
|
+
- ext/minicss_token_stream/extconf.rb
|
|
17
19
|
extra_rdoc_files: []
|
|
18
20
|
files:
|
|
19
21
|
- ".editorconfig"
|
|
20
22
|
- ".rspec"
|
|
21
23
|
- ".rubocop.yml"
|
|
24
|
+
- ".ruby-version"
|
|
22
25
|
- ACKNOWLEDGMENTS.md
|
|
23
26
|
- CODE_OF_CONDUCT.md
|
|
24
27
|
- LICENSE
|
|
25
28
|
- README.md
|
|
26
29
|
- Rakefile
|
|
30
|
+
- benchmarks/bootstrap-4.css
|
|
31
|
+
- benchmarks/bootstrap-4.min.css
|
|
32
|
+
- benchmarks/ruby_prof.rb
|
|
33
|
+
- benchmarks/selectors.rb
|
|
34
|
+
- benchmarks/stylesheet.rb
|
|
35
|
+
- ext/minicss_scanner/extconf.rb
|
|
36
|
+
- ext/minicss_scanner/minicss_scanner.c
|
|
37
|
+
- ext/minicss_scanner/minicss_scanner.h
|
|
38
|
+
- ext/minicss_token_stream/extconf.rb
|
|
39
|
+
- ext/minicss_token_stream/minicss_token_stream.c
|
|
27
40
|
- lib/minicss.rb
|
|
28
41
|
- lib/minicss/ast.rb
|
|
29
42
|
- lib/minicss/ast/at_rule.rb
|
|
@@ -81,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
81
94
|
- !ruby/object:Gem::Version
|
|
82
95
|
version: '0'
|
|
83
96
|
requirements: []
|
|
84
|
-
rubygems_version: 3.6.
|
|
97
|
+
rubygems_version: 3.6.9
|
|
85
98
|
specification_version: 4
|
|
86
|
-
summary: MiniCSS is a
|
|
99
|
+
summary: MiniCSS is a CSS parsing library
|
|
87
100
|
test_files: []
|