hiccdown 1.3.0 → 1.4.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/hiccdown.rb +25 -3
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2e16c613ff62cbd88fb53d8c57c4f9e4a89a06f498e8344fe67f6da3f82ada33
4
- data.tar.gz: 0f32c9b93fde68cf68544fb10a0b1285c0799779245af8b2d91efc066342a248
3
+ metadata.gz: d04561bd25ef616c71cafb7500943039904cc59269de01b7536b3fefdf68a787
4
+ data.tar.gz: 51088222ce3a32d48df3fe339a96a0ba98f9051745823ef9ca915a413867d141
5
5
  SHA512:
6
- metadata.gz: 686df3dded370832f8d74169dd9fe54fce9ee45b8c9c30c89dd7dc8ab3d8876c9fbf205b37815ea08a133229c01fb091b26c6884126f3e52d7b0047d5b1f48d9
7
- data.tar.gz: 0eb3af3931eb0b91484ea462399702c85fbb29649e3a38a52ac3c7266e5bd2ca43e4f5328fd398fc5775dd9a4099853330f5d759321a822a5c52f9c4801d0ccf
6
+ metadata.gz: fe92789f9e885d48745adfeea619c85e9357c640af4c3675d8869c979a9bcdc813da0c1b6cb1c509f6dc69e8946fc987e2e4b0e75d3989b7b12fcda7fd2b1a2f
7
+ data.tar.gz: 9d24cb9dcbf33caf43b204ccc7b616070918263d0f3c70078d953ef0cabd4e6b10506aa57ed3ed3864517c49e8bf037b8a0e115c5462542b97d7c096e2ed4377
data/lib/hiccdown.rb CHANGED
@@ -39,12 +39,34 @@ module Hiccdown
39
39
  Set.new([:area, :base, :br, :col, :command, :embed, :hr, :img, :input, :keygen, :link, :menuitem, :meta, :param, :source, :track, :wbr])
40
40
  end
41
41
 
42
+ def self.process_hash(hash, prefix = nil, escape)
43
+ hash.flat_map do |key, value|
44
+ attribute_key = prefix ? "#{prefix}-#{key}" : key.to_s
45
+
46
+ if value.is_a?(Hash)
47
+ process_hash(value, attribute_key, escape)
48
+ elsif value.is_a?(Array)
49
+ value_str = value.map { |v| maybe_escape(v.to_s, escape) }.join(' ')
50
+ ["#{attribute_key}=\"#{value_str}\""]
51
+ else
52
+ value_str = maybe_escape(value.to_s, escape)
53
+ ["#{attribute_key}=\"#{value_str}\""]
54
+ end
55
+ end
56
+ end
57
+
58
+ def self.hash_to_html_attributes(hash, escape)
59
+ process_hash(hash, nil, escape).join(' ')
60
+ end
61
+
42
62
  def self.to_html structure, escape = true
43
63
  if structure.is_a? Hash
44
- structure.reduce([]) do |acc, (key, val)|
45
- acc + [[key.to_s, '="', self.maybe_escape(val.to_s, escape), '"'].join]
46
- end.join(' ')
64
+ self.hash_to_html_attributes(structure, escape)
47
65
  elsif structure.is_a? Array
66
+ if structure.empty?
67
+ return nil
68
+ end
69
+
48
70
  if structure.first.is_a?(Array)
49
71
  return structure.map { |s| to_html(s, escape) }.join
50
72
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiccdown
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dennis Hackethal
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-25 00:00:00.000000000 Z
11
+ date: 2024-07-26 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Generates an HTML string from a Hiccup structure and improves Rails views.
14
14
  email: engineering@dennishackethal.com