ruby-mext 0.3.2 → 0.4.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: a50b2ea4e861b5af7a1884c120804428ede091b0dcbe9d35e01cc6014f0be862
4
- data.tar.gz: 2c747929953c438a4c2585f50d2f7edfd1d06e05754fc6bf0a60875ec52835a2
3
+ metadata.gz: b0bb3d8e9a4973235835abae5ac1080681ee5306278266b4bd95fd7a56f994ab
4
+ data.tar.gz: 6da306c0548a38983c1f6647fb1b22e14ba3cd666e7d5e1d1d54a2553621c764
5
5
  SHA512:
6
- metadata.gz: 8839eac220b42b7a9a6776d3029a3bd41192bce9ee8363d0962af4a6fe8e9717f9c60da0649909e54ceb0d5fc0bf6052c91b6432de783c06b1536b17d2d6c352
7
- data.tar.gz: afc2de8b2b803492d5774292b6e318e2b19b2eee8c51ea4bb07935a822b8a83fbd085c059b2b5b193eefd68fc2b06149e61c5d3d8427734b69082386bc367141
6
+ metadata.gz: 06b357f6279e2a5e1f458f423bd7f09d17bc9912c532eb376d02d4ce5dfe3a673c5dedc636057ebb75b604c1bce18abe5f2bcb319e4322c5b9547b25bea9205c
7
+ data.tar.gz: 1129e56e0bdbad3f34c5f8d9b99ae5267df5802aa1ff81ac26c814cc31eed6bdf05270662a4e0e5f69a8e2f1a81c62f09b6836a66a70de1465f4e0dfa1431b89
@@ -0,0 +1,37 @@
1
+ class MethodedHash < Hash
2
+
3
+ def initialize(h = {})
4
+ duplicate_hash(h)
5
+ self
6
+ end
7
+
8
+ def []=(key, value)
9
+ common_methodizer(key)
10
+ super
11
+ end
12
+
13
+ private
14
+
15
+ def duplicate_hash(arg)
16
+ arg.each do
17
+ |k, v|
18
+ self[k] = arg[k].dup
19
+ self[k] = self.class.new(v) if v.kind_of?(Hash)
20
+ end
21
+ end
22
+
23
+ def common_methodizer(k)
24
+ methodize(k)
25
+ end
26
+
27
+ def methodize(key)
28
+ nk = normalize_key(key)
29
+ define_singleton_method(nk) { self[key] }
30
+ end
31
+
32
+ def normalize_key(key)
33
+ ek = key.to_s.gsub(/\W/, '_')
34
+ ek.to_sym
35
+ end
36
+
37
+ end
@@ -0,0 +1,14 @@
1
+
2
+ module Mext
3
+ module Ruby
4
+ module Extensions
5
+
6
+ PATH = File.expand_path(File.join('..', 'extensions'), __FILE__)
7
+
8
+ end
9
+ end
10
+ end
11
+
12
+ %w(
13
+ methoded_hash
14
+ ).each { |f| require File.join(Mext::Ruby::Extensions::PATH, f) }
data/lib/ruby-mext.rb CHANGED
@@ -7,5 +7,6 @@ module Mext
7
7
  end
8
8
 
9
9
  %w(
10
+ ruby
10
11
  mext
11
12
  ).each { |f| require File.join(Mext::ROOT, f) }
data/lib/ruby.rb ADDED
@@ -0,0 +1,11 @@
1
+ module Mext
2
+ module Ruby
3
+
4
+ PATH = File.expand_path(File.join('..', 'ruby'), __FILE__)
5
+
6
+ end
7
+ end
8
+
9
+ %w(
10
+ extensions
11
+ ).each { |f| require File.join(Mext::Ruby::PATH, f) }
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Mext
2
- VERSION = "0.3.2"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-mext
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicola Bernardini
@@ -134,6 +134,9 @@ files:
134
134
  - lib/mext/numeric/pitch_fork.rb
135
135
  - lib/mext/numeric/rrand.rb
136
136
  - lib/ruby-mext.rb
137
+ - lib/ruby.rb
138
+ - lib/ruby/extensions.rb
139
+ - lib/ruby/extensions/methoded_hash.rb
137
140
  - lib/tasks/clean.rake
138
141
  - lib/tasks/gruff/expon.rake
139
142
  - lib/tasks/gruff/gruff.rake