lib/chgk_rating/utils/transformations.rb in chgk_rating-1.0.0.rc1 vs lib/chgk_rating/utils/transformations.rb in chgk_rating-1.0.0
- old
+ new
@@ -1,83 +1,83 @@
-module ChgkRating
- module Utils
- module Transformations
- def transformation(name = 'integer_string')
- up, down = name.to_s.split '_'
- up = 'integer' if up.nil? || up.empty?
- down = 'string' if down.nil? || down.empty?
-
- %i(up down).inject({}) do |result, t|
- current_transformer = binding.local_variable_get t
- result.merge({
- "transform_#{t}".to_sym => send(current_transformer)
- })
- end
- end
-
- class << self
- def load_transformers!
- TRANSFORMERS.each do |method_name, transformer|
- define_method(method_name) { transformer }
- end
- end
-
- private
-
- def chgk_object(namespace, type = 'Models')
- ->(d) do
- opts = type == 'Models' ?
- [d, {lazy: true}] :
- [{collection: d, lazy: true}]
-
- Module.const_get("ChgkRating::#{type}::#{namespace}").new(*opts)
- end
- end
-
- def to_boolean
- ->(d) { !d.to_i.zero? }
- end
-
- def to_binary_boolean
- ->(d) { d ? '1' : '0' }
- end
-
- def to_star(method = :to_s, iterate = false)
- ->(d) do
- iterate ?
- d.map {|obj| obj.send method } :
- d.send(method)
- end
- end
- end
-
- TRANSFORMERS = {
- string: to_star,
- integer: to_star(:to_i),
- float: to_star(:to_f),
- id: to_star(:id),
- ids: to_star(:id, true),
- sym: to_star(:to_sym),
- strdate: to_star(:to_s_chgk),
- uri: ->(d) { URI.parse_safely d },
- boolean: to_boolean,
- binboolean: to_binary_boolean,
- date: ->(d) { Date.parse_safely d},
- datetime: ->(d) { DateTime.parse_safely d},
- splitboolean: ->(d) do
- d&.split('')&.map {|result| to_boolean.call(result)}
- end,
- arraystrboolean: ->(d) do
- d&.map {|result| to_binary_boolean.call(result)}
- end,
- arrayboolean: ->(d) do
- d&.map {|result| to_boolean.call(result)}
- end,
- team: chgk_object('Team'),
- player: chgk_object('Player'),
- players: chgk_object('Players', 'Collections')
- }.freeze
-
- load_transformers!
- end
- end
+module ChgkRating
+ module Utils
+ module Transformations
+ def transformation(name = 'integer_string')
+ up, down = name.to_s.split '_'
+ up = 'integer' if up.nil? || up.empty?
+ down = 'string' if down.nil? || down.empty?
+
+ %i(up down).inject({}) do |result, t|
+ current_transformer = binding.local_variable_get t
+ result.merge({
+ "transform_#{t}".to_sym => send(current_transformer)
+ })
+ end
+ end
+
+ class << self
+ def load_transformers!
+ TRANSFORMERS.each do |method_name, transformer|
+ define_method(method_name) { transformer }
+ end
+ end
+
+ private
+
+ def chgk_object(namespace, type = 'Models')
+ ->(d) do
+ opts = type == 'Models' ?
+ [d, {lazy: true}] :
+ [{collection: d, lazy: true}]
+
+ Module.const_get("ChgkRating::#{type}::#{namespace}").new(*opts)
+ end
+ end
+
+ def to_boolean
+ ->(d) { !d.to_i.zero? }
+ end
+
+ def to_binary_boolean
+ ->(d) { d ? '1' : '0' }
+ end
+
+ def to_star(method = :to_s, iterate = false)
+ ->(d) do
+ iterate ?
+ d.map {|obj| obj.send method } :
+ d.send(method)
+ end
+ end
+ end
+
+ TRANSFORMERS = {
+ string: to_star,
+ integer: to_star(:to_i),
+ float: to_star(:to_f),
+ id: to_star(:id),
+ ids: to_star(:id, true),
+ sym: to_star(:to_sym),
+ strdate: to_star(:to_s_chgk),
+ uri: ->(d) { URI.parse_safely d },
+ boolean: to_boolean,
+ binboolean: to_binary_boolean,
+ date: ->(d) { Date.parse_safely d},
+ datetime: ->(d) { DateTime.parse_safely d},
+ splitboolean: ->(d) do
+ d&.split('')&.map {|result| to_boolean.call(result)}
+ end,
+ arraystrboolean: ->(d) do
+ d&.map {|result| to_binary_boolean.call(result)}
+ end,
+ arrayboolean: ->(d) do
+ d&.map {|result| to_boolean.call(result)}
+ end,
+ team: chgk_object('Team'),
+ player: chgk_object('Player'),
+ players: chgk_object('Players', 'Collections')
+ }.freeze
+
+ load_transformers!
+ end
+ end
end
\ No newline at end of file