mug 0.5.3 → 0.5.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mug/and-or.rb +26 -26
  3. data/lib/mug/any-and-all.rb +16 -16
  4. data/lib/mug/apply.rb +37 -37
  5. data/lib/mug/array/extend.rb +43 -43
  6. data/lib/mug/array/minus.rb +32 -32
  7. data/lib/mug/bool.rb +71 -71
  8. data/lib/mug/clamp.rb +35 -35
  9. data/lib/mug/counts.rb +27 -27
  10. data/lib/mug/fragile-method-chain.rb +42 -42
  11. data/lib/mug/hash/map.rb +75 -75
  12. data/lib/mug/hash/operations.rb +47 -47
  13. data/lib/mug/iterator/for.rb +7 -7
  14. data/lib/mug/iterator/method.rb +7 -7
  15. data/lib/mug/iterator_c.rb +14 -14
  16. data/lib/mug/loop-with.rb +30 -29
  17. data/lib/mug/matchdata/each.rb +40 -40
  18. data/lib/mug/matchdata/hash.rb +29 -29
  19. data/lib/mug/maybe.rb +33 -33
  20. data/lib/mug/negativity.rb +20 -20
  21. data/lib/mug/not.rb +6 -6
  22. data/lib/mug/rexproc.rb +6 -6
  23. data/lib/mug/self.rb +31 -31
  24. data/lib/mug/to_h.rb +2 -2
  25. data/lib/mug/top.rb +100 -100
  26. data/test/test-and-or.rb +32 -32
  27. data/test/test-any-and-all.rb +19 -19
  28. data/test/test-apply.rb +47 -47
  29. data/test/test-array-extend.rb +54 -54
  30. data/test/test-array-minus.rb +11 -11
  31. data/test/test-bool.rb +48 -48
  32. data/test/test-clamp.rb +42 -42
  33. data/test/test-counts.rb +21 -21
  34. data/test/test-fragile-method-chain.rb +56 -56
  35. data/test/test-hashmap.rb +14 -14
  36. data/test/test-hashop.rb +47 -47
  37. data/test/test-iterator-for.rb +12 -12
  38. data/test/test-loop-with.rb +117 -66
  39. data/test/test-matchdata_each.rb +50 -50
  40. data/test/test-matchdata_hash.rb +40 -40
  41. data/test/test-maybe.rb +76 -76
  42. data/test/test-negativity.rb +40 -40
  43. data/test/test-not.rb +53 -53
  44. data/test/test-rexproc.rb +6 -6
  45. data/test/test-self.rb +21 -21
  46. data/test/test-tau.rb +12 -12
  47. data/test/test-top.rb +100 -100
  48. metadata +4 -4
@@ -2,13 +2,13 @@
2
2
  require_relative '../iterator_c'
3
3
 
4
4
  class Object
5
- #
6
- # Creates a new Iterator for the method named +meth+
7
- #
8
- def iter_for meth, *args
9
- Iterator.new self, meth, *args
10
- end
11
- alias :to_iter :iter_for
5
+ #
6
+ # Creates a new Iterator for the method named +meth+
7
+ #
8
+ def iter_for meth, *args
9
+ Iterator.new self, meth, *args
10
+ end
11
+ alias :to_iter :iter_for
12
12
  end
13
13
 
14
14
  =begin
@@ -2,13 +2,13 @@
2
2
  require_relative '../iterator_c'
3
3
 
4
4
  class Method
5
- #
6
- # Creates a new Iterator for this method, initially invoked
7
- # on this method's receiver.
8
- #
9
- def to_iter *args
10
- Iterator.new receiver, name, *args
11
- end
5
+ #
6
+ # Creates a new Iterator for this method, initially invoked
7
+ # on this method's receiver.
8
+ #
9
+ def to_iter *args
10
+ Iterator.new receiver, name, *args
11
+ end
12
12
  end
13
13
 
14
14
  =begin
@@ -10,20 +10,20 @@
10
10
  # 0.iter_for(:next).take(5) #=> [0,1,2,3,4]
11
11
  #
12
12
  class Iterator < Enumerator
13
- #
14
- # Creates a new Iterator for method +meth+, to be
15
- # called initially on object +obj+.
16
- #
17
- # All method calls will have +args+ as parameters.
18
- #
19
- def initialize obj, meth, *args
20
- super() do |y|
21
- loop do
22
- y << obj
23
- obj = obj.send(meth, *args)
24
- end
25
- end
26
- end
13
+ #
14
+ # Creates a new Iterator for method +meth+, to be
15
+ # called initially on object +obj+.
16
+ #
17
+ # All method calls will have +args+ as parameters.
18
+ #
19
+ def initialize obj, meth, *args
20
+ super() do |y|
21
+ loop do
22
+ y << obj
23
+ obj = obj.send(meth, *args)
24
+ end
25
+ end
26
+ end
27
27
  end
28
28
 
29
29
  =begin
@@ -1,34 +1,35 @@
1
1
 
2
2
  module Kernel
3
- #
4
- # Repeatedly executes the block, yielding the current iteration
5
- # count, which starts from +offset+. If no block is given, returns
6
- # a new Enumerator that includes the iteration count, starting
7
- # from +offset+
8
- #
9
- def loop_with_index(offset=0)
10
- return c=enum_for(:loop_with_index, offset) unless block_given?
11
- c = 0 + offset
12
- while true
13
- yield c
14
- c += 1
15
- end
16
- rescue StopIteration
17
- ensure
18
- return c
19
- end
3
+ #
4
+ # Repeatedly executes the block, yielding the current iteration
5
+ # count, which starts from +offset+. If no block is given, returns
6
+ # an Enumerator.
7
+ #
8
+ def loop_with_index(offset=0)
9
+ return c=enum_for(:loop_with_index, offset) unless block_given?
10
+ c = 0 + offset
11
+ begin
12
+ while true
13
+ yield c
14
+ c += 1
15
+ end
16
+ rescue StopIteration
17
+ end
18
+ c
19
+ end
20
20
 
21
- #
22
- # Repeatedly executes the block, yielding an arbitrary object, +obj+.
23
- #
24
- def loop_with_object(obj)
25
- return obj=enum_for(:loop_with_object, obj) unless block_given?
26
- while true
27
- yield obj
28
- end
29
- rescue StopIteration
30
- ensure
31
- return obj
32
- end
21
+ #
22
+ # Repeatedly executes the block, yielding an arbitrary object, +obj+.
23
+ #
24
+ def loop_with_object(obj)
25
+ return obj=enum_for(:loop_with_object, obj) unless block_given?
26
+ begin
27
+ while true
28
+ yield obj
29
+ end
30
+ rescue StopIteration
31
+ end
32
+ obj
33
+ end
33
34
  end
34
35
 
@@ -1,49 +1,49 @@
1
1
 
2
2
  class MatchData
3
3
 
4
- # Iterates over each capture group in the MatchData object,
5
- # including +$&+ (the entire matched string), yielding the
6
- # captured string.
7
- def each &b
8
- return enum_for(:each) unless block_given?
9
- to_a.each{|v| yield v }
10
- end
4
+ # Iterates over each capture group in the MatchData object,
5
+ # including +$&+ (the entire matched string), yielding the
6
+ # captured string.
7
+ def each &b
8
+ return enum_for(:each) unless block_given?
9
+ to_a.each{|v| yield v }
10
+ end
11
11
 
12
- # Iterates over each capture group in the MatchData object,
13
- # yielding the capture position and captured string.
14
- #
15
- # The capture positions are either all Strings or all Integers,
16
- # depending on whether the original Regexp had named capture
17
- # groups or not.
18
- def each_capture &b
19
- return enum_for(:each_capture) unless block_given?
20
- if names.empty?
21
- captures.each_with_index{|v,i| yield i+1, v }
22
- else
23
- names.each{|n| yield n, self[n] }
24
- end
25
- end
12
+ # Iterates over each capture group in the MatchData object,
13
+ # yielding the capture position and captured string.
14
+ #
15
+ # The capture positions are either all Strings or all Integers,
16
+ # depending on whether the original Regexp had named capture
17
+ # groups or not.
18
+ def each_capture &b
19
+ return enum_for(:each_capture) unless block_given?
20
+ if names.empty?
21
+ captures.each_with_index{|v,i| yield i+1, v }
22
+ else
23
+ names.each{|n| yield n, self[n] }
24
+ end
25
+ end
26
26
 
27
- # Iterates over each named capture group in the MatchData object,
28
- # yielding the capture name and string.
29
- def each_named_capture &b
30
- return enum_for(:each_named_capture) unless block_given?
31
- names.each{|n| yield n, self[n] }
32
- end
27
+ # Iterates over each named capture group in the MatchData object,
28
+ # yielding the capture name and string.
29
+ def each_named_capture &b
30
+ return enum_for(:each_named_capture) unless block_given?
31
+ names.each{|n| yield n, self[n] }
32
+ end
33
33
 
34
- # Iterates over each positional capture group in the MatchData object,
35
- # yielding the capture position and string.
36
- #
37
- # If +include_names+ is given and true, treats named captures
38
- # as positional captures.
39
- #
40
- # WARNING: if mixing named and positional captures, no positional
41
- # captures will be available using this method!
42
- def each_positional_capture include_names: false, &b
43
- return enum_for(:each_positional_capture, include_names: include_names) unless block_given?
44
- return unless names.empty? || include_names
45
- captures.each_with_index{|v,i| yield i+1, v }
46
- end
34
+ # Iterates over each positional capture group in the MatchData object,
35
+ # yielding the capture position and string.
36
+ #
37
+ # If +include_names+ is given and true, treats named captures
38
+ # as positional captures.
39
+ #
40
+ # WARNING: if mixing named and positional captures, no positional
41
+ # captures will be available using this method!
42
+ def each_positional_capture include_names: false, &b
43
+ return enum_for(:each_positional_capture, include_names: include_names) unless block_given?
44
+ return unless names.empty? || include_names
45
+ captures.each_with_index{|v,i| yield i+1, v }
46
+ end
47
47
 
48
48
  end
49
49
 
@@ -1,35 +1,35 @@
1
1
 
2
2
  class MatchData
3
3
 
4
- # Returns a Hash object of capture position => captured string.
5
- #
6
- # The capture positions are either all Strings or all Integers,
7
- # depending on whether the original Regexp had named capture
8
- # groups or not.
9
- def to_h
10
- if names.empty?
11
- Hash[ captures.each_with_index.map{|v,i| [i+1, v] } ]
12
- else
13
- Hash[ names.map{|n| [n, self[n]] } ]
14
- end
15
- end
16
-
17
- # Returns a Hash object of capture name => captured string.
18
- def named_captures
19
- Hash[ names.map{|n| [n, self[n]] } ]
20
- end
21
-
22
- # Returns a Hash object of capture position => captured string.
23
- #
24
- # If +include_names+ is given and true, treats named captures
25
- # as positional captures.
26
- #
27
- # WARNING: if mixing named and positional captures, no positional
28
- # captures will be available using this method!
29
- def positional_captures include_names: false
30
- return {} unless names.empty? || include_names
31
- Hash[ captures.each_with_index.map{|v,i| [i+1, v] } ]
32
- end
4
+ # Returns a Hash object of capture position => captured string.
5
+ #
6
+ # The capture positions are either all Strings or all Integers,
7
+ # depending on whether the original Regexp had named capture
8
+ # groups or not.
9
+ def to_h
10
+ if names.empty?
11
+ Hash[ captures.each_with_index.map{|v,i| [i+1, v] } ]
12
+ else
13
+ Hash[ names.map{|n| [n, self[n]] } ]
14
+ end
15
+ end
16
+
17
+ # Returns a Hash object of capture name => captured string.
18
+ def named_captures
19
+ Hash[ names.map{|n| [n, self[n]] } ]
20
+ end
21
+
22
+ # Returns a Hash object of capture position => captured string.
23
+ #
24
+ # If +include_names+ is given and true, treats named captures
25
+ # as positional captures.
26
+ #
27
+ # WARNING: if mixing named and positional captures, no positional
28
+ # captures will be available using this method!
29
+ def positional_captures include_names: false
30
+ return {} unless names.empty? || include_names
31
+ Hash[ captures.each_with_index.map{|v,i| [i+1, v] } ]
32
+ end
33
33
 
34
34
  end
35
35
 
@@ -3,42 +3,42 @@
3
3
  # Invokes methods on a wrapped object, if that object is truthy.
4
4
  #
5
5
  class MaybeDelegator
6
- #
7
- # Creates a new MaybeDelegator, wrapping +o+
8
- #
9
- def initialize o
10
- @o = o
11
- end
12
-
13
- #
14
- # Returns this MaybeDelegator object.
15
- #
16
- def maybe
17
- self
18
- end
19
-
20
- # Calls the method on +@o+ if it's truthy.
21
- def method_missing *a, &b #:nodoc:
22
- @o && @o.send(*a, &b)
23
- end
6
+ #
7
+ # Creates a new MaybeDelegator, wrapping +o+
8
+ #
9
+ def initialize o
10
+ @o = o
11
+ end
12
+
13
+ #
14
+ # Returns this MaybeDelegator object.
15
+ #
16
+ def maybe
17
+ self
18
+ end
19
+
20
+ # Calls the method on +@o+ if it's truthy.
21
+ def method_missing *a, &b #:nodoc:
22
+ @o && @o.send(*a, &b)
23
+ end
24
24
  end
25
25
 
26
26
  class Object
27
- #
28
- # Do something if this object is truthy.
29
- #
30
- # If a block is given, it is executed in the context of this
31
- # object, iff this object is neither +nil+ nor +false+.
32
- #
33
- # If no block is given, returns a MaybeDelegator object.
34
- #
35
- def maybe &b
36
- if b
37
- self && instance_eval(&b)
38
- else
39
- MaybeDelegator.new(self)
40
- end
41
- end
27
+ #
28
+ # Do something if this object is truthy.
29
+ #
30
+ # If a block is given, it is executed in the context of this
31
+ # object, iff this object is neither +nil+ nor +false+.
32
+ #
33
+ # If no block is given, returns a MaybeDelegator object.
34
+ #
35
+ def maybe &b
36
+ if b
37
+ self && instance_eval(&b)
38
+ else
39
+ MaybeDelegator.new(self)
40
+ end
41
+ end
42
42
  end
43
43
 
44
44
  =begin
@@ -1,33 +1,33 @@
1
1
 
2
2
  class Numeric
3
3
 
4
- if RUBY_VERSION < '2.3'
5
- def negative?
6
- self < 0 ? self : nil
7
- end
4
+ if RUBY_VERSION < '2.3'
5
+ def negative?
6
+ self < 0 ? self : nil
7
+ end
8
8
 
9
- def positive?
10
- self > 0 ? self : nil
11
- end
12
- end
9
+ def positive?
10
+ self > 0 ? self : nil
11
+ end
12
+ end
13
13
 
14
- def nonnegative?
15
- self < 0 ? nil : self
16
- end
14
+ def nonnegative?
15
+ self < 0 ? nil : self
16
+ end
17
17
 
18
- def nonpositive?
19
- self > 0 ? nil : self
20
- end
18
+ def nonpositive?
19
+ self > 0 ? nil : self
20
+ end
21
21
 
22
22
  end
23
23
 
24
24
  class Complex
25
- if RUBY_VERSION < '2.3'
26
- undef :negative?
27
- undef :positive?
28
- end
29
- undef :nonnegative?
30
- undef :nonpositive?
25
+ if RUBY_VERSION < '2.3'
26
+ undef :negative?
27
+ undef :positive?
28
+ end
29
+ undef :nonnegative?
30
+ undef :nonpositive?
31
31
  end
32
32
 
33
33
  =begin
@@ -1,11 +1,11 @@
1
1
 
2
2
  module Kernel
3
- #
4
- # Negate a predicate.
5
- #
6
- def not(*a, &b)
7
- not a.empty? ? (b ? (yield self) : self) : __send__(*a, &b)
8
- end
3
+ #
4
+ # Negate a predicate.
5
+ #
6
+ def not(*a, &b)
7
+ not a.empty? ? (b ? (yield self) : self) : __send__(*a, &b)
8
+ end
9
9
  end
10
10
 
11
11
  =begin