citero 1.0.0.alpha5 → 1.0.0.beta

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
  SHA1:
3
- metadata.gz: 2ad3b53896c3eb9cd5781a598794877bf63cc7a1
4
- data.tar.gz: 2c8952c07311e3a8665fd273acb049129a0d9f17
3
+ metadata.gz: f69a32bade78dc3f1bcaf1d1c5af83af1e18fc0c
4
+ data.tar.gz: 6df35949a611cb7fef724925f0136519c955ae1f
5
5
  SHA512:
6
- metadata.gz: e4eed240b48f8210f9d1cb177058d98d0104cc7396bf0bec0f30f71fe8e90a32e0eafd5df7e3986c1a357349da2bee56b8b6dacf92cea2e4fbf547750b44bf9c
7
- data.tar.gz: 90819b5af6ae0dac5f001965da5a541b1d3491b05d2d9a88fa183186d97aa2a1c74230c766ae376c4439ce0ecdadbe4c7ea7417d1ec9edfa406964cb2507490d
6
+ metadata.gz: cbd3109b42d2b1bd950a51d9cd027670c296ec3e75716328b624152f42372ca5def87ca06d9704951055097afb25f26f46869cfc1591e71947f8309158a81b74
7
+ data.tar.gz: 0da288ed0cc0d8f0129b23d6ae9819f5ac12b75bc196e840128d3db7985a347728d6180ad0e3aca43a24517c0abcc0830d3972e56716489dc1735a3ddfa970cc
@@ -1,7 +1,7 @@
1
1
  module Citero
2
2
  class CSF
3
3
  extend Forwardable
4
- def_delegators :@data, :[], :[]=, :size, :each, :inspect, :to_s
4
+ def_delegators :@data, :[], :size, :each, :inspect, :to_s
5
5
  attr_reader :data
6
6
  alias_method :csf, :data
7
7
 
@@ -20,6 +20,14 @@ module Citero
20
20
  def []=(key,value)
21
21
  @data[key] = element_or_list(@data[key], value)
22
22
  end
23
+
24
+ def keys
25
+ @data.keys.collect {|key| rubyize(key)}
26
+ end
27
+
28
+ def respond_to?(method_sym, *arguments, &block)
29
+ keys.include?(rubyize(method_sym.to_s)) || super(method_sym, *arguments, &block)
30
+ end
23
31
 
24
32
  private
25
33
  def element_or_list(old_value, new_value)
@@ -29,5 +37,22 @@ module Citero
29
37
  return temp_arr.first if temp_arr.size == 1
30
38
  return temp_arr
31
39
  end
40
+
41
+ def method_missing(method_sym, *arguments, &block)
42
+ super unless respond_to?(method_sym, *arguments, &block)
43
+ return @data.select {|k,v| rubyize(k).eql?(method_sym)}.first.last
44
+ end
45
+
46
+ def rubyize(name)
47
+ name.
48
+ to_s.
49
+ gsub(/::/, '/').
50
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
51
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
52
+ tr("-", "_").
53
+ downcase.
54
+ to_sym
55
+ end
56
+
32
57
  end
33
58
  end
@@ -1,3 +1,3 @@
1
1
  module Citero
2
- VERSION = "1.0.0.alpha5"
2
+ VERSION = "1.0.0.beta"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: citero
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.alpha5
4
+ version: 1.0.0.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - hab278