mug 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,70 +1,70 @@
1
-
2
- #
3
- # Invokes a method chain until one method returns a falsy value.
4
- #
5
- # For example:
6
- #
7
- # a._?.b.c.d._!
8
- # nested_hash._?[:a][:b][:c]._!
9
- #
10
- class FragileMethodChain
11
- #
12
- # Creates a FragileMethodChain which will send its first method to +o+
13
- #
14
- def initialize o
15
- @o = o
16
- @chain = []
17
- end
18
-
19
- #
20
- # Finalises the FragileMethodChain.
21
- #
22
- # The final result will be the first +nil+ or +false+ value
23
- # returned in the chain, or its end result.
24
- #
25
- def _!
26
- @chain.inject(@o) do |o,x|
27
- a,b = x
28
- break o unless o
29
- o.__send__(*a, &b)
30
- end
31
- end
32
-
33
- # Record the method args/block
34
- def method_missing *a, &b #:nodoc:
35
- @chain << [a,b]
36
- self
37
- end
38
-
39
- # Explicitly record :_? as a method in the chain.
40
- def _? #:nodoc:
41
- @chain << [[ :_? ],nil]
42
- self
43
- end
44
- end
45
-
46
- class Object
47
- #
48
- # Begins a FragileMethodChain.
49
- #
50
- def _?
51
- FragileMethodChain.new(self)
52
- end
53
- end
54
-
55
- =begin
56
- Copyright (c) 2013, Matthew Kerwin <matthew@kerwin.net.au>
57
-
58
- Permission to use, copy, modify, and/or distribute this software for any
59
- purpose with or without fee is hereby granted, provided that the above
60
- copyright notice and this permission notice appear in all copies.
61
-
62
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
63
- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
64
- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
65
- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
66
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
67
- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
68
- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
69
- =end
70
-
1
+
2
+ #
3
+ # Invokes a method chain until one method returns a falsy value.
4
+ #
5
+ # For example:
6
+ #
7
+ # a._?.b.c.d._!
8
+ # nested_hash._?[:a][:b][:c]._!
9
+ #
10
+ class FragileMethodChain
11
+ #
12
+ # Creates a FragileMethodChain which will send its first method to +o+
13
+ #
14
+ def initialize o
15
+ @o = o
16
+ @chain = []
17
+ end
18
+
19
+ #
20
+ # Finalises the FragileMethodChain.
21
+ #
22
+ # The final result will be the first +nil+ or +false+ value
23
+ # returned in the chain, or its end result.
24
+ #
25
+ def _!
26
+ @chain.inject(@o) do |o,x|
27
+ a,b = x
28
+ break o unless o
29
+ o.__send__(*a, &b)
30
+ end
31
+ end
32
+
33
+ # Record the method args/block
34
+ def method_missing *a, &b #:nodoc:
35
+ @chain << [a,b]
36
+ self
37
+ end
38
+
39
+ # Explicitly record :_? as a method in the chain.
40
+ def _? #:nodoc:
41
+ @chain << [[ :_? ],nil]
42
+ self
43
+ end
44
+ end
45
+
46
+ class Object
47
+ #
48
+ # Begins a FragileMethodChain.
49
+ #
50
+ def _?
51
+ FragileMethodChain.new(self)
52
+ end
53
+ end
54
+
55
+ =begin
56
+ Copyright (c) 2013, Matthew Kerwin <matthew@kerwin.net.au>
57
+
58
+ Permission to use, copy, modify, and/or distribute this software for any
59
+ purpose with or without fee is hereby granted, provided that the above
60
+ copyright notice and this permission notice appear in all copies.
61
+
62
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
63
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
64
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
65
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
66
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
67
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
68
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
69
+ =end
70
+
@@ -1,2 +1,2 @@
1
- require_relative 'iterator/for'
2
- require_relative 'iterator/method'
1
+ require_relative 'iterator/for'
2
+ require_relative 'iterator/method'
@@ -1,29 +1,29 @@
1
-
2
- require_relative '../iterator_c'
3
-
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
12
- end
13
-
14
- =begin
15
- Copyright (c) 2013, Matthew Kerwin <matthew@kerwin.net.au>
16
-
17
- Permission to use, copy, modify, and/or distribute this software for any
18
- purpose with or without fee is hereby granted, provided that the above
19
- copyright notice and this permission notice appear in all copies.
20
-
21
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
22
- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
23
- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
24
- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
25
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
26
- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
27
- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
28
- =end
29
-
1
+
2
+ require_relative '../iterator_c'
3
+
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
12
+ end
13
+
14
+ =begin
15
+ Copyright (c) 2013, Matthew Kerwin <matthew@kerwin.net.au>
16
+
17
+ Permission to use, copy, modify, and/or distribute this software for any
18
+ purpose with or without fee is hereby granted, provided that the above
19
+ copyright notice and this permission notice appear in all copies.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
22
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
23
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
24
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
25
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
26
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
27
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
28
+ =end
29
+
@@ -1,29 +1,29 @@
1
-
2
- require_relative '../iterator_c'
3
-
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
12
- end
13
-
14
- =begin
15
- Copyright (c) 2013, Matthew Kerwin <matthew@kerwin.net.au>
16
-
17
- Permission to use, copy, modify, and/or distribute this software for any
18
- purpose with or without fee is hereby granted, provided that the above
19
- copyright notice and this permission notice appear in all copies.
20
-
21
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
22
- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
23
- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
24
- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
25
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
26
- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
27
- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
28
- =end
29
-
1
+
2
+ require_relative '../iterator_c'
3
+
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
12
+ end
13
+
14
+ =begin
15
+ Copyright (c) 2013, Matthew Kerwin <matthew@kerwin.net.au>
16
+
17
+ Permission to use, copy, modify, and/or distribute this software for any
18
+ purpose with or without fee is hereby granted, provided that the above
19
+ copyright notice and this permission notice appear in all copies.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
22
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
23
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
24
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
25
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
26
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
27
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
28
+ =end
29
+
@@ -1,44 +1,44 @@
1
-
2
- #
3
- # A special class of Enumerator that repeatedly invokes a method.
4
- #
5
- # Initially the method is send to the given +obj+, but subsequent
6
- # invocations are sent to the result of the previous invocation.
7
- #
8
- # Example:
9
- #
10
- # 0.iter_for(:next).take(5) #=> [0,1,2,3,4]
11
- #
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
27
- end
28
-
29
- =begin
30
- Copyright (c) 2013, Matthew Kerwin <matthew@kerwin.net.au>
31
-
32
- Permission to use, copy, modify, and/or distribute this software for any
33
- purpose with or without fee is hereby granted, provided that the above
34
- copyright notice and this permission notice appear in all copies.
35
-
36
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
37
- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
38
- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
39
- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
40
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
41
- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
42
- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
43
- =end
44
-
1
+
2
+ #
3
+ # A special class of Enumerator that repeatedly invokes a method.
4
+ #
5
+ # Initially the method is send to the given +obj+, but subsequent
6
+ # invocations are sent to the result of the previous invocation.
7
+ #
8
+ # Example:
9
+ #
10
+ # 0.iter_for(:next).take(5) #=> [0,1,2,3,4]
11
+ #
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
27
+ end
28
+
29
+ =begin
30
+ Copyright (c) 2013, Matthew Kerwin <matthew@kerwin.net.au>
31
+
32
+ Permission to use, copy, modify, and/or distribute this software for any
33
+ purpose with or without fee is hereby granted, provided that the above
34
+ copyright notice and this permission notice appear in all copies.
35
+
36
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
37
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
38
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
39
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
40
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
41
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
42
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
43
+ =end
44
+
@@ -1,59 +1,59 @@
1
-
2
- #
3
- # Invokes methods on a wrapped object, if that object is truthy.
4
- #
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
24
- end
25
-
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
42
- end
43
-
44
- =begin
45
- Copyright (c) 2013, Matthew Kerwin <matthew@kerwin.net.au>
46
-
47
- Permission to use, copy, modify, and/or distribute this software for any
48
- purpose with or without fee is hereby granted, provided that the above
49
- copyright notice and this permission notice appear in all copies.
50
-
51
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
52
- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
53
- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
54
- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
55
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
56
- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
57
- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
58
- =end
59
-
1
+
2
+ #
3
+ # Invokes methods on a wrapped object, if that object is truthy.
4
+ #
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
24
+ end
25
+
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
42
+ end
43
+
44
+ =begin
45
+ Copyright (c) 2013, Matthew Kerwin <matthew@kerwin.net.au>
46
+
47
+ Permission to use, copy, modify, and/or distribute this software for any
48
+ purpose with or without fee is hereby granted, provided that the above
49
+ copyright notice and this permission notice appear in all copies.
50
+
51
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
52
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
53
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
54
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
55
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
56
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
57
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
58
+ =end
59
+