hanami-helpers 1.1.1 → 1.1.2

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: 1505baa1639a4a9bfbf8a7ea317e2385ade8783fe446f526162f26152d0c1c84
4
- data.tar.gz: 0071b68be742ee837514e1457fad8503a78cacde1d3d61ea45f8b611a7df9160
3
+ metadata.gz: 2240795ff1bddb8305850e8473c60580701e7175528edcc25f83bad073a49fc9
4
+ data.tar.gz: 704af3c5d22e74509806c87c17bb368b0935dafe6ff276d2532bbc010c59eba2
5
5
  SHA512:
6
- metadata.gz: c80db19544ca884289e9086132b611b2ebc7924b5f0de03ed0bf6bd39d2205d0ccfd1f3999735068255d4a61dc1824b5c6d72e3c38cf5d23528abad6b042ea87
7
- data.tar.gz: 7e2cf205cae822a23199bfae9787426e55a66ff8118f14cd1235ba0ff4cfd63190eb2f883e651599dbdda39fae9dc589985da7181212996f82004737bb1b8d7e
6
+ metadata.gz: 94778d91a095e8e7e41d58c0fa9477de162960fab463f2c8eb593b03f27ba2ac3dc7041d6fdab42b7f46783838510f0532191d678c4d5cd2225b454251b0c499
7
+ data.tar.gz: 6a5c35fd9efdc2c5db4d763398e10bc51de1cf2b429e28bfcfc5b2694e2dc3a68d24d6b22658965e85e5b85202a3c1f206d920badc5bf6e70ae75335dd4d8410
data/CHANGELOG.md CHANGED
@@ -1,7 +1,11 @@
1
1
  # Hanami::Helpers
2
2
  View helpers for Ruby web applications
3
3
 
4
- ## v1.1.1 - 2017-11-28
4
+ ## v1.1.2 - 2018-04-05
5
+ ### Fixed
6
+ - [Luca Guidi] Ensure correct arity of `#form_for`, to be used in conjuction with `Hanami::Helpers::FormHelper::Form` (eg. `<%= form_for(form) { ... } %>`)
7
+
8
+ ## v1.1.1 - 2018-02-27
5
9
  ### Fixed
6
10
  - [Alfonso Uceda] Ensure `#select` form helper to not select options with `nil` value
7
11
  - [Alfonso Uceda] Ensure `#fields_for_collection` form helper to produce input fields with correct `name` attribute
@@ -229,7 +229,7 @@ module Hanami
229
229
  # @option options [Hash] :values An optional payload of objects to pass
230
230
  # @param blk [Proc] A block that describes the contents of the form
231
231
  #
232
- # @overload form_for(form, attributes, &blk)
232
+ # @overload form_for(form, attributes = {}, &blk)
233
233
  # Use Form
234
234
  # @param form [Hanami::Helpers::FormHelper::Form] a form object
235
235
  # @param attributes [Hash] HTML attributes to pass to the form tag and form values
@@ -406,9 +406,9 @@ module Hanami
406
406
  #
407
407
  # <button type="submit">Create</button>
408
408
  # </form>
409
- def form_for(name, url, options = {}, &blk)
409
+ def form_for(name, url = nil, options = {}, &blk)
410
410
  form = if name.is_a?(Form)
411
- options = url
411
+ options = url || {}
412
412
  name
413
413
  else
414
414
  Form.new(name, url, options.delete(:values))
@@ -81,11 +81,11 @@ module Hanami
81
81
 
82
82
  # Instantiate a form builder
83
83
  #
84
- # @overload initialize(form, attributes, params, &blk)
84
+ # @overload initialize(form, attributes, context, &blk)
85
85
  # Top level form
86
86
  # @param form [Hanami::Helpers:FormHelper::Form] the form
87
87
  # @param attributes [::Hash] a set of HTML attributes
88
- # @param params [Hanami::Action::Params] request params
88
+ # @param context [Hanami::Helpers::FormHelper]
89
89
  # @param blk [Proc] a block that describes the contents of the form
90
90
  #
91
91
  # @overload initialize(form, attributes, params, &blk)
@@ -1225,17 +1225,19 @@ module Hanami
1225
1225
  # <option value="zw">Zimbabwe</option>
1226
1226
  # </select>
1227
1227
  def select(name, values, attributes = {}) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
1228
- options = attributes.delete(:options) { {} }
1229
- attributes = { name: _select_input_name(name, attributes[:multiple]), id: _input_id(name) }.merge(attributes)
1230
- prompt = options.delete(:prompt)
1231
- selected = options.delete(:selected)
1228
+ options = attributes.delete(:options) { {} }
1229
+ multiple = attributes[:multiple]
1230
+ attributes = { name: _select_input_name(name, multiple), id: _input_id(name) }.merge(attributes)
1231
+ prompt = options.delete(:prompt)
1232
+ selected = options.delete(:selected)
1233
+ input_value = _value(name)
1232
1234
 
1233
1235
  super(attributes) do
1234
1236
  option(prompt) unless prompt.nil?
1235
1237
 
1236
1238
  already_selected = nil
1237
1239
  values.each do |content, value|
1238
- if (attributes[:multiple] || !already_selected) && (already_selected = _select_option_selected?(value, selected, _value(name), attributes[:multiple]))
1240
+ if (multiple || !already_selected) && (already_selected = _select_option_selected?(value, selected, input_value, multiple))
1239
1241
  option(content, { value: value, selected: SELECTED }.merge(options))
1240
1242
  else
1241
1243
  option(content, { value: value }.merge(options))
@@ -1568,20 +1570,35 @@ module Hanami
1568
1570
  select_name
1569
1571
  end
1570
1572
 
1571
- # TODO: this has to be refactored
1572
- #
1573
1573
  # @api private
1574
- #
1575
- # rubocop:disable Metrics/CyclomaticComplexity
1576
- # rubocop:disable Metrics/PerceivedComplexity
1577
1574
  def _select_option_selected?(value, selected, input_value, multiple)
1578
- value == selected ||
1579
- (multiple && (selected.is_a?(Array) && selected.include?(value))) ||
1580
- (!input_value.nil? && (value.to_s == input_value.to_s)) ||
1581
- (multiple && (input_value.is_a?(Array) && input_value.include?(value)))
1575
+ if input_value && selected.nil?
1576
+ value.to_s == input_value
1577
+ else
1578
+ (value == selected) ||
1579
+ _is_in_selected_values?(multiple, selected, value) ||
1580
+ _is_current_value?(input_value, value) ||
1581
+ _is_in_input_values?(multiple, input_value, value)
1582
+ end
1583
+ end
1584
+
1585
+ # @api private
1586
+ def _is_current_value?(input_value, value)
1587
+ return unless input_value
1588
+ value.to_s == input_value.to_s
1589
+ end
1590
+
1591
+ # @api private
1592
+ def _is_in_selected_values?(multiple, selected, value)
1593
+ return unless multiple && selected.is_a?(Array)
1594
+ selected.include?(value)
1595
+ end
1596
+
1597
+ # @api private
1598
+ def _is_in_input_values?(multiple, input_value, value)
1599
+ return unless multiple && input_value.is_a?(Array)
1600
+ input_value.include?(value)
1582
1601
  end
1583
- # rubocop:enable Metrics/PerceivedComplexity
1584
- # rubocop:enable Metrics/CyclomaticComplexity
1585
1602
 
1586
1603
  # @api private
1587
1604
  def _check_box_checked?(value, input_value)
@@ -160,7 +160,7 @@ module Hanami
160
160
  @nodes << self.class.html_node.new(:#{tag}, blk || content, attributes || content, options)
161
161
  self
162
162
  end
163
- }
163
+ }, __FILE__, __LINE__ - 5
164
164
  end
165
165
 
166
166
  EMPTY_TAGS.each do |tag|
@@ -169,7 +169,7 @@ module Hanami
169
169
  @nodes << EmptyHtmlNode.new(:#{tag}, attributes)
170
170
  self
171
171
  end
172
- }
172
+ }, __FILE__, __LINE__ - 5
173
173
  end
174
174
 
175
175
  include Utils::ClassAttribute
@@ -369,7 +369,7 @@ module Hanami
369
369
  # @since 0.1.0
370
370
  # @api private
371
371
  def resolve(&blk)
372
- @context = eval 'self', blk.binding
372
+ @context = eval('self', blk.binding, __FILE__, __LINE__)
373
373
  instance_exec(&blk)
374
374
  end
375
375
  end
@@ -45,7 +45,7 @@ module Hanami
45
45
  def self.included(base)
46
46
  factory = "#{Utils::String.namespace(base)}.routes"
47
47
 
48
- base.class_eval <<-END_EVAL, __FILE__, __LINE__
48
+ base.class_eval <<-END_EVAL, __FILE__, __LINE__ + 1
49
49
  def routes
50
50
  #{factory}
51
51
  end
@@ -3,6 +3,6 @@ module Hanami
3
3
  # Define version
4
4
  #
5
5
  # @since 0.1.0
6
- VERSION = '1.1.1'.freeze
6
+ VERSION = '1.1.2'.freeze
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-28 00:00:00.000000000 Z
11
+ date: 2018-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hanami-utils
@@ -128,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
128
  version: '0'
129
129
  requirements: []
130
130
  rubyforge_project:
131
- rubygems_version: 2.7.1
131
+ rubygems_version: 2.7.5
132
132
  signing_key:
133
133
  specification_version: 4
134
134
  summary: Hanami helpers