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.
@@ -1,77 +1,75 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MiniCSS
4
- module Serializer
5
- module_function
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.map { serialize(it) }.flatten.compact.join
15
+ value.each { serialize(it) }
11
16
  when String
12
- value
17
+ @str << value
13
18
  when AST::Rule
14
- [
15
- value.valid_selector? ? Sel.stringify(value.selector) : value.raw_selector, "{",
16
- value.decls.map { serialize(it) },
17
- value.child_rules.map { serialize(it) },
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
- "#{value.name}:",
23
- value.value.map { serialize(it) },
24
- value.important? ? "!important" : nil,
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
- value.sign,
30
- (value.type == :integer ? value.value.to_i : value.value.to_f).to_s,
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
- value.sign,
36
- (value.type == :integer ? value.value.to_i : value.value.to_f).to_s,
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
- value.sign,
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
- val = [
46
- "@",
47
- value.name,
48
- value.prelude && !value.prelude.nil? && !value.prelude.empty? ? " #{value.prelude.map { serialize(it) }.flatten.compact.join}" : nil
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
- val << ";"
47
+ @str << ";"
52
48
  else
53
- val.append("{")
54
- val.append(*value.child_rules.map { serialize(it) })
55
- val.append("}")
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(#{value.value})"
54
+ @str << "url(" << value.value << ")"
60
55
  when AST::Function
61
- [value.name, "(",
62
- value.value.map { serialize(it) },
63
- ")"].join
56
+ @str << value.name << "("
57
+ value.value.each { serialize(it) }
58
+ @str << ")"
64
59
  when AST::Block
65
- [
66
- value.left_token,
67
- value.value.map { serialize(it) },
68
- value.right_token
69
- ].flatten.compact.join
60
+ @str << value.left_token
61
+ value.value.each { serialize(it) }
62
+ @str << value.right_token
70
63
  when AST::StringToken
71
- [value.quoting, value.value, value.quoting].flatten.compact.join
64
+ @str << value.quoting << (value.value || "") << value.quoting
72
65
  else
73
66
  raise "Unexpected element in serialization pipeline: #{value.class} #{value.inspect}"
74
67
  end
75
68
  end
69
+
70
+ def css
71
+ serialize(@root)
72
+ @str
73
+ end
76
74
  end
77
75
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MiniCSS
4
- VERSION = "0.1.5"
4
+ VERSION = "0.1.7"
5
5
  end
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.5
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: 2025-10-02 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies: []
12
- description: MiniCSS is a pure-Ruby CSS parsing library
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.2
97
+ rubygems_version: 3.6.9
85
98
  specification_version: 4
86
- summary: MiniCSS is a pure-Ruby CSS parsing library
99
+ summary: MiniCSS is a CSS parsing library
87
100
  test_files: []