ducktape 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,15 +7,10 @@ module Ducktape
7
7
 
8
8
  module Bindable
9
9
  module ClassMethods
10
- def inherited(child)
11
- super
12
- child.instance_eval { @bindings_metadata = {} }
13
- end
14
-
15
10
  def bindable(name, options = {})
16
11
  name = name.to_s
17
12
  m = BindableAttributeMetadata.new(metadata(name) || name, options)
18
- @bindings_metadata[name] = m
13
+ bindings_metadata[name] = m
19
14
  define_method name, ->() { get_value(name) } unless options[:access] == :writeonly
20
15
  define_method "#{name}=", ->(value) { set_value(name, value) } unless options[:access] == :readonly
21
16
  nil
@@ -24,17 +19,21 @@ module Ducktape
24
19
  #TODO improve metadata search
25
20
  def metadata(name)
26
21
  name = name.to_s
27
- m = @bindings_metadata[name]
22
+ m = bindings_metadata[name]
28
23
  return m if m
29
24
  return nil unless superclass.respond_to?(:metadata) && (m = superclass.metadata(name))
30
25
  m = m.dup
31
- @bindings_metadata[name] = m
26
+ bindings_metadata[name] = m
27
+ end
28
+
29
+ protected
30
+ def bindings_metadata
31
+ @bindings_metadata ||= {}
32
32
  end
33
33
  end
34
34
 
35
35
  def self.included(base)
36
36
  base.extend(ClassMethods)
37
- base.instance_eval { @bindings_metadata = {} }
38
37
  end
39
38
 
40
39
  def self.extended(_)
@@ -78,7 +77,7 @@ module Ducktape
78
77
  end
79
78
 
80
79
  def get_bindable_attr(name)
81
- raise AttributeNotDefinedError.new(self.class, name.to_s) unless metadata(name)
80
+ raise AttributeNotDefinedError.new(self.class, name.to_s) unless self.class.metadata(name)
82
81
  bindable_attrs[name.to_s] ||= BindableAttribute.new(self, name)
83
82
  end
84
83
  end
@@ -0,0 +1,5 @@
1
+ module Ducktape
2
+ module HookableArray
3
+
4
+ end
5
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ducktape
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -26,6 +26,7 @@ files:
26
26
  - lib/ducktape/bindable_attribute_metadata.rb
27
27
  - lib/ducktape/binding_source.rb
28
28
  - lib/ducktape/hookable.rb
29
+ - lib/ducktape/hookable_array.rb
29
30
  homepage: https://github.com/SilverPhoenix99/ducktape
30
31
  licenses: []
31
32
  post_install_message: