as-extensions 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +10 -6
- data/ext/array.rb +19 -18
- metadata +3 -3
data/README.md
CHANGED
@@ -13,12 +13,16 @@ Read the RDoc if you use them.
|
|
13
13
|
|
14
14
|
## How To Install
|
15
15
|
|
16
|
-
1
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
16
|
+
1) Install Jeweler (http://github.com/technicalpickles/jeweler).
|
17
|
+
|
18
|
+
2) Clone the Git repository
|
19
|
+
|
20
|
+
3) Run:
|
21
|
+
|
22
|
+
rake build
|
23
|
+
gem install pkg/*.gem
|
24
|
+
|
25
|
+
4) Add `require 'as-extensions'` to your code.
|
22
26
|
|
23
27
|
## Copyright
|
24
28
|
|
data/ext/array.rb
CHANGED
@@ -18,27 +18,27 @@
|
|
18
18
|
#++
|
19
19
|
|
20
20
|
Array.class_eval do
|
21
|
-
|
21
|
+
|
22
22
|
# Boolean AND of elements
|
23
23
|
def band
|
24
24
|
inject{ |s,x| s && x }
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
# For compatibility purpose.
|
28
28
|
def bmap(&blk)
|
29
29
|
map(&blk).band
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
# Boolean OR of elements
|
33
33
|
def bor
|
34
34
|
inject{ |s,x| s || x }
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
# Call ASE::deepcompact(self)
|
38
38
|
def deepcompact
|
39
39
|
ASE::deepcompact(self)
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
def first=(x)
|
43
43
|
raise IndexError, 'empty array' if empty?
|
44
44
|
self[0] = x
|
@@ -62,60 +62,61 @@ Array.class_eval do
|
|
62
62
|
|
63
63
|
alias :head :first
|
64
64
|
alias :head= :first=
|
65
|
-
|
65
|
+
|
66
66
|
def init
|
67
67
|
self[0..-2]
|
68
68
|
end
|
69
|
-
|
69
|
+
|
70
70
|
def last=(x)
|
71
71
|
raise IndexError, 'empty array' if empty?
|
72
72
|
self[-1] = x
|
73
73
|
end
|
74
|
-
|
74
|
+
|
75
75
|
# Map a function (ie. Method object) to members
|
76
76
|
def map_f(f, *args)
|
77
77
|
self.map{ |x| f.call(self, *args) }
|
78
78
|
end
|
79
|
-
|
79
|
+
|
80
80
|
# Map a method of members to themselves
|
81
81
|
def map_m(sym, *args)
|
82
82
|
self.map{ |x| x.send(sym.to_sym, *args) }
|
83
83
|
end
|
84
|
-
|
84
|
+
|
85
85
|
# In-place version of map_m
|
86
86
|
def map_m!(sym, *args)
|
87
87
|
self.map!{ |x| x.send(sym.to_sym, *args) }
|
88
88
|
end
|
89
|
-
|
89
|
+
|
90
90
|
# Reverse map_m: members are arguments
|
91
91
|
def map_mr(sym, obj, *args)
|
92
92
|
self.map{ |x| obj.send(sym.to_sym, x, *args) }
|
93
93
|
end
|
94
|
-
|
94
|
+
|
95
95
|
# In-place version of map_mr
|
96
96
|
def map_mr!(sym, obj, *args)
|
97
97
|
self.map!{ |x| obj.send(sym.to_sym, x, *args) }
|
98
98
|
end
|
99
|
-
|
99
|
+
|
100
100
|
# Return a random element.
|
101
101
|
def pick(secure=false)
|
102
|
-
|
102
|
+
@secure_random ||= (RUBY_VERSION < "1.9") ? ActiveSupport::SecureRandom : SecureRandom
|
103
|
+
self[secure ? @secure_random.random_number(size) : Kernel.rand(size)]
|
103
104
|
end
|
104
|
-
|
105
|
+
|
105
106
|
def tail
|
106
107
|
self[1..-1] || []
|
107
108
|
end
|
108
|
-
|
109
|
+
|
109
110
|
# See vsum for an example of what this does
|
110
111
|
# Another example: vapply(:to_a) transposes a matrix!
|
111
112
|
def vapply(x)
|
112
113
|
(head||[]).zip(*tail).map_m(x)
|
113
114
|
end
|
114
|
-
|
115
|
+
|
115
116
|
# Vector sum
|
116
117
|
# For instance: [[1,2],[1,3]].vsum => [2,5]
|
117
118
|
def vsum
|
118
119
|
vapply(:sum)
|
119
120
|
end
|
120
|
-
|
121
|
+
|
121
122
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 2
|
9
|
+
version: 0.1.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Pierre Chapuis
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-
|
17
|
+
date: 2011-11-09 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|