Module: Datagrid::Utils
- Defined in:
- lib/datagrid/utils.rb
Overview
:nodoc:
Constant Summary collapse
- TRUTH =
[true, 1, "1", "true", "yes", "on"]
Class Method Summary collapse
- .add_html_classes(options, *classes) ⇒ Object
- .apply_args(*args, &block) ⇒ Object
- .booleanize(value) ⇒ Object
- .extract_position_from_options(array, options) ⇒ Object
- .format_date_as_timestamp(value) ⇒ Object
- .parse_date(value) ⇒ Object
- .parse_datetime(value) ⇒ Object
- .string_like?(value) ⇒ Boolean
- .translate_from_namespace(namespace, grid_class, key) ⇒ Object
- .warn_once(message, delay = 5) ⇒ Object
Class Method Details
.add_html_classes(options, *classes) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/datagrid/utils.rb', line 38 def add_html_classes(, *classes) = .clone [:class] ||= "" if [:class].is_a?(Array) [:class] += classes else # suppose that it is a String [:class] += " " unless [:class].blank? [:class] += classes.join(" ") end end |
.apply_args(*args, &block) ⇒ Object
66 67 68 69 70 71 72 73 |
# File 'lib/datagrid/utils.rb', line 66 def apply_args(*args, &block) return block.call(*args) if block.arity < 0 args = args.clone (args.size - block.arity).times do args.pop end block.call(*args) end |
.booleanize(value) ⇒ Object
8 9 10 11 12 13 |
# File 'lib/datagrid/utils.rb', line 8 def booleanize(value) if value.respond_to?(:downcase) value = value.downcase end TRUTH.include?(value) end |
.extract_position_from_options(array, options) ⇒ Object
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/datagrid/utils.rb', line 55 def (array, ) position = .extract!(:before, :after) if position[:before] array.index {|c| c.name.to_sym == position[:before].to_sym } elsif position[:after] array.index {|c| c.name.to_sym == position[:after].to_sym } + 1 else -1 end end |
.format_date_as_timestamp(value) ⇒ Object
111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/datagrid/utils.rb', line 111 def (value) if !value value elsif value.is_a?(Array) [value.first.try(:beginning_of_day), value.last.try(:end_of_day)] elsif value.is_a?(Range) (value.first.beginning_of_day..value.last.end_of_day) else value.beginning_of_day..value.end_of_day end end |
.parse_date(value) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/datagrid/utils.rb', line 75 def parse_date(value) return nil if value.blank? return value if value.is_a?(Range) if value.is_a?(String) Array(Datagrid.configuration.date_formats).each do |format| begin return Date.strptime(value, format) rescue ::ArgumentError end end end return Date.parse(value) if value.is_a?(String) return value.to_date if value.respond_to?(:to_date) value rescue ::ArgumentError nil end |
.parse_datetime(value) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/datagrid/utils.rb', line 93 def parse_datetime(value) return nil if value.blank? return value if value.is_a?(Range) if value.is_a?(String) Array(Datagrid.configuration.datetime_formats).each do |format| begin return Time.strptime(value, format) rescue ::ArgumentError end end end return Time.parse(value) if value.is_a?(String) return value.to_time if value.respond_to?(:to_time) value rescue ::ArgumentError nil end |
.string_like?(value) ⇒ Boolean
51 52 53 |
# File 'lib/datagrid/utils.rb', line 51 def string_like?(value) value.is_a?(Symbol) || value.is_a?(String) end |
.translate_from_namespace(namespace, grid_class, key) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/datagrid/utils.rb', line 15 def translate_from_namespace(namespace, grid_class, key) deprecated_key = :"datagrid.#{grid_class.param_name}.#{namespace}.#{key}" live_key = :"datagrid.#{grid_class.model_name.i18n_key}.#{namespace}.#{key}" i18n_key = grid_class.model_name.i18n_key.to_s if grid_class.param_name != i18n_key && I18n.exists?(deprecated_key) Datagrid::Utils.warn_once( "Deprecated translation namespace 'datagrid.#{grid_class.param_name}' for #{grid_class}. Use 'datagrid.#{i18n_key}' instead." ) return I18n.t(deprecated_key) end I18n.t(live_key, default: key.to_s.humanize).presence end |
.warn_once(message, delay = 5) ⇒ Object
29 30 31 32 33 34 35 36 |
# File 'lib/datagrid/utils.rb', line 29 def warn_once(, delay = 5) @warnings ||= {} = @warnings[] return false if && >= Time.now - delay warn @warnings[] = Time.now true end |