rudash 2.17.3 → 2.17.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rudash/at.rb +2 -2
  3. data/lib/rudash/compact.rb +2 -1
  4. data/lib/rudash/concat.rb +3 -5
  5. data/lib/rudash/difference.rb +5 -5
  6. data/lib/rudash/drop_right.rb +3 -3
  7. data/lib/rudash/each.rb +1 -1
  8. data/lib/rudash/each_right.rb +2 -2
  9. data/lib/rudash/filter.rb +10 -10
  10. data/lib/rudash/find.rb +1 -1
  11. data/lib/rudash/find_last.rb +1 -1
  12. data/lib/rudash/flip.rb +4 -4
  13. data/lib/rudash/flow.rb +6 -6
  14. data/lib/rudash/flow_right.rb +1 -1
  15. data/lib/rudash/get.rb +6 -6
  16. data/lib/rudash/group_by.rb +5 -5
  17. data/lib/rudash/head.rb +3 -2
  18. data/lib/rudash/identity.rb +1 -1
  19. data/lib/rudash/initial.rb +3 -2
  20. data/lib/rudash/intersection.rb +3 -3
  21. data/lib/rudash/join.rb +3 -3
  22. data/lib/rudash/keys.rb +2 -2
  23. data/lib/rudash/last.rb +2 -1
  24. data/lib/rudash/map.rb +5 -5
  25. data/lib/rudash/negate.rb +3 -5
  26. data/lib/rudash/pick.rb +7 -9
  27. data/lib/rudash/range.rb +12 -10
  28. data/lib/rudash/reduce.rb +5 -5
  29. data/lib/rudash/reject.rb +3 -3
  30. data/lib/rudash/remove.rb +3 -2
  31. data/lib/rudash/set.rb +6 -6
  32. data/lib/rudash/size.rb +1 -0
  33. data/lib/rudash/slice.rb +5 -5
  34. data/lib/rudash/some.rb +1 -1
  35. data/lib/rudash/tail.rb +2 -1
  36. data/lib/rudash/take.rb +4 -3
  37. data/lib/rudash/union.rb +7 -6
  38. data/lib/rudash/unset.rb +5 -5
  39. data/lib/rudash/update.rb +2 -2
  40. data/lib/rudash/without.rb +2 -1
  41. data/lib/rudash.rb +1 -1
  42. data/lib/utils/chain_wrapper.rb +4 -6
  43. data/lib/utils/dynamic_args_count.rb +7 -7
  44. data/lib/utils/index.rb +4 -3
  45. data/lib/utils/nested_path_creator.rb +7 -5
  46. data/lib/utils/path_resolver.rb +6 -6
  47. data/lib/utils/subset_deep_match.rb +38 -38
  48. data/lib/version.rb +1 -1
  49. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 901382a43a76e1447d05328d3a20c5099a65483fc06aaff4d2eb310c5035f46f
4
- data.tar.gz: f1ec1dc4cb692cc3f8124070a3cebb28f53cc4bc973eefd3b97e5d754d886696
3
+ metadata.gz: 3d799e40ff80455b2ed477fc110aa72a0cac0ebf1f3523e0bcb9faebabff0e93
4
+ data.tar.gz: 7e3d4c6be34feb99a7791bce6482a685d9b9944f4b59b0d21f6c8af9ba376d54
5
5
  SHA512:
6
- metadata.gz: 30410e5bedcf726cddcb00480288d74e9ed3ee7b91216c82cdc31ab8cf686c8f86e41592401d2150b4fc211e1f17d482e7209d29c2ea6e3fb5d30b41de90efd3
7
- data.tar.gz: 606b1f87af1a9064ff240dd75e01ede1244706efcf5f19124109c7ea249f488c543a09e4bf5a54b877f9484c570e02070ae16562b824fa045f8bdd6621d1655e
6
+ metadata.gz: 2b58b76b34470accda8d425d539d1a90414df30fd58bd2f226b152ea73afa92cbd2116eb010b1434d7026a7f57c98f7155e9bfff98ae5046ae1d7e8854751cc7
7
+ data.tar.gz: b4eb8d6c1577c3ed0243066f16434e35d111aa74c00abbfb22a15ef1a1611dcb587f82f1fca571dfb3581406fc24184017c51aeb7e19d96abf33ea73bc1a00df
data/lib/rudash/at.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  module Rudash
2
2
  module At
3
3
  def at(object, paths)
4
- get_mapper = -> (path) {
4
+ get_mapper = ->(path) {
5
5
  self.get(object, path)
6
6
  }
7
-
7
+
8
8
  self.map(paths, get_mapper)
9
9
  end
10
10
  end
@@ -1,7 +1,8 @@
1
1
  module Rudash
2
2
  module Compact
3
3
  def compact(array)
4
- return [] if !array.is_a?(Array)
4
+ return [] unless array.is_a?(Array)
5
+
5
6
  array.compact
6
7
  end
7
8
  end
data/lib/rudash/concat.rb CHANGED
@@ -2,11 +2,9 @@ module Rudash
2
2
  module Concat
3
3
  def concat(head, *values)
4
4
  head_arr = head.is_a?(Array) ? head : [head]
5
- if values.size == 0
6
- return head_arr
7
- else
8
- return head_arr + self.concat(*values)
9
- end
5
+ return head_arr if values.size.zero?
6
+
7
+ head_arr + self.concat(*values)
10
8
  end
11
9
  end
12
10
  end
@@ -1,13 +1,13 @@
1
1
  module Rudash
2
2
  module Difference
3
3
  def difference(*values)
4
- diff_reducer = -> (acc, current) {
5
- return [] if !acc.is_a?(Array)
6
- return acc if !current.is_a?(Array)
7
-
4
+ diff_reducer = ->(acc, current) {
5
+ return [] unless acc.is_a?(Array)
6
+ return acc unless current.is_a?(Array)
7
+
8
8
  acc - current
9
9
  }
10
-
10
+
11
11
  self.reduce(values, diff_reducer)
12
12
  end
13
13
  end
@@ -1,11 +1,11 @@
1
1
  module Rudash
2
2
  module DropRight
3
3
  def drop_right(array, *rest_args)
4
- return [] if !self.is_array?(array)
5
-
4
+ return [] unless self.is_array?(array)
5
+
6
6
  n = self.head(rest_args) || 1
7
7
  return array if n <= 0
8
-
8
+
9
9
  self.take(array, self.size(array) - n)
10
10
  end
11
11
  end
data/lib/rudash/each.rb CHANGED
@@ -4,7 +4,7 @@ module Rudash
4
4
  self.map(collection, *rest_args)
5
5
  collection
6
6
  end
7
-
7
+
8
8
  def for_each(*args)
9
9
  self.each(*args)
10
10
  end
@@ -2,11 +2,11 @@ module Rudash
2
2
  module EachRight
3
3
  def each_right(collection, *rest_args)
4
4
  reversed_collection = Rudash::Utils.force_reverse(collection)
5
-
5
+
6
6
  self.each(reversed_collection, *rest_args)
7
7
  collection
8
8
  end
9
-
9
+
10
10
  def for_each_right(*args)
11
11
  self.each_right(*args)
12
12
  end
data/lib/rudash/filter.rb CHANGED
@@ -2,22 +2,22 @@ module Rudash
2
2
  module Filter
3
3
  def filter(collection, *rest_args)
4
4
  predicate_fn = self.head(rest_args) || self.method(:identity)
5
-
5
+
6
6
  if predicate_fn.is_a?(Hash)
7
- slice_matcher = Rudash::SubsetDeepMatch.subset_deep_match?.(predicate_fn)
8
- return self.filter(collection, slice_matcher)
7
+ slice_matcher = Rudash::SubsetDeepMatch.subset_deep_match?.call(predicate_fn)
8
+ return self.filter(collection, slice_matcher)
9
9
  end
10
-
11
- return [] if !Rudash::Utils.is_function?(predicate_fn)
12
-
10
+
11
+ return [] unless Rudash::Utils.is_function?(predicate_fn)
12
+
13
13
  if collection.is_a?(Array)
14
- return collection.select.with_index { |x, idx|
14
+ return collection.select.with_index do |x, idx|
15
15
  Rudash::DynamicArgsCount.call(predicate_fn, x, idx)
16
- }
16
+ end
17
17
  elsif collection.is_a?(Hash)
18
- return collection.select { |k, v|
18
+ return collection.select do |k, v|
19
19
  Rudash::DynamicArgsCount.call(predicate_fn, v, k)
20
- }.values
20
+ end.values
21
21
  else
22
22
  return []
23
23
  end
data/lib/rudash/find.rb CHANGED
@@ -3,7 +3,7 @@ module Rudash
3
3
  def find(collection, *rest_args)
4
4
  iteratee_fn = self.head(rest_args)
5
5
  filtered_arr = self.filter(collection, iteratee_fn)
6
-
6
+
7
7
  filtered_arr[0]
8
8
  end
9
9
  end
@@ -3,7 +3,7 @@ module Rudash
3
3
  def find_last(collection, *rest_args)
4
4
  iteratee_fn = self.head(rest_args)
5
5
  filtered_arr = self.filter(collection, iteratee_fn)
6
-
6
+
7
7
  filtered_arr[filtered_arr.length - 1]
8
8
  end
9
9
  end
data/lib/rudash/flip.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  module Rudash
2
2
  module Flip
3
3
  def flip(a_proc)
4
- raise 'Expected a Proc/Method' if !Rudash::Utils.is_function?(a_proc)
5
-
6
- flipped_proc = -> (*args) {
4
+ raise 'Expected a Proc/Method' unless Rudash::Utils.is_function?(a_proc)
5
+
6
+ ->(*args) {
7
7
  reveresed_args = args.reverse
8
-
8
+
9
9
  a_proc.(*reveresed_args)
10
10
  }
11
11
  end
data/lib/rudash/flow.rb CHANGED
@@ -2,12 +2,12 @@ module Rudash
2
2
  module Flow
3
3
  def flow(*funs)
4
4
  flatten_funs = funs.flatten
5
-
6
- flow_proc = -> (*args) {
7
- self.reduce(flatten_funs, -> (acc, fn) {
5
+
6
+ ->(*args) {
7
+ self.reduce(flatten_funs, ->(acc, fn) {
8
8
  Rudash::DynamicArgsCount.call(fn, *self.concat(acc))
9
- }, args)
10
- }
11
- end
9
+ }, args)
10
+ }
12
11
  end
13
12
  end
13
+ end
@@ -2,7 +2,7 @@ module Rudash
2
2
  module FlowRight
3
3
  def flow_right(*funs)
4
4
  flatten_funs = funs.flatten.reverse
5
-
5
+
6
6
  self.flow(flatten_funs)
7
7
  end
8
8
  end
data/lib/rudash/get.rb CHANGED
@@ -1,14 +1,14 @@
1
1
  module Rudash
2
2
  module Get
3
- def get(hash, path, *rest_args)
3
+ def get(hash, path, *_rest_args)
4
4
  return nil if !path.is_a?(String) && !path.is_a?(Array)
5
5
  return nil if !hash.is_a?(Array) && !hash.is_a?(Hash)
6
-
6
+
7
7
  resolved_path = Rudash::PathResolver.resolve(path)
8
-
9
- get_reducer = -> (acc, current) {
8
+
9
+ get_reducer = ->(acc, current) {
10
10
  return nil if acc.nil?
11
-
11
+
12
12
  if acc.is_a?(Array) && Rudash::Utils.match_number?(current)
13
13
  acc[current.to_i]
14
14
  elsif acc.is_a?(Array) && !Rudash::Utils.match_number?(current)
@@ -19,7 +19,7 @@ module Rudash
19
19
  nil
20
20
  end
21
21
  }
22
-
22
+
23
23
  self.reduce(resolved_path, get_reducer, hash)
24
24
  end
25
25
  end
@@ -2,19 +2,19 @@ module Rudash
2
2
  module GroupBy
3
3
  def group_by(collection, *rest_args)
4
4
  iteratee = self.head(rest_args) || self.method(:identity)
5
-
6
- reducer = -> (acc, current) {
5
+
6
+ reducer = ->(acc, current) {
7
7
  key = Rudash::DynamicArgsCount.call(iteratee, current)
8
-
8
+
9
9
  if acc[key]
10
10
  acc[key] << current
11
11
  else
12
12
  acc[key] = [current]
13
13
  end
14
-
14
+
15
15
  acc
16
16
  }
17
-
17
+
18
18
  self.reduce(collection, reducer, {})
19
19
  end
20
20
  end
data/lib/rudash/head.rb CHANGED
@@ -1,10 +1,11 @@
1
1
  module Rudash
2
2
  module Head
3
3
  def head(array)
4
- return nil if !array.is_a?(Array)
4
+ return nil unless array.is_a?(Array)
5
+
5
6
  array.first
6
7
  end
7
-
8
+
8
9
  def first(*args)
9
10
  self.head(*args)
10
11
  end
@@ -1,6 +1,6 @@
1
1
  module Rudash
2
2
  module Identity
3
- def identity(first_arg, *rest_args)
3
+ def identity(first_arg, *_rest_args)
4
4
  first_arg
5
5
  end
6
6
  end
@@ -1,8 +1,9 @@
1
1
  module Rudash
2
2
  module Initial
3
3
  def initial(array)
4
- return [] if !array.is_a?(Array)
5
- *initial, last = array
4
+ return [] unless array.is_a?(Array)
5
+
6
+ *initial, _last = array
6
7
  initial
7
8
  end
8
9
  end
@@ -1,12 +1,12 @@
1
1
  module Rudash
2
2
  module Intersection
3
3
  def intersection(*values)
4
-
5
- intersection_reducer = -> (acc, current) {
4
+ intersection_reducer = ->(acc, current) {
6
5
  return [] if !current.is_a?(Array) || !acc.is_a?(Array)
6
+
7
7
  acc & current
8
8
  }
9
-
9
+
10
10
  self.reduce(values, intersection_reducer, values[0])
11
11
  end
12
12
  end
data/lib/rudash/join.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  module Rudash
2
2
  module Join
3
3
  def join(array, separator = ',')
4
- return '' if !array.is_a?(Array)
5
- stringified_separator = separator.is_a?(String) ? separator : separator.to_s
6
- array.join(stringified_separator)
4
+ return '' unless array.is_a?(Array)
5
+
6
+ array.join(separator.to_s)
7
7
  end
8
8
  end
9
9
  end
data/lib/rudash/keys.rb CHANGED
@@ -3,9 +3,9 @@ module Rudash
3
3
  def keys(value)
4
4
  case value
5
5
  when Hash
6
- value.map { |key, value| "#{key}" }
6
+ value.map { |key, _value| key.to_s }
7
7
  when Array
8
- value.map.with_index { |value, index| "#{index}" }
8
+ value.map.with_index { |_value, index| index.to_s }
9
9
  else
10
10
  []
11
11
  end
data/lib/rudash/last.rb CHANGED
@@ -1,7 +1,8 @@
1
1
  module Rudash
2
2
  module Last
3
3
  def last(array)
4
- return nil if !array.is_a?(Array)
4
+ return nil unless array.is_a?(Array)
5
+
5
6
  array.last
6
7
  end
7
8
  end
data/lib/rudash/map.rb CHANGED
@@ -3,17 +3,17 @@ module Rudash
3
3
  def map(collection, *rest_args)
4
4
  iteratee_fn = self.head(rest_args) || self.method(:identity)
5
5
  col = collection.is_a?(String) ? collection.split('') : collection
6
-
7
- return self.map(collection, -> () { nil }) if !Rudash::Utils.is_function?(iteratee_fn)
8
-
6
+
7
+ return self.map(collection, ->() { nil }) unless Rudash::Utils.is_function?(iteratee_fn)
8
+
9
9
  if col.is_a?(Array)
10
10
  return col.map.with_index { |value, index|
11
11
  Rudash::DynamicArgsCount.call(iteratee_fn, value, index)
12
12
  }
13
13
  elsif col.is_a?(Hash)
14
- return col.map { |k,v|
14
+ return col.map do |k, v|
15
15
  Rudash::DynamicArgsCount.call(iteratee_fn, v, k)
16
- }
16
+ end
17
17
  else
18
18
  return []
19
19
  end
data/lib/rudash/negate.rb CHANGED
@@ -1,11 +1,9 @@
1
1
  module Rudash
2
2
  module Negate
3
3
  def negate(a_proc)
4
- raise 'Expected a Proc/Method' if !Rudash::Utils.is_function?(a_proc)
5
-
6
- negate_proc = -> (*args) {
7
- !a_proc.(*args)
8
- }
4
+ raise 'Expected a Proc/Method' unless Rudash::Utils.is_function?(a_proc)
5
+
6
+ ->(*args) { !a_proc.call(*args) }
9
7
  end
10
8
  end
11
9
  end
data/lib/rudash/pick.rb CHANGED
@@ -1,18 +1,16 @@
1
1
  module Rudash
2
2
  module Pick
3
3
  def pick(hash, paths)
4
- return self.pick(hash, [paths]) if !paths.is_a?(Array)
5
- return {} if !hash.is_a?(Hash)
6
-
4
+ return self.pick(hash, [paths]) unless paths.is_a?(Array)
5
+ return {} unless hash.is_a?(Hash)
6
+
7
7
  picked_hash = {}
8
-
9
- eacher = -> (path) {
8
+
9
+ eacher = ->(path) {
10
10
  value = self.get(hash, path)
11
- if !value.nil?
12
- self.set(picked_hash, path, value)
13
- end
11
+ self.set(picked_hash, path, value) unless value.nil?
14
12
  }
15
-
13
+
16
14
  self.each(paths, eacher)
17
15
  picked_hash
18
16
  end
data/lib/rudash/range.rb CHANGED
@@ -4,7 +4,7 @@ module Rudash
4
4
  start_step = 0
5
5
  step_jump = 1
6
6
  end_step = 0
7
-
7
+
8
8
  case args.size
9
9
  when 0
10
10
  return []
@@ -16,30 +16,32 @@ module Rudash
16
16
  start_step, end_step, step_jump = args
17
17
  step_jump_configured = true
18
18
  end
19
-
19
+
20
20
  # step_jump direction (+/-) should be defined by start/end values
21
21
  norm_step_jump = (end_step > start_step ? step_jump.abs : -step_jump.abs)
22
-
22
+
23
23
  # illegal behaviors
24
- return [] if (norm_step_jump != step_jump && step_jump_configured)
24
+
25
+ return [] if norm_step_jump != step_jump && step_jump_configured
26
+
25
27
  # End illegal behavior
26
-
28
+
27
29
  iterator = start_step
28
30
  result = []
29
-
31
+
30
32
  # calculate loop count
31
33
  boundaries = [start_step, end_step]
32
34
  max = boundaries.max
33
35
  min = boundaries.min
34
- i = (norm_step_jump == 0 ? (max - min) : ((max - min).to_f / norm_step_jump)).abs
36
+ i = (norm_step_jump.zero? ? (max - min) : ((max - min).to_f / norm_step_jump)).abs
35
37
  # end loop calculation
36
-
38
+
37
39
  while i > 0
38
40
  result << iterator
39
41
  iterator += norm_step_jump
40
- i-=1
42
+ i -= 1
41
43
  end
42
-
44
+
43
45
  result
44
46
  end
45
47
  end
data/lib/rudash/reduce.rb CHANGED
@@ -4,18 +4,18 @@ module Rudash
4
4
  reducer = rest_args[0]
5
5
  initial_state = rest_args[1]
6
6
  col = collection.is_a?(String) ? collection.split('') : collection
7
-
8
- return self.reduce(collection, -> () { nil }) if !Rudash::Utils.is_function?(reducer)
9
-
7
+
8
+ return self.reduce(collection, -> () { nil }) unless Rudash::Utils.is_function?(reducer)
9
+
10
10
  case rest_args.size
11
11
  when 1
12
- return col.reduce { |acc, current|
12
+ return col.reduce do |acc, current|
13
13
  if col.is_a?(Hash)
14
14
  Rudash::DynamicArgsCount.call(reducer, acc, current[1], current[0])
15
15
  else
16
16
  Rudash::DynamicArgsCount.call(reducer, acc, current)
17
17
  end
18
- }
18
+ end
19
19
  when 2
20
20
  return col.reduce(initial_state) { |acc, current|
21
21
  if col.is_a?(Hash)
data/lib/rudash/reject.rb CHANGED
@@ -2,10 +2,10 @@ module Rudash
2
2
  module Reject
3
3
  def reject(collection, *rest_args)
4
4
  filter = self.head(rest_args) || self.method(:identity)
5
-
5
+
6
6
  if filter.is_a?(Hash)
7
- slice_matcher = Rudash::SubsetDeepMatch.subset_deep_match?.(filter)
8
- return self.filter(collection, self.negate(slice_matcher))
7
+ slice_matcher = Rudash::SubsetDeepMatch.subset_deep_match?.call(filter)
8
+ return self.filter(collection, self.negate(slice_matcher))
9
9
  elsif Rudash::Utils.is_function?(filter)
10
10
  return self.filter(collection, self.negate(filter))
11
11
  else
data/lib/rudash/remove.rb CHANGED
@@ -1,10 +1,11 @@
1
1
  module Rudash
2
2
  module Remove
3
3
  def remove(array, *rest_args)
4
+ return [] unless array.is_a?(Array)
5
+
4
6
  predicate_fn = self.head(rest_args)
5
- return [] if !array.is_a?(Array)
6
7
  removed_items = self.filter(array, predicate_fn)
7
-
8
+
8
9
  array.replace(array - removed_items)
9
10
  removed_items
10
11
  end
data/lib/rudash/set.rb CHANGED
@@ -2,19 +2,19 @@ module Rudash
2
2
  module Set
3
3
  def set(object, path, value)
4
4
  return object if !object.is_a?(Hash) && !object.is_a?(Array)
5
-
5
+
6
6
  resolved_path = Rudash::PathResolver.resolve(path)
7
7
  Rudash::NestedPathCreator.create_path_if_not_exist(object, resolved_path)
8
-
8
+
9
9
  *initial_path, last = resolved_path
10
-
10
+
11
11
  last_key = Rudash::Utils.match_number?(last) ? last.to_i : last.to_sym
12
-
13
- if initial_path.size == 0
12
+
13
+ if initial_path.size.zero?
14
14
  object[last_key] = value
15
15
  return object
16
16
  end
17
-
17
+
18
18
  last_parent = self.get(object, initial_path)
19
19
  last_parent[last_key] = value
20
20
  object
data/lib/rudash/size.rb CHANGED
@@ -2,6 +2,7 @@ module Rudash
2
2
  module Size
3
3
  def size(something)
4
4
  return 0 if self.is_nil?(something)
5
+
5
6
  something.size
6
7
  end
7
8
  end
data/lib/rudash/slice.rb CHANGED
@@ -2,13 +2,13 @@ module Rudash
2
2
  module Slice
3
3
  def slice(array, *rest_args)
4
4
  return self.slice(array.split(''), *rest_args) if array.is_a?(String)
5
- return [] if !array.is_a?(Array)
6
-
5
+ return [] unless array.is_a?(Array)
6
+
7
7
  start_point = rest_args[0] || 0
8
8
  end_point = rest_args[1] || array.size
9
-
10
- return [] if !end_point.is_a?(Numeric)
11
-
9
+
10
+ return [] unless end_point.is_a?(Numeric)
11
+
12
12
  array.slice(start_point, end_point - start_point) || []
13
13
  end
14
14
  end
data/lib/rudash/some.rb CHANGED
@@ -2,7 +2,7 @@ module Rudash
2
2
  module Some
3
3
  def some?(array, filter)
4
4
  filtered_arr = self.filter(array, filter)
5
- filtered_arr.length != 0
5
+ !filtered_arr.empty?
6
6
  end
7
7
  end
8
8
  end
data/lib/rudash/tail.rb CHANGED
@@ -1,7 +1,8 @@
1
1
  module Rudash
2
2
  module Tail
3
3
  def tail(array)
4
- return [] if !array.is_a?(Array)
4
+ return [] unless array.is_a?(Array)
5
+
5
6
  array[1..-1] || []
6
7
  end
7
8
  end
data/lib/rudash/take.rb CHANGED
@@ -1,12 +1,13 @@
1
1
  module Rudash
2
2
  module Take
3
3
  def take(array, *rest_args)
4
- return [] if !self.is_array?(array)
4
+ return [] unless self.is_array?(array)
5
+
5
6
  count = self.head(rest_args) || 1
6
-
7
+
7
8
  begin
8
9
  return array.take(count)
9
- rescue
10
+ rescue ArgumentError
10
11
  return []
11
12
  end
12
13
  end
data/lib/rudash/union.rb CHANGED
@@ -1,17 +1,18 @@
1
1
  module Rudash
2
2
  module Union
3
3
  def union(*values)
4
-
5
- union_reducer = -> (acc, current) {
4
+
5
+ union_reducer = ->(acc, current) {
6
6
  return acc if !current.is_a?(Array) || !acc.is_a?(Array)
7
+
7
8
  acc | current
8
9
  }
9
-
10
- is_array = -> (value) { value.is_a?(Array) }
11
-
10
+
11
+ is_array = ->(value) { value.is_a?(Array) }
12
+
12
13
  arr_values = self.filter(values, is_array)
13
14
  head = self.head(arr_values)
14
-
15
+
15
16
  self.reduce(arr_values, union_reducer, head) || []
16
17
  end
17
18
  end
data/lib/rudash/unset.rb CHANGED
@@ -2,15 +2,15 @@ module Rudash
2
2
  module Unset
3
3
  def unset(object, path)
4
4
  return object if !object.is_a?(Hash) && !object.is_a?(Array)
5
-
5
+
6
6
  *initial_path, last = Rudash::PathResolver.resolve(path)
7
-
7
+
8
8
  last_parent = self.get(object, initial_path)
9
-
9
+
10
10
  case last_parent
11
11
  when Array
12
- return false if !Rudash::Utils.match_number?(last)
13
-
12
+ return false unless Rudash::Utils.match_number?(last)
13
+
14
14
  last_key = last.to_i
15
15
  if last_key > 0 && last_key < last_parent.length
16
16
  last_parent.delete_at(last_key)
data/lib/rudash/update.rb CHANGED
@@ -2,8 +2,8 @@ module Rudash
2
2
  module Update
3
3
  def update(object, path, *rest_args)
4
4
  updater_fn = self.head(rest_args) || self.method(:identity)
5
- return object if !Rudash::Utils.is_function?(updater_fn)
6
-
5
+ return object unless Rudash::Utils.is_function?(updater_fn)
6
+
7
7
  current_value = self.get(object, path)
8
8
  self.set(object, path, Rudash::DynamicArgsCount.call(updater_fn, current_value))
9
9
  object
@@ -1,7 +1,8 @@
1
1
  module Rudash
2
2
  module Without
3
3
  def without(array, *values)
4
- return [] if !array.is_a?(Array)
4
+ return [] unless array.is_a?(Array)
5
+
5
6
  self.difference(array, values)
6
7
  end
7
8
  end
data/lib/rudash.rb CHANGED
@@ -62,7 +62,7 @@ require_relative './utils/nested_path_creator.rb'
62
62
  require_relative './utils/chain_wrapper.rb'
63
63
 
64
64
  # This is the exposed Gem class that contains all Rudash methods.
65
- # New methods can use already implemented methods in the library by refering to "self"
65
+ # New methods can use already implemented methods by refering to "self"
66
66
  # in the method if and only if the method get extended into the R_ class.
67
67
  class R_
68
68
  extend Rudash::Map
@@ -1,16 +1,14 @@
1
1
  module Rudash
2
2
  module ChainUtils
3
3
  class ChainWrapper
4
+ attr_reader :value
5
+
4
6
  def initialize(value, r_)
5
7
  @value = value
6
8
  @r_ = r_
7
9
  end
8
-
9
- def value
10
- @value
11
- end
12
-
13
- def method_missing(method_name, *args, &block)
10
+
11
+ def method_missing(method_name, *args, &_block)
14
12
  result = @r_.public_send(method_name, @value, *args)
15
13
  self.class.new(result, @r_)
16
14
  rescue NameError
@@ -7,13 +7,13 @@
7
7
  module Rudash
8
8
  module DynamicArgsCount
9
9
  def self.call(func, *args)
10
- begin
11
- return func.(*args)
12
- rescue ArgumentError => e
13
- raise ArgumentError.new('Argument Error') if args.size == 0
14
- *initial, last = args
15
- return self.call(func, *initial)
16
- end
10
+ func.call(*args)
11
+
12
+ rescue ArgumentError
13
+ raise ArgumentError.new('Argument Error') if args.size.zero?
14
+
15
+ *initial, _last = args
16
+ self.call(func, *initial)
17
17
  end
18
18
  end
19
19
  end
data/lib/utils/index.rb CHANGED
@@ -3,14 +3,15 @@
3
3
  module Rudash
4
4
  module Utils
5
5
  def self.match_number?(str)
6
- return false if !str.is_a?(String)
6
+ return false unless str.is_a?(String)
7
+
7
8
  str.match(/^(\d)+$/)
8
9
  end
9
-
10
+
10
11
  def self.is_function?(func)
11
12
  func.is_a?(Proc) || func.is_a?(Method)
12
13
  end
13
-
14
+
14
15
  def self.force_reverse(collection)
15
16
  case collection
16
17
  when Array then collection.reverse
@@ -10,22 +10,24 @@ module Rudash
10
10
  def self.create_path_if_not_exist(object, resolved_path)
11
11
  path = R_.head(resolved_path)
12
12
  return nil if !resolved_path.is_a?(Array) || R_.is_nil?(path)
13
-
13
+
14
14
  path_key = Utils.match_number?(path) ? path.to_i : path.to_sym
15
15
  rest_paths = R_.tail(resolved_path)
16
16
  next_path = R_.head(rest_paths)
17
17
  value = R_.get(object, path)
18
-
18
+
19
19
  if R_.is_nil?(value) || (!value.is_a?(Hash) && !value.is_a?(Array))
20
- # If the next path item is numeric (index) then we want to create an array otherwise we create a hash
20
+ # If the next path item is numeric (index)
21
+ # then we want to create an array otherwise we create a hash
21
22
  if next_path && Utils.match_number?(next_path)
22
23
  object[path_key] = []
23
24
  else
24
25
  object[path_key] = {}
25
26
  end
26
27
  end
27
-
28
- # Do the same recursively for next path until getting to the last path item
28
+
29
+ # Do the same recursively for next path
30
+ # until getting to the last path item
29
31
  self.create_path_if_not_exist(
30
32
  R_.get(object, path),
31
33
  rest_paths
@@ -9,16 +9,16 @@ module Rudash
9
9
  module PathResolver
10
10
  def self.resolve(path)
11
11
  normalized_path = path
12
-
12
+
13
13
  if normalized_path.is_a?(Array)
14
- normalized_path = normalized_path.join('.')
14
+ normalized_path = normalized_path.join('.')
15
15
  end
16
-
17
- filter_not_empty = -> (value) {
16
+
17
+ filter_not_empty = ->(value) {
18
18
  value != ''
19
19
  }
20
-
21
- splitted_hash = R_.filter(
20
+
21
+ R_.filter(
22
22
  normalized_path.split(/[.\[\]]/),
23
23
  filter_not_empty
24
24
  )
@@ -7,46 +7,46 @@ require_relative '../rudash'
7
7
  module Rudash
8
8
  module SubsetDeepMatch
9
9
  def self.subset_deep_match?
10
- subset_matcher = -> (slice, collection) {
10
+ subset_matcher = ->(slice, collection) {
11
11
  match = true
12
-
12
+
13
13
  # If was called with two arrays then the logic will be to
14
14
  # check if every "slice" items exist somehow in the collection
15
15
  # without any order consideration.
16
- if (slice.is_a?(Array) && collection.is_a?(Array))
17
- return R_.every?(slice, -> (sliceVal) {
18
- R_.some?(collection, -> (collectionVal) {
19
- self.subset_deep_match?.(sliceVal, collectionVal)
20
- })
21
- })
22
- end
23
-
24
- begin
25
- R_.each(collection, -> (v) {
26
- R_.each(slice, -> (value, key) {
27
- if (value.is_a?(Hash) && collection[key].is_a?(Hash))
28
- match &= self.subset_deep_match?.(value, collection[key])
29
- elsif (value.is_a?(Array) && collection[key].is_a?(Array))
30
- match &= self.subset_deep_match?.(value, collection[key])
31
- elsif (value != collection[key])
32
- match = false
33
- end
34
- })
35
-
36
- # That was done for performance manners since
37
- # R_.each don't stop when returning false from the proc
38
- # so we force it to stop by throwing an exception that we catch later
39
- # It's the same hack for JavaScript forEach function.
40
- raise if match == false
41
- })
42
- rescue
43
- return false
44
- end
45
-
46
- match
47
- }
48
-
49
- subset_matcher.curry
50
- end
51
- end
16
+ if slice.is_a?(Array) && collection.is_a?(Array)
17
+ return R_.every?(slice, ->(sliceVal) {
18
+ R_.some?(collection, ->(collectionVal) {
19
+ self.subset_deep_match?.call(sliceVal, collectionVal)
20
+ })
21
+ })
22
+ end
23
+
24
+ begin
25
+ R_.each(collection, ->(_v) {
26
+ R_.each(slice, ->(value, key) {
27
+ if value.is_a?(Hash) && collection[key].is_a?(Hash)
28
+ match &= self.subset_deep_match?.call(value, collection[key])
29
+ elsif value.is_a?(Array) && collection[key].is_a?(Array)
30
+ match &= self.subset_deep_match?.call(value, collection[key])
31
+ elsif value != collection[key]
32
+ match = false
33
+ end
34
+ })
35
+
36
+ # That was done for performance manners since
37
+ # R_.each don't stop when returning false from the proc
38
+ # so we force it to stop by throwing an exception that we catch later
39
+ # It's the same hack for JavaScript forEach function.
40
+ raise if match == false
41
+ })
42
+ rescue
43
+ return false
52
44
  end
45
+
46
+ match
47
+ }
48
+
49
+ subset_matcher.curry
50
+ end
51
+ end
52
+ end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rudash
2
- VERSION = '2.17.3'
2
+ VERSION = '2.17.4'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rudash
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.17.3
4
+ version: 2.17.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Islam Attrash