ruby-mext 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 89c134d002e5da2d18b28325bd3153d4f3aea0f67a362152b32a984607016538
4
- data.tar.gz: 9b9c21280afa82c51ef4c6f30e8cf82396826b38a617cf7c731f2b1c958e79a1
3
+ metadata.gz: 4b73cba301d8a424b583b1cdf7f7865d70303650f65e1ec369859bfa7fa32eb7
4
+ data.tar.gz: 0aaaf5442309c8bd92e6a5a83c611655fcc3bc87924104ad9bc805f18525d42e
5
5
  SHA512:
6
- metadata.gz: 7e3ed69e38787efd0320ede22d4c3e3cbfe912ea29dd5e042216e8880baf88fa02d2a5d4b2fdb67150bdf884dec42564f7b0be68cc1abcc90d51cf3a98d57f46
7
- data.tar.gz: 4d4c512bebbd0494db0546554f6b0a7dc006b747835b2b6dcee087894fc5d2d754e95885a5c95bc534575531d930cab2c8763c81ad03623eaab437c1c0f9e96f
6
+ metadata.gz: d828a3d2fa1589b342c6f2ad981299e4074ee0ba4bfe283c5a65af2ce157a771b39dceb23ba00bc4ec722645c9a90afd4c5fb871e13f8080977f88d2c6874830
7
+ data.tar.gz: 65e5b198dfa246b0a2d3995513aef60e5ee0441e46f78d384dcf6656962e0792f108fec234670f2278a0d8a590ef3a69236a04fa97162f3a1638f7bc95a57aef
@@ -5,5 +5,6 @@ module Mext
5
5
  end
6
6
 
7
7
  %w(
8
+ vectorize
8
9
  choose
9
10
  ).each { |f| require File.join(Mext::ARRAY_PATH, f) }
@@ -0,0 +1,22 @@
1
+ class Array
2
+
3
+ #
4
+ # +vectorization+:
5
+ #
6
+ # extend any +Mext::Numeric+ operation to a vector of values
7
+ # (a la Matlab/Octave)
8
+ #
9
+ #:nodoc:
10
+ Mext::Numeric::VECTORIZABLE_METHODS.each do
11
+ |m|
12
+ msym = m.to_sym
13
+ define_method(msym) { |*args| common_vectorizer(msym, args) }
14
+ end
15
+
16
+ private
17
+
18
+ def common_vectorizer(meth, args)
19
+ self.map { |val| args.empty? ? val.send(meth) : val.send(meth, *args) }
20
+ end
21
+
22
+ end
@@ -1,19 +1,25 @@
1
1
  module Mext
2
+ module Numeric
2
3
 
3
- NUMERIC_PATH = File.join(Mext::PATH, 'numeric')
4
+ PATH = File.join(Mext::PATH, 'numeric')
5
+ VECTORIZABLE_METHODS = %w(
6
+ mtof
7
+ ftom
8
+ ampdb
9
+ dbamp
10
+ pchtom
11
+ mtopch
12
+ cpspch
13
+ pchcps
14
+ gold
15
+ rrand
16
+ )
17
+ NON_VECTORIZABLE_METHODS = %w(
18
+ pitch_fork
19
+ )
20
+ ADDED_METHODS = NON_VECTORIZABLE_METHODS + VECTORIZABLE_METHODS
4
21
 
22
+ end
5
23
  end
6
24
 
7
- %w(
8
- pitch_fork
9
- mtof
10
- ftom
11
- ampdb
12
- dbamp
13
- pchtom
14
- mtopch
15
- cpspch
16
- pchcps
17
- rrand
18
- gold
19
- ).each { |f| require File.join(Mext::NUMERIC_PATH, f) }
25
+ Mext::Numeric::ADDED_METHODS.each { |f| require File.join(Mext::Numeric::PATH, f) }
@@ -1,7 +1,7 @@
1
1
  class Numeric
2
2
 
3
3
  #
4
- # +rrand(upper)+: random number generator
4
+ # +rrand(upper = 0)+: random number generator
5
5
  #
6
6
  # returns a random number in the range receiver-upper bound
7
7
  #
@@ -13,7 +13,7 @@ class Numeric
13
13
  #
14
14
  #:nodoc:
15
15
 
16
- def rrand(upper)
16
+ def rrand(upper = 0.0)
17
17
  lobound = self.to_f
18
18
  rng = upper.to_f - lobound
19
19
 
@@ -24,7 +24,7 @@ end
24
24
 
25
25
  class Integer
26
26
 
27
- def rrand(upper)
27
+ def rrand(upper = 0)
28
28
  res = super(upper)
29
29
  upper.is_a?(Integer) ? res.round : res
30
30
  end
@@ -1,3 +1,3 @@
1
1
  module Mext
2
- VERSION = '0.5.0'
2
+ VERSION = '0.6.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-mext
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicola Bernardini
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-04-25 00:00:00.000000000 Z
11
+ date: 2019-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -116,6 +116,7 @@ files:
116
116
  - lib/mext.rb
117
117
  - lib/mext/array.rb
118
118
  - lib/mext/array/choose.rb
119
+ - lib/mext/array/vectorize.rb
119
120
  - lib/mext/exceptions.rb
120
121
  - lib/mext/math.rb
121
122
  - lib/mext/math/expon.rb