glimmer 0.2.2 → 0.2.3

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