glimmer 0.2.2 → 0.2.3

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: 4916b9c2b6c19c4afbdb4a49cc586d7c1a12358a94ee5f425b78520227cf3c8f
4
- data.tar.gz: 7ce6d54b43cfecb43fe395ab6a7b39d4db928ad674f9ce26b0635c457a611f91
3
+ metadata.gz: b09d96f8f2a0923f53d0685bdae8743d99d42e2c50294852d3823bbb619ddffc
4
+ data.tar.gz: 50362bdb44afbd375bb580dcffc5f734c1ff372a10bbddbdeb8ec6600f9b8c06
5
5
  SHA512:
6
- metadata.gz: c16290f6cd39289717bd5f2446d2d42a00c1b08298f5d1ddea658e8efaa738cfdfa2e79512fae0ba3120dcb9d07fef946967c3467f28916b91f9171fc147c5cb
7
- data.tar.gz: f51597bec5ef7193ea66f089243b29fc90c0bf406abcb7aa2dc6e1c66f31aefd210c840682c47dbfd1732ebabda0331e95c3f1efd07072df93926fe3493a84ab
6
+ metadata.gz: 27fb9b837708455a6d68e24f8f6a5fdca9c812e1d5b45c9fea379e51365c5a08688ad116276d6b848cb19a29b97b50be6cdfbba36332bca20b7fc0c253b29789
7
+ data.tar.gz: 6cd85c6a1f08d33646e5a105293ed24fef06aecd54ccb82680ddd6e95f701fa0943ccc8370f61e39f58e7d3e531f8154e5889ddc5072bb3b24f3a7518a348a10
data/README.markdown CHANGED
@@ -66,14 +66,14 @@ Please follow these instructions to make the `glimmer` command available on your
66
66
 
67
67
  Run this command to install directly:
68
68
  ```
69
- jgem install glimmer -v 0.2.2
69
+ jgem install glimmer -v 0.2.3
70
70
  ```
71
71
 
72
72
  ### Option 2: Bundler
73
73
 
74
74
  Add the following to `Gemfile`:
75
75
  ```
76
- gem 'glimmer', '~> 0.2.2'
76
+ gem 'glimmer', '~> 0.2.3'
77
77
  ```
78
78
 
79
79
  And, then run:
@@ -26,16 +26,9 @@ class ModelBinding
26
26
  if reduced_model.nil?
27
27
  nil
28
28
  else
29
- if nested_model_property_name.start_with?('[')
30
- property_method = '[]'
31
- property_argument = nested_model_property_name[1...-1]
32
- property_argument = property_argument.to_i if property_argument.match(/\d+/)
33
- new_reduced_model = reduced_model.send(property_method, property_argument)
34
- else
35
- new_reduced_model = reduced_model.send(nested_model_property_name)
29
+ invoke_property_reader(reduced_model, nested_model_property_name).tap do |new_reduced_model|
30
+ @nested_models << new_reduced_model
36
31
  end
37
- @nested_models << new_reduced_model
38
- new_reduced_model
39
32
  end
40
33
  end
41
34
  @nested_models
@@ -67,7 +60,7 @@ class ModelBinding
67
60
  nested_property_names[0...-1]
68
61
  end
69
62
  def nested_property?
70
- property_name_expression.include?(".")
63
+ property_name_expression.match(/[.\[]/)
71
64
  end
72
65
  def property_name_expression
73
66
  @property_name_expression
@@ -92,7 +85,7 @@ class ModelBinding
92
85
  nested_property_observers = nested_property_observers_for(observer)
93
86
  nested_models.zip(nested_property_names).each do |model, property_name|
94
87
  unless model.nil?
95
- if property_name.start_with?('[')
88
+ if property_indexed?(property_name)
96
89
  model.extend ObservableArray unless model.is_a?(ObservableArray)
97
90
  model.add_array_observer(nested_property_observers[property_name]) unless model.has_array_observer?(nested_property_observers[property_name])
98
91
  else
@@ -109,10 +102,10 @@ class ModelBinding
109
102
  def update(value)
110
103
  return if model.nil?
111
104
  converted_value = @@property_type_converters[@property_type].call(value)
112
- model.send(property_name + "=", converted_value) unless evaluate_property == converted_value
105
+ invoke_property_writer(model, "#{property_name}=", converted_value) unless evaluate_property == converted_value
113
106
  end
114
107
  def evaluate_property
115
- model.send(property_name) unless model.nil?
108
+ invoke_property_reader(model, property_name) unless model.nil?
116
109
  end
117
110
  def evaluate_options_property
118
111
  model.send(property_name + "_options") unless model.nil?
@@ -120,4 +113,27 @@ class ModelBinding
120
113
  def options_property_name
121
114
  self.property_name + "_options"
122
115
  end
116
+ def property_indexed?(property_expression)
117
+ property_expression.start_with?('[')
118
+ end
119
+ def invoke_property_reader(object, property_expression)
120
+ if property_indexed?(property_expression)
121
+ property_method = '[]'
122
+ property_argument = property_expression[1...-1]
123
+ property_argument = property_argument.to_i if property_argument.match(/\d+/)
124
+ object.send(property_method, property_argument)
125
+ else
126
+ object.send(property_expression)
127
+ end
128
+ end
129
+ def invoke_property_writer(object, property_expression, value)
130
+ if property_indexed?(property_expression)
131
+ property_method = '[]='
132
+ property_argument = property_expression[1...-2]
133
+ property_argument = property_argument.to_i if property_argument.match(/\d+/)
134
+ object.send(property_method, property_argument, value)
135
+ else
136
+ object.send(property_expression, value)
137
+ end
138
+ end
123
139
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - AndyMaleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-05 00:00:00.000000000 Z
11
+ date: 2020-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement