html2slim2 0.3.0 → 0.3.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c6ff64c9a5fd086b72c5db5c43df4416f4408052a1bf5e35f920bf1a26df46c5
4
- data.tar.gz: 92df93ab18679e51386f70c9045fd168b5507094a070e5a5e219dfbb60795dbe
3
+ metadata.gz: a545d55f7ec6dd7f97e609446fa01d6da140a689d51b6be921b4c15c8b6667f4
4
+ data.tar.gz: 6e5e6b61b863f62c1a88f97e9ae588f8bc766159fcff347eae98a44157a9892b
5
5
  SHA512:
6
- metadata.gz: 2f56c1abc267eb88573528a0546bf34265da07578923854fc1f82ecbe92a4af262ae6a88059d8d1680d1fda5a3fa19d96245a15a9e5082958679e88d04c373c7
7
- data.tar.gz: bd67aa82f0336fa656c93ac391db4c1b6529ed1b5e288c5295c8601c9ef3a501a10f51b4f5a93b7f9608a03a17566fe100b0468712b7b38b1a212bb2df23738b
6
+ metadata.gz: 196406fc4f69748e6bea1e0743b3a5171dd90e015d7d13026b8466999d55f0ad37d3d2279801d49df7a4a30f81be7107118b3c76d3f4a2c3690066bc4c2327f3
7
+ data.tar.gz: d1344a4283b17bfdd8b1dd5a6844e4769b731a63aa5ed3faed6e8c587fb89a92748b5e65a51ba9368f784846f2e7ab2aa52f64cddb6d2f4fa200d24d0e27e526
data/bin/erb2slim CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  $:.unshift File.dirname(__FILE__) + '/../lib'
4
- require 'html2slim/command'
4
+ require 'html2slim2/command'
5
5
 
6
- cmd = HTML2Slim::ERBCommand.new(ARGV)
6
+ cmd = HTML2Slim2::ERBCommand.new(ARGV)
7
7
  cmd.run
data/bin/html2slim CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  $:.unshift File.dirname(__FILE__) + '/../lib'
4
- require 'html2slim/command'
4
+ require 'html2slim2/command'
5
5
 
6
- cmd = HTML2Slim::HTMLCommand.new(ARGV)
6
+ cmd = HTML2Slim2::HTMLCommand.new(ARGV)
7
7
  cmd.run
@@ -1,9 +1,8 @@
1
1
  require 'optparse'
2
- require 'html2slim'
2
+ require 'html2slim2'
3
3
 
4
- module HTML2Slim
4
+ module HTML2Slim2
5
5
  class Command
6
-
7
6
  def initialize(args)
8
7
  @args = args
9
8
  @options = {}
@@ -85,7 +84,7 @@ module HTML2Slim
85
84
  else
86
85
  slim_file = destination || slim_file
87
86
  end
88
-
87
+
89
88
  fail(ArgumentError, "Source and destination files can't be the same.") if @options[:input] != '-' && file == slim_file
90
89
 
91
90
  in_file = if @options[:input] == "-"
@@ -95,7 +94,7 @@ module HTML2Slim
95
94
  end
96
95
 
97
96
  @options[:output] = slim_file && slim_file != '-' ? File.open(slim_file, 'w') : $stdout
98
- @options[:output].puts HTML2Slim.convert!(in_file, format)
97
+ @options[:output].puts HTML2Slim2.convert!(in_file, format)
99
98
  @options[:output].close
100
99
 
101
100
  File.delete(file) if @options[:delete]
@@ -1,6 +1,6 @@
1
- require_relative 'nokogiri_monkeypatches'
1
+ require_relative 'nokogiri_monkey_patches'
2
2
 
3
- module HTML2Slim
3
+ module HTML2Slim2
4
4
  class Converter
5
5
  def initialize(html)
6
6
  nokogiri = html[..1] == '<!' ? Nokogiri.parse(html) : Nokogiri::HTML.fragment(html)
@@ -51,7 +51,7 @@ class Nokogiri::XML::Element
51
51
  end
52
52
 
53
53
  def to_slim(lvl = 0)
54
- if children.count.positive?
54
+ if children.any?
55
55
  %(#{slim(lvl)}\n#{children.filter_map { |c| c.to_slim(lvl + 1) }.join("\n")})
56
56
  else
57
57
  slim(lvl)
@@ -60,8 +60,8 @@ class Nokogiri::XML::Element
60
60
 
61
61
  private
62
62
 
63
- def slim_ruby_code(r)
64
- (code.strip[0] == '=' ? '' : '- ') + code.strip.gsub('\\n', "\n#{r}- ")
63
+ def slim_ruby_code(indent)
64
+ (code.strip[0] == '=' ? '' : '- ') + code.strip.gsub('\\n', "\n#{indent}- ")
65
65
  end
66
66
 
67
67
  def code
@@ -86,15 +86,15 @@ class Nokogiri::XML::Element
86
86
  has_attributes? ? "[#{attributes_as_html.to_s.strip}]" : ''
87
87
  end
88
88
 
89
- def has_attributes? # rubocop:disable Naming/PredicateName
89
+ def has_attributes? # rubocop:disable Naming/PredicatePrefix
90
90
  attributes.to_hash.any?
91
91
  end
92
92
 
93
- def has_id? # rubocop:disable Naming/PredicateName
93
+ def has_id? # rubocop:disable Naming/PredicatePrefix
94
94
  has_attribute?('id') && !(BLANK_RE === self['id'])
95
95
  end
96
96
 
97
- def has_class? # rubocop:disable Naming/PredicateName
97
+ def has_class? # rubocop:disable Naming/PredicatePrefix
98
98
  has_attribute?('class') && !(BLANK_RE === self['class'])
99
99
  end
100
100
 
@@ -111,15 +111,15 @@ class Nokogiri::XML::Element
111
111
  end
112
112
 
113
113
  def attributes_as_html
114
- attributes.map do |aname, aval|
115
- " #{aname}" + (aval ? "=#{html_quote aval.to_s}" : '')
114
+ attributes.map do |attr_name, attr_val|
115
+ " #{attr_name}" + (attr_val ? "=#{html_quote attr_val.to_s}" : '')
116
116
  end.join
117
117
  end
118
118
  end
119
119
 
120
120
  class Nokogiri::XML::DocumentFragment
121
121
  def to_slim
122
- if children.count.positive?
122
+ if children.any?
123
123
  children.filter_map(&:to_slim).join("\n")
124
124
  else
125
125
  ''
@@ -129,10 +129,26 @@ end
129
129
 
130
130
  class Nokogiri::XML::Document
131
131
  def to_slim
132
- if children.count.positive?
132
+ if children.any?
133
133
  children.filter_map(&:to_slim).join("\n")
134
134
  else
135
135
  ''
136
136
  end
137
137
  end
138
138
  end
139
+
140
+ class Nokogiri::XML::Comment
141
+ def to_slim(lvl = 0)
142
+ r = ' ' * lvl
143
+
144
+ # Render as a Slim comment, multiline if necessary
145
+ str = content.strip
146
+ return nil if str.empty?
147
+
148
+ if str.include?("\n")
149
+ "#{r}/\n#{r} " + str.gsub("\n", "\n#{r} ")
150
+ else
151
+ "#{r}/ #{str}"
152
+ end
153
+ end
154
+ end
@@ -0,0 +1,3 @@
1
+ module HTML2Slim2
2
+ VERSION = '0.3.1'
3
+ end
data/lib/html2slim2.rb ADDED
@@ -0,0 +1,12 @@
1
+ require_relative 'html2slim2/version'
2
+ require_relative 'html2slim2/converter'
3
+
4
+ module HTML2Slim2
5
+ def self.convert!(input, format = :html)
6
+ if format.to_s == "html"
7
+ HTMLConverter.new(input)
8
+ else
9
+ ERBConverter.new(input)
10
+ end
11
+ end
12
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: html2slim2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - sanadan
8
8
  - Maiz Lulkin
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-05-08 00:00:00.000000000 Z
11
+ date: 2026-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -24,62 +24,6 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: minitest
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rubocop-rails-omakase
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: slim
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
27
  description: Convert HTML to Slim templates. Because HTML sux and Slim rules. That's
84
28
  why.
85
29
  email:
@@ -95,14 +39,17 @@ files:
95
39
  - README.md
96
40
  - bin/erb2slim
97
41
  - bin/html2slim
98
- - lib/html2slim.rb
99
- - lib/html2slim/command.rb
100
- - lib/html2slim/converter.rb
101
- - lib/html2slim/nokogiri_monkeypatches.rb
102
- - lib/html2slim/version.rb
103
- homepage: https://github.com/sanadan/html2slim
104
- licenses: []
105
- metadata: {}
42
+ - lib/html2slim2.rb
43
+ - lib/html2slim2/command.rb
44
+ - lib/html2slim2/converter.rb
45
+ - lib/html2slim2/nokogiri_monkey_patches.rb
46
+ - lib/html2slim2/version.rb
47
+ homepage: https://github.com/sanadan/html2slim2
48
+ licenses:
49
+ - MIT
50
+ metadata:
51
+ homepage_uri: https://github.com/sanadan/html2slim2
52
+ rubygems_mfa_required: 'true'
106
53
  rdoc_options:
107
54
  - "--charset=UTF-8"
108
55
  require_paths:
@@ -111,14 +58,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
111
58
  requirements:
112
59
  - - ">="
113
60
  - !ruby/object:Gem::Version
114
- version: '0'
61
+ version: '3.2'
115
62
  required_rubygems_version: !ruby/object:Gem::Requirement
116
63
  requirements:
117
64
  - - ">="
118
65
  - !ruby/object:Gem::Version
119
66
  version: '0'
120
67
  requirements: []
121
- rubygems_version: 3.6.7
68
+ rubygems_version: 4.0.3
122
69
  specification_version: 4
123
70
  summary: HTML to Slim converter.
124
71
  test_files: []
@@ -1,3 +0,0 @@
1
- module HTML2Slim
2
- VERSION = '0.3.0'
3
- end
data/lib/html2slim.rb DELETED
@@ -1,12 +0,0 @@
1
- require_relative 'html2slim/version'
2
- require_relative 'html2slim/converter'
3
-
4
- module HTML2Slim
5
- def self.convert!(input, format=:html)
6
- if format.to_s == "html"
7
- HTMLConverter.new(input)
8
- else
9
- ERBConverter.new(input)
10
- end
11
- end
12
- end