hiccdown 1.2.2 → 1.4.0

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: 511a111c1a785fbf4e2bed70428763c957c864e2dfcb266aadd96df96cc11a01
4
- data.tar.gz: 05bdf9c2dcc2e6ac2ca576b9b3e275301c33dff7724754dabd3aeacf919c7abe
3
+ metadata.gz: 02ff5c55e4f14971f81caa18567805139f1df00eee7155cb35ec1228660e213d
4
+ data.tar.gz: b45937dd5027f36cdd1f54fb7b1aa0f59dbc653baf2dec2119802943ef0cde72
5
5
  SHA512:
6
- metadata.gz: 686991790952e22669ee7f050571744d62c8ea9191e9f623f5e4d9e63aeaf437f96fdaff2e19e82b4e9c103a7e40c758e0452000086b77e23061e7fbae2a3eb5
7
- data.tar.gz: 55b1aa42edf4b366a0c7b1d543eaf8c9886c7794a5b536020a6cd68c436fb82697a2ad50639af016b7945cbda1d8b295cde03efc0e6c209eb5cdc475f6d65e39
6
+ metadata.gz: 3de2fb6ed892d6de6b4f9fa882a96b2c966f1801f9b33964e94b76d0f18db7bdc3aaeb51193ea5d0acbfbdcdb9342e0b0345c02fc845b83d8a62366f934902d3
7
+ data.tar.gz: 21a036a8cd1511b53dddc430fcf8f8b121a2335a648d8ae1dae8ecc6758b798c8a6054791078cf9c3748da15be63a1070aa4912fa0fed614b19ecd33343914d1
@@ -52,6 +52,10 @@ module Hiccdown
52
52
  elsif options.key?(:action) || args.first.is_a?(Symbol) || (args.first.is_a?(String) && !args.first.include?('/'))
53
53
  action_name = options[:action] || args.first.to_s
54
54
  render_helper_method(action_name, options)
55
+ # When a template is given but doesn’t exist. Useful for gems like High Voltage
56
+ elsif options.key?(:template) && !view_context.lookup_context.template_exists?(options[:template])
57
+ action_name = options[:template].split('/').last
58
+ render_helper_method(action_name, options)
55
59
  # Partials, files and all other cases
56
60
  else
57
61
  original_render(*args, options)
data/lib/hiccdown.rb CHANGED
@@ -39,11 +39,29 @@ 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
48
66
  if structure.first.is_a?(Array)
49
67
  return structure.map { |s| to_html(s, escape) }.join
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiccdown
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dennis Hackethal