Module: Forma::Utils
- Includes:
- ActionView::Helpers::NumberHelper
- Included in:
- Field, Form, NumberField
- Defined in:
- lib/forma/utils.rb
Class Method Summary collapse
- .extract_value(val, name) ⇒ Object
- .number_format(num, h = {}) ⇒ Object
- .singular_name(model) ⇒ Object
Instance Method Summary collapse
Class Method Details
.extract_value(val, name) ⇒ Object
15 16 17 18 19 20 21 22 23 |
# File 'lib/forma/utils.rb', line 15 def extract_value(val, name) def simple_value(model, name) if model.respond_to?(name); model.send(name) elsif model.respond_to?('[]'); model[name] || model[name.to_sym] end end name.to_s.split('.').each { |n| val = simple_value(val, n) if val } val end |
.number_format(num, h = {}) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/forma/utils.rb', line 25 def number_format(num, h = {}) max_digits = h[:max_digits] || 2 max_digits = 0 if max_digits < 0 min_digits = h[:min_digits] || 0 min_digits = max_digits if min_digits > max_digits separator = h[:separator] || '.' delimiter = h[:delimiter] || ',' formatted = number_with_precision(num, precision: max_digits, separator: separator, delimiter: delimiter, strip_insignificant_zeros: true) nums = formatted.split(separator) length_after_separator = (nums[1] || '').length if length_after_separator >= min_digits formatted else "#{nums[0]}#{separator}#{(nums[1] || '').ljust(min_digits, '0')}" end end |
.singular_name(model) ⇒ Object
8 9 10 11 12 13 |
# File 'lib/forma/utils.rb', line 8 def singular_name(model) if model.respond_to?(:model_name); model.model_name.singular_route_key # Mongoid elsif model.class.respond_to?(:table_name); model.class.table_name.singularize # ActiveModel else; '' # Others end end |
Instance Method Details
#simple_value(model, name) ⇒ Object
16 17 18 19 20 |
# File 'lib/forma/utils.rb', line 16 def simple_value(model, name) if model.respond_to?(name); model.send(name) elsif model.respond_to?('[]'); model[name] || model[name.to_sym] end end |