ruby-mext 0.3.2 → 0.4.0

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.
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