binky-builder 0.1.0 → 0.3.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: b6b8eee725400de668f60ad65a6fafcadfb42e7d8bf9a46b368895f836aec738
4
- data.tar.gz: a922b112a9ca5b7ebab7b40354a3aa700db03808442ec0faca0e219c581e442f
3
+ metadata.gz: f533285a0a107689dd61a34d55096c961c2a7da2dfbdbbc534d795685f151c5a
4
+ data.tar.gz: 766e61344f711e5edcad0a4a9b0045077d65ac693fe36574e5452b421cbdc99d
5
5
  SHA512:
6
- metadata.gz: 2519044fbad4ae56d7c2b0c130be0ac3545084e81c3705727d8c1169d1bdbfba3f91bdd1de67a2ef4d121fa71cd658a3f4619e589d60e39a511255ef3e3cf2cc
7
- data.tar.gz: 86a4ea8575f7317140b3cb58488a1f1f39121a28d234a9fc91d09755cfb942feb3e66fad3540e2e4dbb5cd320485c6a15f546ed60eaf416c667e10037de452b1
6
+ metadata.gz: f92dc7ce6c0f1fb36e3ad43726a59e22e83fe21bd757775fe48a40b51bbb5ae7f64df7750362704d544bf192e440078ce39baa6c6a8fa3be6d4fc08279de7129
7
+ data.tar.gz: c7fdeaeddd10924184fd95c909c1d962815ea0a51a8f02271e3176f11a615ffcfbff330a92cbff4bc0e4b05d9d9fdd177e1e05eadc535246801d02746b6d6b52
@@ -2,8 +2,10 @@
2
2
  <project version="4">
3
3
  <component name="ChangeListManager">
4
4
  <list default="true" id="c1900bce-76f3-4483-9969-b14ec05dbe50" name="Default Changelist" comment="">
5
- <change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
6
- <change beforePath="$PROJECT_DIR$/binky-builder.gemspec" beforeDir="false" afterPath="$PROJECT_DIR$/binky-builder.gemspec" afterDir="false" />
5
+ <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
6
+ <change beforePath="$PROJECT_DIR$/lib/binky/builder.rb" beforeDir="false" afterPath="$PROJECT_DIR$/lib/binky/builder.rb" afterDir="false" />
7
+ <change beforePath="$PROJECT_DIR$/lib/binky/builder/version.rb" beforeDir="false" afterPath="$PROJECT_DIR$/lib/binky/builder/version.rb" afterDir="false" />
8
+ <change beforePath="$PROJECT_DIR$/test/binky/builder_test.rb" beforeDir="false" afterPath="$PROJECT_DIR$/test/binky/builder_test.rb" afterDir="false" />
7
9
  </list>
8
10
  <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
9
11
  <option name="SHOW_DIALOG" value="false" />
@@ -12,68 +14,98 @@
12
14
  <option name="LAST_RESOLUTION" value="IGNORE" />
13
15
  </component>
14
16
  <component name="FileEditorManager">
15
- <leaf>
17
+ <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
16
18
  <file pinned="false" current-in-tab="false">
17
19
  <entry file="file://$PROJECT_DIR$/lib/binky/builder.rb">
18
20
  <provider selected="true" editor-type-id="text-editor">
19
- <state relative-caret-position="754">
20
- <caret line="29" column="24" selection-start-line="29" selection-start-column="9" selection-end-line="29" selection-end-column="24" />
21
+ <state relative-caret-position="373">
22
+ <caret line="88" column="27" lean-forward="true" selection-start-line="88" selection-start-column="27" selection-end-line="88" selection-end-column="27" />
21
23
  </state>
22
24
  </provider>
23
25
  </entry>
24
26
  </file>
25
27
  <file pinned="false" current-in-tab="false">
26
- <entry file="file://$PROJECT_DIR$/lib/binky/builder/builder_helper.rb">
28
+ <entry file="file://$APPLICATION_HOME_DIR$/rubystubs26/string.rb">
27
29
  <provider selected="true" editor-type-id="text-editor">
28
- <state relative-caret-position="26">
29
- <caret line="1" lean-forward="true" selection-start-line="1" selection-end-line="1" />
30
+ <state relative-caret-position="-4057">
31
+ <caret line="1281" column="8" selection-start-line="1281" selection-start-column="8" selection-end-line="1281" selection-end-column="8" />
30
32
  </state>
31
33
  </provider>
32
34
  </entry>
33
35
  </file>
34
36
  <file pinned="false" current-in-tab="false">
37
+ <entry file="file://$APPLICATION_HOME_DIR$/rubystubs26/object.rb">
38
+ <provider selected="true" editor-type-id="text-editor">
39
+ <state relative-caret-position="970">
40
+ <caret line="718" column="8" selection-start-line="718" selection-start-column="8" selection-end-line="718" selection-end-column="8" />
41
+ </state>
42
+ </provider>
43
+ </entry>
44
+ </file>
45
+ <file pinned="false" current-in-tab="true">
35
46
  <entry file="file://$PROJECT_DIR$/lib/binky/builder/version.rb">
36
47
  <provider selected="true" editor-type-id="text-editor">
37
- <state relative-caret-position="104">
38
- <caret line="4" selection-start-line="4" selection-end-line="4" />
48
+ <state relative-caret-position="52">
49
+ <caret line="2" column="20" selection-start-line="2" selection-start-column="20" selection-end-line="2" selection-end-column="20" />
39
50
  </state>
40
51
  </provider>
41
52
  </entry>
42
53
  </file>
43
54
  <file pinned="false" current-in-tab="false">
44
- <entry file="file://$PROJECT_DIR$/.travis.yml">
45
- <provider selected="true" editor-type-id="text-editor" />
55
+ <entry file="file://$PROJECT_DIR$/README.md">
56
+ <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
57
+ <state split_layout="SPLIT">
58
+ <first_editor relative-caret-position="234">
59
+ <caret line="54" column="3" selection-start-line="54" selection-start-column="3" selection-end-line="54" selection-end-column="3" />
60
+ </first_editor>
61
+ <second_editor />
62
+ </state>
63
+ </provider>
46
64
  </entry>
47
65
  </file>
48
- <file pinned="false" current-in-tab="true">
49
- <entry file="file://$PROJECT_DIR$/binky-builder.gemspec">
66
+ <file pinned="false" current-in-tab="false">
67
+ <entry file="file://$PROJECT_DIR$/test/test_helper.rb">
50
68
  <provider selected="true" editor-type-id="text-editor">
51
- <state relative-caret-position="546">
52
- <caret line="21" column="31" lean-forward="true" selection-start-line="21" selection-start-column="31" selection-end-line="21" selection-end-column="31" />
69
+ <state relative-caret-position="104">
70
+ <caret line="4" selection-start-line="4" selection-end-line="4" />
53
71
  </state>
54
72
  </provider>
55
73
  </entry>
56
74
  </file>
57
75
  <file pinned="false" current-in-tab="false">
58
- <entry file="file://$PROJECT_DIR$/LICENSE.txt">
59
- <provider selected="true" editor-type-id="text-editor" />
76
+ <entry file="file://$PROJECT_DIR$/test/binky/builder_test.rb">
77
+ <provider selected="true" editor-type-id="text-editor">
78
+ <state relative-caret-position="191">
79
+ <caret line="44" column="25" selection-start-line="44" selection-start-column="25" selection-end-line="44" selection-end-column="25" />
80
+ </state>
81
+ </provider>
60
82
  </entry>
61
83
  </file>
62
84
  <file pinned="false" current-in-tab="false">
63
- <entry file="file://$PROJECT_DIR$/README.md">
64
- <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
65
- <state split_layout="SPLIT">
66
- <first_editor relative-caret-position="208">
67
- <caret line="8" column="3" lean-forward="true" selection-start-line="8" selection-start-column="3" selection-end-line="8" selection-end-column="3" />
68
- </first_editor>
69
- <second_editor />
85
+ <entry file="file://$APPLICATION_HOME_DIR$/rubystubs26/module.rb">
86
+ <provider selected="true" editor-type-id="text-editor">
87
+ <state relative-caret-position="190">
88
+ <caret line="719" column="33" selection-start-line="719" selection-start-column="18" selection-end-line="719" selection-end-column="33" />
70
89
  </state>
71
90
  </provider>
72
91
  </entry>
73
92
  </file>
74
93
  <file pinned="false" current-in-tab="false">
75
- <entry file="file://$PROJECT_DIR$/Gemfile">
76
- <provider selected="true" editor-type-id="text-editor" />
94
+ <entry file="file://$APPLICATION_HOME_DIR$/rubystubs26/basic_object.rb">
95
+ <provider selected="true" editor-type-id="text-editor">
96
+ <state relative-caret-position="4913">
97
+ <caret line="231" column="8" selection-start-line="231" selection-start-column="8" selection-end-line="231" selection-end-column="8" />
98
+ </state>
99
+ </provider>
100
+ </entry>
101
+ </file>
102
+ <file pinned="false" current-in-tab="false">
103
+ <entry file="file://$USER_HOME$/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/minitest-5.14.1/lib/minitest/test.rb">
104
+ <provider selected="true" editor-type-id="text-editor">
105
+ <state relative-caret-position="147">
106
+ <caret line="198" selection-start-line="198" selection-end-line="198" />
107
+ </state>
108
+ </provider>
77
109
  </entry>
78
110
  </file>
79
111
  </leaf>
@@ -85,6 +117,13 @@
85
117
  </list>
86
118
  </option>
87
119
  </component>
120
+ <component name="FindInProjectRecents">
121
+ <findStrings>
122
+ <find>instance_</find>
123
+ <find>instance_method</find>
124
+ <find>block</find>
125
+ </findStrings>
126
+ </component>
88
127
  <component name="Git.Settings">
89
128
  <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
90
129
  </component>
@@ -92,10 +131,11 @@
92
131
  <option name="CHANGED_PATHS">
93
132
  <list>
94
133
  <option value="$PROJECT_DIR$/lib/binky/builder/builder_helper.rb" />
134
+ <option value="$PROJECT_DIR$/binky-builder.gemspec" />
135
+ <option value="$PROJECT_DIR$/README.md" />
136
+ <option value="$PROJECT_DIR$/test/binky/builder_test.rb" />
95
137
  <option value="$PROJECT_DIR$/lib/binky/builder.rb" />
96
138
  <option value="$PROJECT_DIR$/lib/binky/builder/version.rb" />
97
- <option value="$PROJECT_DIR$/README.md" />
98
- <option value="$PROJECT_DIR$/binky-builder.gemspec" />
99
139
  </list>
100
140
  </option>
101
141
  </component>
@@ -111,8 +151,10 @@
111
151
  </option>
112
152
  </component>
113
153
  <component name="ProjectFrameBounds" extendedState="6">
154
+ <option name="x" value="1920" />
155
+ <option name="y" value="28" />
114
156
  <option name="width" value="1920" />
115
- <option name="height" value="1200" />
157
+ <option name="height" value="1052" />
116
158
  </component>
117
159
  <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
118
160
  <component name="ProjectView">
@@ -145,6 +187,17 @@
145
187
  <item name="binky" type="462c0819:PsiDirectoryNode" />
146
188
  <item name="builder" type="462c0819:PsiDirectoryNode" />
147
189
  </path>
190
+ <path>
191
+ <item name="binky-builder" type="b2602c69:ProjectViewProjectNode" />
192
+ <item name="binky-builder" type="462c0819:PsiDirectoryNode" />
193
+ <item name="test" type="462c0819:PsiDirectoryNode" />
194
+ </path>
195
+ <path>
196
+ <item name="binky-builder" type="b2602c69:ProjectViewProjectNode" />
197
+ <item name="binky-builder" type="462c0819:PsiDirectoryNode" />
198
+ <item name="test" type="462c0819:PsiDirectoryNode" />
199
+ <item name="binky" type="462c0819:PsiDirectoryNode" />
200
+ </path>
148
201
  </expand>
149
202
  <select />
150
203
  </subPane>
@@ -154,6 +207,7 @@
154
207
  </component>
155
208
  <component name="PropertiesComponent">
156
209
  <property name="WebServerToolWindowFactoryState" value="false" />
210
+ <property name="last_opened_file_path" value="$PROJECT_DIR$/../vortrics" />
157
211
  <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
158
212
  <property name="nodejs_npm_path_reset_for_default_project" value="true" />
159
213
  <property name="settings.editor.selected.configurable" value="preferences.lookFeel" />
@@ -170,6 +224,132 @@
170
224
  </list>
171
225
  </option>
172
226
  </component>
227
+ <component name="RunManager" selected="Test::Unit/Shoulda/Minitest.Run test 'builder_test': binky-builder">
228
+ <configuration name="All tests in binky-builder: binky-builder" type="TestUnitRunConfigurationType" factoryName="Test::Unit/Shoulda/Minitest" temporary="true">
229
+ <module name="binky-builder" />
230
+ <predefined_log_file enabled="true" id="RUBY_TESTUNIT" />
231
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-Ilib:test" />
232
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
233
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
234
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
235
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
236
+ <envs>
237
+ <env name="JRUBY_OPTS" value="-X+O" />
238
+ </envs>
239
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="true" />
240
+ <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
241
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" track_test_folders="true" runner="rcov">
242
+ <COVERAGE_PATTERN ENABLED="true">
243
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
244
+ </COVERAGE_PATTERN>
245
+ </EXTENSION>
246
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="$MODULE_DIR$" />
247
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
248
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/{*_test,test_*,*_spec}.rb" />
249
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_METHOD_NAME" VALUE="" />
250
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="ALL_IN_FOLDER" />
251
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
252
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
253
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
254
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_OPTIONS" VALUE="" />
255
+ <method v="2" />
256
+ </configuration>
257
+ <configuration name="All tests in test: binky-builder" type="TestUnitRunConfigurationType" factoryName="Test::Unit/Shoulda/Minitest" temporary="true">
258
+ <module name="binky-builder" />
259
+ <predefined_log_file enabled="true" id="RUBY_TESTUNIT" />
260
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-Ilib:test" />
261
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
262
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
263
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
264
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
265
+ <envs>
266
+ <env name="JRUBY_OPTS" value="-X+O" />
267
+ </envs>
268
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
269
+ <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
270
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" track_test_folders="true" runner="rcov">
271
+ <COVERAGE_PATTERN ENABLED="true">
272
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
273
+ </COVERAGE_PATTERN>
274
+ </EXTENSION>
275
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="$MODULE_DIR$/test" />
276
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
277
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/{*_test,test_*,*_spec}.rb" />
278
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_METHOD_NAME" VALUE="" />
279
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="ALL_IN_FOLDER" />
280
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
281
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
282
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
283
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_OPTIONS" VALUE="" />
284
+ <method v="2" />
285
+ </configuration>
286
+ <configuration name="Run test 'builder_test': binky-builder" type="TestUnitRunConfigurationType" factoryName="Test::Unit/Shoulda/Minitest" temporary="true">
287
+ <module name="binky-builder" />
288
+ <predefined_log_file enabled="true" id="RUBY_TESTUNIT" />
289
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-Ilib:test" />
290
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
291
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
292
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
293
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
294
+ <envs>
295
+ <env name="JRUBY_OPTS" value="-X+O" />
296
+ </envs>
297
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="true" />
298
+ <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
299
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" track_test_folders="true" runner="rcov">
300
+ <COVERAGE_PATTERN ENABLED="true">
301
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
302
+ </COVERAGE_PATTERN>
303
+ </EXTENSION>
304
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
305
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/test/binky/builder_test.rb" />
306
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="" />
307
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_METHOD_NAME" VALUE="" />
308
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
309
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
310
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
311
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
312
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_OPTIONS" VALUE="" />
313
+ <method v="2" />
314
+ </configuration>
315
+ <configuration name="test_using_builder: binky-builder" type="TestUnitRunConfigurationType" factoryName="Test::Unit/Shoulda/Minitest" temporary="true">
316
+ <module name="binky-builder" />
317
+ <predefined_log_file enabled="true" id="RUBY_TESTUNIT" />
318
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-Ilib:test" />
319
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
320
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
321
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
322
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
323
+ <envs>
324
+ <env name="JRUBY_OPTS" value="-X+O" />
325
+ </envs>
326
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="true" />
327
+ <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
328
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" track_test_folders="true" runner="rcov">
329
+ <COVERAGE_PATTERN ENABLED="true">
330
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
331
+ </COVERAGE_PATTERN>
332
+ </EXTENSION>
333
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
334
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/test/binky/builder_test.rb" />
335
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="" />
336
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_METHOD_NAME" VALUE="test_using_builder" />
337
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_METHOD" />
338
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
339
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
340
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
341
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_OPTIONS" VALUE="" />
342
+ <method v="2" />
343
+ </configuration>
344
+ <recent_temporary>
345
+ <list>
346
+ <item itemvalue="Test::Unit/Shoulda/Minitest.Run test 'builder_test': binky-builder" />
347
+ <item itemvalue="Test::Unit/Shoulda/Minitest.All tests in binky-builder: binky-builder" />
348
+ <item itemvalue="Test::Unit/Shoulda/Minitest.All tests in test: binky-builder" />
349
+ <item itemvalue="Test::Unit/Shoulda/Minitest.test_using_builder: binky-builder" />
350
+ </list>
351
+ </recent_temporary>
352
+ </component>
173
353
  <component name="SpringUtil" SPRING_PRE_LOADER_OPTION="true" />
174
354
  <component name="TaskManager">
175
355
  <task active="true" id="Default" summary="Default task">
@@ -178,7 +358,9 @@
178
358
  <option name="number" value="Default" />
179
359
  <option name="presentableId" value="Default" />
180
360
  <updated>1596190242171</updated>
181
- <workItem from="1596190243364" duration="1605000" />
361
+ <workItem from="1596190243364" duration="5305000" />
362
+ <workItem from="1596196456720" duration="5542000" />
363
+ <workItem from="1596439308667" duration="17781000" />
182
364
  </task>
183
365
  <task id="LOCAL-00001" summary="Binky Builder gem initial commit.">
184
366
  <created>1596191104643</created>
@@ -187,35 +369,123 @@
187
369
  <option name="project" value="LOCAL" />
188
370
  <updated>1596191104643</updated>
189
371
  </task>
190
- <option name="localTasksCounter" value="2" />
372
+ <task id="LOCAL-00002" summary="Binky Builder gem initial commit.">
373
+ <created>1596192937723</created>
374
+ <option name="number" value="00002" />
375
+ <option name="presentableId" value="LOCAL-00002" />
376
+ <option name="project" value="LOCAL" />
377
+ <updated>1596192937723</updated>
378
+ </task>
379
+ <task id="LOCAL-00003" summary="Binky Builder gem initial commit.">
380
+ <created>1596194970038</created>
381
+ <option name="number" value="00003" />
382
+ <option name="presentableId" value="LOCAL-00003" />
383
+ <option name="project" value="LOCAL" />
384
+ <updated>1596194970038</updated>
385
+ </task>
386
+ <task id="LOCAL-00004" summary="Binky Builder gem initial commit.">
387
+ <created>1596199181225</created>
388
+ <option name="number" value="00004" />
389
+ <option name="presentableId" value="LOCAL-00004" />
390
+ <option name="project" value="LOCAL" />
391
+ <updated>1596199181225</updated>
392
+ </task>
393
+ <task id="LOCAL-00005" summary="Binky Builder gem initial commit.">
394
+ <created>1596203897529</created>
395
+ <option name="number" value="00005" />
396
+ <option name="presentableId" value="LOCAL-00005" />
397
+ <option name="project" value="LOCAL" />
398
+ <updated>1596203897529</updated>
399
+ </task>
400
+ <task id="LOCAL-00006" summary="Binky Builder gem initial commit.">
401
+ <created>1596442883197</created>
402
+ <option name="number" value="00006" />
403
+ <option name="presentableId" value="LOCAL-00006" />
404
+ <option name="project" value="LOCAL" />
405
+ <updated>1596442883197</updated>
406
+ </task>
407
+ <task id="LOCAL-00007" summary="Binky Builder gem initial commit.">
408
+ <created>1596445109199</created>
409
+ <option name="number" value="00007" />
410
+ <option name="presentableId" value="LOCAL-00007" />
411
+ <option name="project" value="LOCAL" />
412
+ <updated>1596445109199</updated>
413
+ </task>
414
+ <task id="LOCAL-00008" summary="Binky Builder gem initial commit.">
415
+ <created>1596447053126</created>
416
+ <option name="number" value="00008" />
417
+ <option name="presentableId" value="LOCAL-00008" />
418
+ <option name="project" value="LOCAL" />
419
+ <updated>1596447053126</updated>
420
+ </task>
421
+ <task id="LOCAL-00009" summary="Binky Builder gem initial commit.">
422
+ <created>1596447831202</created>
423
+ <option name="number" value="00009" />
424
+ <option name="presentableId" value="LOCAL-00009" />
425
+ <option name="project" value="LOCAL" />
426
+ <updated>1596447831202</updated>
427
+ </task>
428
+ <option name="localTasksCounter" value="10" />
191
429
  <servers />
192
430
  </component>
431
+ <component name="TestHistory">
432
+ <history-entry file="Run_test_'builder_test'__binky-builder - 2020.08.03 at 14h 47m 56s.xml">
433
+ <configuration name="Run test 'builder_test': binky-builder" configurationId="TestUnitRunConfigurationType" />
434
+ </history-entry>
435
+ <history-entry file="Run_test_'builder_test'__binky-builder - 2020.08.03 at 14h 54m 25s.xml">
436
+ <configuration name="Run test 'builder_test': binky-builder" configurationId="TestUnitRunConfigurationType" />
437
+ </history-entry>
438
+ <history-entry file="Run_test_'builder_test'__binky-builder - 2020.08.03 at 14h 54m 57s.xml">
439
+ <configuration name="Run test 'builder_test': binky-builder" configurationId="TestUnitRunConfigurationType" />
440
+ </history-entry>
441
+ <history-entry file="Run_test_'builder_test'__binky-builder - 2020.08.03 at 14h 55m 26s.xml">
442
+ <configuration name="Run test 'builder_test': binky-builder" configurationId="TestUnitRunConfigurationType" />
443
+ </history-entry>
444
+ <history-entry file="Run_test_'builder_test'__binky-builder - 2020.08.03 at 14h 57m 26s.xml">
445
+ <configuration name="Run test 'builder_test': binky-builder" configurationId="TestUnitRunConfigurationType" />
446
+ </history-entry>
447
+ <history-entry file="Run_test_'builder_test'__binky-builder - 2020.08.03 at 14h 57m 57s.xml">
448
+ <configuration name="Run test 'builder_test': binky-builder" configurationId="TestUnitRunConfigurationType" />
449
+ </history-entry>
450
+ <history-entry file="All_tests_in_test__binky-builder - 2020.08.03 at 15h 10m 49s.xml">
451
+ <configuration name="All tests in test: binky-builder" configurationId="TestUnitRunConfigurationType" />
452
+ </history-entry>
453
+ <history-entry file="All_tests_in_test__binky-builder - 2020.08.03 at 15h 16m 04s.xml">
454
+ <configuration name="All tests in test: binky-builder" configurationId="TestUnitRunConfigurationType" />
455
+ </history-entry>
456
+ <history-entry file="All_tests_in_binky-builder__binky-builder - 2020.08.03 at 15h 17m 03s.xml">
457
+ <configuration name="All tests in binky-builder: binky-builder" configurationId="TestUnitRunConfigurationType" />
458
+ </history-entry>
459
+ <history-entry file="Run_test_'builder_test'__binky-builder - 2020.08.03 at 15h 21m 06s.xml">
460
+ <configuration name="Run test 'builder_test': binky-builder" configurationId="TestUnitRunConfigurationType" />
461
+ </history-entry>
462
+ </component>
193
463
  <component name="TimeTrackingManager">
194
- <option name="totallyTimeSpent" value="1605000" />
464
+ <option name="totallyTimeSpent" value="28628000" />
195
465
  </component>
196
466
  <component name="ToolWindowManager">
197
- <frame x="0" y="0" width="1920" height="1200" extended-state="6" />
467
+ <frame x="1920" y="28" width="1920" height="1052" extended-state="6" />
198
468
  <editor active="true" />
199
469
  <layout>
200
- <window_info id="Favorites" side_tool="true" />
201
- <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.25" />
470
+ <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.1625" />
202
471
  <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
203
- <window_info anchor="bottom" id="Docker" />
204
- <window_info anchor="bottom" id="Database Changes" />
205
- <window_info anchor="bottom" id="Version Control" />
206
- <window_info anchor="bottom" id="Terminal" />
207
- <window_info anchor="bottom" id="Event Log" side_tool="true" />
472
+ <window_info id="Favorites" order="2" side_tool="true" />
208
473
  <window_info anchor="bottom" id="Message" order="0" />
209
- <window_info anchor="bottom" id="Find" order="1" />
210
- <window_info anchor="bottom" id="Run" order="2" visible="true" weight="0.32976827" />
211
- <window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
474
+ <window_info anchor="bottom" id="Find" order="1" weight="0.32976827" />
475
+ <window_info anchor="bottom" id="Run" order="2" visible="true" weight="0.26078027" />
476
+ <window_info anchor="bottom" id="Debug" order="3" weight="0.2422998" />
212
477
  <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
213
478
  <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
214
479
  <window_info anchor="bottom" id="TODO" order="6" />
215
- <window_info anchor="right" id="Database" />
480
+ <window_info anchor="bottom" id="Docker" order="7" />
481
+ <window_info anchor="bottom" id="Database Changes" order="8" />
482
+ <window_info anchor="bottom" id="Version Control" order="9" />
483
+ <window_info anchor="bottom" id="Terminal" order="10" />
484
+ <window_info anchor="bottom" id="Event Log" order="11" side_tool="true" />
216
485
  <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
217
486
  <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
218
487
  <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
488
+ <window_info anchor="right" id="Database" order="3" />
219
489
  </layout>
220
490
  </component>
221
491
  <component name="TypeScriptGeneratedFilesManager">
@@ -225,51 +495,148 @@
225
495
  <MESSAGE value="Binky Builder gem initial commit." />
226
496
  <option name="LAST_COMMIT_MESSAGE" value="Binky Builder gem initial commit." />
227
497
  </component>
498
+ <component name="XDebuggerManager">
499
+ <breakpoint-manager>
500
+ <breakpoints>
501
+ <line-breakpoint enabled="true" type="ruby-line">
502
+ <url>file://$PROJECT_DIR$/test/binky/builder_test.rb</url>
503
+ <line>50</line>
504
+ <option name="timeStamp" value="5" />
505
+ </line-breakpoint>
506
+ <line-breakpoint enabled="true" type="ruby-line">
507
+ <url>file://$PROJECT_DIR$/lib/binky/builder.rb</url>
508
+ <line>93</line>
509
+ <option name="timeStamp" value="6" />
510
+ </line-breakpoint>
511
+ </breakpoints>
512
+ </breakpoint-manager>
513
+ </component>
514
+ <component name="com.intellij.coverage.CoverageDataManagerImpl">
515
+ <SUITE FILE_PATH="coverage/binky_builder@All_tests_in_binky_builder__binky_builder.rcov" NAME="All tests in binky-builder: binky-builder Coverage Results" MODIFIED="1596460622083" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="binky-builder" />
516
+ <SUITE FILE_PATH="coverage/binky_builder@All_tests_in_test__binky_builder.rcov" NAME="All tests in test: binky-builder Coverage Results" MODIFIED="1596460563548" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="binky-builder" />
517
+ <SUITE FILE_PATH="coverage/binky_builder@Run_test__builder_test___binky_builder.rcov" NAME="Run test 'builder_test': binky-builder Coverage Results" MODIFIED="1596460865440" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="binky-builder" />
518
+ <SUITE FILE_PATH="coverage/binky_builder@test_using_builder__binky_builder.rcov" NAME="test_using_builder: binky-builder Coverage Results" MODIFIED="1596457170843" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="binky-builder" />
519
+ </component>
520
+ <component name="debuggerHistoryManager">
521
+ <expressions id="evaluateExpression">
522
+ <expression>
523
+ <expression-string>@obj.to_hash[&quot;id&quot;]</expression-string>
524
+ <language-id>ruby</language-id>
525
+ <evaluation-mode>EXPRESSION</evaluation-mode>
526
+ </expression>
527
+ <expression>
528
+ <expression-string>@obj.to_hash</expression-string>
529
+ <language-id>ruby</language-id>
530
+ <evaluation-mode>EXPRESSION</evaluation-mode>
531
+ </expression>
532
+ <expression>
533
+ <expression-string>@obj.to_hash.id</expression-string>
534
+ <language-id>ruby</language-id>
535
+ <evaluation-mode>EXPRESSION</evaluation-mode>
536
+ </expression>
537
+ <expression>
538
+ <expression-string>@obj.id</expression-string>
539
+ <language-id>ruby</language-id>
540
+ <evaluation-mode>EXPRESSION</evaluation-mode>
541
+ </expression>
542
+ <expression>
543
+ <expression-string>nested_hash_value(json,key)</expression-string>
544
+ <language-id>ruby</language-id>
545
+ <evaluation-mode>EXPRESSION</evaluation-mode>
546
+ </expression>
547
+ </expressions>
548
+ </component>
228
549
  <component name="editorHistoryManager">
550
+ <entry file="file://$PROJECT_DIR$/Gemfile">
551
+ <provider selected="true" editor-type-id="text-editor" />
552
+ </entry>
553
+ <entry file="file://$PROJECT_DIR$/lib/binky/builder/builder_helper.rb" />
229
554
  <entry file="file://$PROJECT_DIR$/.travis.yml">
230
555
  <provider selected="true" editor-type-id="text-editor" />
231
556
  </entry>
232
- <entry file="file://$PROJECT_DIR$/Gemfile">
557
+ <entry file="file://$PROJECT_DIR$/.gitignore">
233
558
  <provider selected="true" editor-type-id="text-editor" />
234
559
  </entry>
235
- <entry file="file://$PROJECT_DIR$/lib/binky/builder/version.rb">
560
+ <entry file="file://$PROJECT_DIR$/LICENSE.txt">
561
+ <provider selected="true" editor-type-id="text-editor" />
562
+ </entry>
563
+ <entry file="file://$PROJECT_DIR$/binky-builder.gemspec">
564
+ <provider selected="true" editor-type-id="text-editor">
565
+ <state relative-caret-position="416">
566
+ <caret line="16" column="47" selection-start-line="16" selection-start-column="47" selection-end-line="16" selection-end-column="47" />
567
+ </state>
568
+ </provider>
569
+ </entry>
570
+ <entry file="file://$PROJECT_DIR$/test/test_helper.rb">
236
571
  <provider selected="true" editor-type-id="text-editor">
237
572
  <state relative-caret-position="104">
238
573
  <caret line="4" selection-start-line="4" selection-end-line="4" />
239
574
  </state>
240
575
  </provider>
241
576
  </entry>
242
- <entry file="file://$PROJECT_DIR$/lib/binky/builder/builder_helper.rb">
577
+ <entry file="file://$PROJECT_DIR$/README.md">
578
+ <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
579
+ <state split_layout="SPLIT">
580
+ <first_editor relative-caret-position="234">
581
+ <caret line="54" column="3" selection-start-line="54" selection-start-column="3" selection-end-line="54" selection-end-column="3" />
582
+ </first_editor>
583
+ <second_editor />
584
+ </state>
585
+ </provider>
586
+ </entry>
587
+ <entry file="file://$APPLICATION_HOME_DIR$/rubystubs26/basic_object.rb">
243
588
  <provider selected="true" editor-type-id="text-editor">
244
- <state relative-caret-position="26">
245
- <caret line="1" lean-forward="true" selection-start-line="1" selection-end-line="1" />
589
+ <state relative-caret-position="4913">
590
+ <caret line="231" column="8" selection-start-line="231" selection-start-column="8" selection-end-line="231" selection-end-column="8" />
246
591
  </state>
247
592
  </provider>
248
593
  </entry>
249
- <entry file="file://$PROJECT_DIR$/lib/binky/builder.rb">
594
+ <entry file="file://$APPLICATION_HOME_DIR$/rubystubs26/module.rb">
250
595
  <provider selected="true" editor-type-id="text-editor">
251
- <state relative-caret-position="754">
252
- <caret line="29" column="24" selection-start-line="29" selection-start-column="9" selection-end-line="29" selection-end-column="24" />
596
+ <state relative-caret-position="190">
597
+ <caret line="719" column="33" selection-start-line="719" selection-start-column="18" selection-end-line="719" selection-end-column="33" />
253
598
  </state>
254
599
  </provider>
255
600
  </entry>
256
- <entry file="file://$PROJECT_DIR$/LICENSE.txt">
257
- <provider selected="true" editor-type-id="text-editor" />
601
+ <entry file="file://$APPLICATION_HOME_DIR$/rubystubs26/object.rb">
602
+ <provider selected="true" editor-type-id="text-editor">
603
+ <state relative-caret-position="970">
604
+ <caret line="718" column="8" selection-start-line="718" selection-start-column="8" selection-end-line="718" selection-end-column="8" />
605
+ </state>
606
+ </provider>
258
607
  </entry>
259
- <entry file="file://$PROJECT_DIR$/README.md">
260
- <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
261
- <state split_layout="SPLIT">
262
- <first_editor relative-caret-position="208">
263
- <caret line="8" column="3" lean-forward="true" selection-start-line="8" selection-start-column="3" selection-end-line="8" selection-end-column="3" />
264
- </first_editor>
265
- <second_editor />
608
+ <entry file="file://$USER_HOME$/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/minitest-5.14.1/lib/minitest/test.rb">
609
+ <provider selected="true" editor-type-id="text-editor">
610
+ <state relative-caret-position="147">
611
+ <caret line="198" selection-start-line="198" selection-end-line="198" />
266
612
  </state>
267
613
  </provider>
268
614
  </entry>
269
- <entry file="file://$PROJECT_DIR$/binky-builder.gemspec">
615
+ <entry file="file://$APPLICATION_HOME_DIR$/rubystubs26/string.rb">
616
+ <provider selected="true" editor-type-id="text-editor">
617
+ <state relative-caret-position="-4057">
618
+ <caret line="1281" column="8" selection-start-line="1281" selection-start-column="8" selection-end-line="1281" selection-end-column="8" />
619
+ </state>
620
+ </provider>
621
+ </entry>
622
+ <entry file="file://$PROJECT_DIR$/lib/binky/builder.rb">
623
+ <provider selected="true" editor-type-id="text-editor">
624
+ <state relative-caret-position="373">
625
+ <caret line="88" column="27" lean-forward="true" selection-start-line="88" selection-start-column="27" selection-end-line="88" selection-end-column="27" />
626
+ </state>
627
+ </provider>
628
+ </entry>
629
+ <entry file="file://$PROJECT_DIR$/test/binky/builder_test.rb">
630
+ <provider selected="true" editor-type-id="text-editor">
631
+ <state relative-caret-position="191">
632
+ <caret line="44" column="25" selection-start-line="44" selection-start-column="25" selection-end-line="44" selection-end-column="25" />
633
+ </state>
634
+ </provider>
635
+ </entry>
636
+ <entry file="file://$PROJECT_DIR$/lib/binky/builder/version.rb">
270
637
  <provider selected="true" editor-type-id="text-editor">
271
- <state relative-caret-position="546">
272
- <caret line="21" column="31" lean-forward="true" selection-start-line="21" selection-start-column="31" selection-end-line="21" selection-end-column="31" />
638
+ <state relative-caret-position="52">
639
+ <caret line="2" column="20" selection-start-line="2" selection-start-column="20" selection-end-line="2" selection-end-column="20" />
273
640
  </state>
274
641
  </provider>
275
642
  </entry>
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Binky::Builder ![Travis](https://travis-ci.org/eddygarcas/binky-builder.svg?branch=master) [![RubyGems](https://badgen.net/rubygems/v/binky-builder)](https://rubygems.org/gems/binky-builder)
1
+ # Binky::Builder ![Travis](https://travis-ci.org/eddygarcas/binky-builder.svg) [![Gem Version](https://badge.fury.io/rb/binky-builder.svg)](https://badge.fury.io/rb/binky-builder)
2
2
 
3
3
  ## Installation
4
4
 
@@ -17,8 +17,54 @@ Or install it yourself as:
17
17
  $ gem install binky-builder
18
18
 
19
19
  ## Usage
20
+ OpenStruct and accessor builder modules.
21
+
22
+ ### Used as OpenStruct
23
+ Initialize an instance using json data, including the Builder class on your class definition.
24
+ Once initialized just use the accessors as any other instance.
25
+ ```ruby
26
+ class Issue
27
+ include Binky::Builder
28
+ alias :super_initialize :initialize
29
+
30
+ def initialize(json = nil)
31
+ super_initialize json
32
+ end
33
+ end
34
+
35
+ issue = Issue.new({id: 1234})
36
+ issue.id # => 1234
37
+ ```
38
+
39
+ ### Used on ActiveRecord models
40
+ Binky-Builder includes another helper that can be used to initialize *ActiveRecord* models based on its column names.
41
+ ```ruby
42
+ class Issue < ApplicationRecord
43
+ include Binky::BuilderHelper
44
+ end
45
+
46
+ issue = Issue.new.build_by_keys({id: 1234},Issue.column_names) # => Issue.column_names = id:
47
+ issue.id # => 1234
48
+ ```
49
+
50
+ Call *build_by_keys* method once the model has been initialized passing a json message,
51
+ it will *yield* self as a block in case you want to perform further actions.
52
+ This method will also create an instance variable called *@to_hash* contains a pair-value hash as a result.
53
+ ```ruby
54
+ build_by_keys(json = {},keys = nil)
55
+ ```
56
+
57
+ ### Auxiliary methods
58
+ Binky-Builder comes with two extra methods to search and create instance variable and methods.
59
+ It creates a instance variable along with its accessor methods (read/write).
60
+ ```ruby
61
+ accessor_builder(key, value)
62
+ ```
63
+ This method goes through the whole object, being a hash, looking for the passed key and return the value found.
64
+ ```ruby
65
+ nested_hash_value(obj, key)
66
+ ```
20
67
 
21
- Builder modules to create either class ghost methods from a given json or an open struct.
22
68
 
23
69
  ## Development
24
70
 
@@ -1,7 +1,58 @@
1
1
  require "binky/builder/version"
2
- require "binky/builder/builder_helper"
3
2
 
4
3
  module Binky
4
+ module BuilderHelper
5
+
6
+ # Parses a given json structure looking for specific keys inside the structure.
7
+ # Keys are given through a block.
8
+ # The result of it it's stored on a instance variable called to_hash and accessible through accessors with same name.
9
+ def build_by_keys(json = {}, keys = nil)
10
+ accessor_builder('to_hash',{})
11
+ k = keys || json&.keys
12
+ raise ArgumentError unless k&.respond_to?(:each)
13
+ k.each do |key|
14
+ @to_hash.merge!({key => nested_hash_value(json,key.to_sym)})
15
+ end unless json.nil?
16
+ yield self if block_given?
17
+ end
18
+
19
+ # Builds an instance variable as well as its class method accessors from a key value pair.
20
+ def accessor_builder(k, v)
21
+ self.instance_variable_set("@#{k}", v)
22
+ self.class.send(:define_method, "#{k}", proc {self.instance_variable_get("@#{k}")})
23
+ self.class.send(:define_method, "#{k}=", proc {|v| self.instance_variable_set("@#{k}", v)})
24
+ end
25
+
26
+ #Goes through a complex Hash nest and gets the value of a passed key.
27
+ # First wil check whether the object has the key? method,
28
+ # which will mean it's a Hash and also if the Hash the method parameter key
29
+ # if obj.respond_to?(:key?) && obj.key?(key)
30
+ #
31
+ # If it's not a Hash will check if it's a Array instead,
32
+ # checking out whether it responds to a Array.each method or not.
33
+ # elsif obj.respond_to?(:each)
34
+ #
35
+ # For every Array found it make a recursive call to itself passing
36
+ # the last element of the array and the Key it's looking for.
37
+ # r = nested_hash_value(a.last, key)
38
+ def nested_hash_value(obj, key)
39
+ if obj.respond_to?(:key?) && obj.key?(key)
40
+ obj[key]
41
+ elsif obj.respond_to?(:each)
42
+ r = nil
43
+ #The asterisk "splat" operator means you can pass multiple parameters in its place and the block will see them as an array.
44
+ obj.find do |*a|
45
+ r = nested_hash_value(a.last, key)
46
+ end
47
+ r
48
+ end
49
+ end
50
+
51
+ def attribute_from_inner_key(element, attribute, inner_key = nil)
52
+ {attribute.to_sym => nested_hash_value(element, inner_key&.present? ? inner_key : attribute.to_s)}
53
+ end
54
+ end
55
+
5
56
  module Builder
6
57
  class Error < StandardError; end
7
58
  include BuilderHelper
@@ -10,7 +61,7 @@ module Binky
10
61
  @attributes = {}
11
62
  json.each do |k, v|
12
63
  self.send("#{k}=", v)
13
- end unless json.blank?
64
+ end unless json.nil?
14
65
  end
15
66
 
16
67
  def method_missing(name, *args)
@@ -31,10 +82,12 @@ module Binky
31
82
  class Error < StandardError; end
32
83
  include BuilderHelper
33
84
 
34
- def initialize(json = {})
35
- json.keys.each do |k|
36
- self.send("#{k}=",nested_hash_value(json, k.to_s))
37
- end unless json.blank?
85
+ def initialize(json = {}, keys = nil)
86
+ k = keys || json&.keys
87
+ k&.reject! {|key| key.to_s.include?("=")}
88
+ k&.each do |key|
89
+ self.send("#{key}=",nested_hash_value(json, key.to_sym))
90
+ end unless json.nil?
38
91
  end
39
92
 
40
93
  def method_missing(name,*args)
@@ -1,5 +1,5 @@
1
1
  module Binky
2
2
  module Builder
3
- VERSION = "0.1.0"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: binky-builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduard Garcia Castello
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-31 00:00:00.000000000 Z
11
+ date: 2020-08-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -29,7 +29,6 @@ files:
29
29
  - bin/setup
30
30
  - binky-builder.gemspec
31
31
  - lib/binky/builder.rb
32
- - lib/binky/builder/builder_helper.rb
33
32
  - lib/binky/builder/version.rb
34
33
  homepage: https://github.com/eddygarcas/binky-builder
35
34
  licenses:
@@ -1,48 +0,0 @@
1
- module BuilderHelper
2
-
3
- # Builds an instance variable as well as its class method accessors from a key value pair.
4
- def accessor_builder k, v
5
- self.instance_variable_set("@#{k}", v)
6
- self.class.send(:define_method, "#{k}", proc {self.instance_variable_get("@#{k}")})
7
- self.class.send(:define_method, "#{k}=", proc {|v| self.instance_variable_set("@#{k}", v)})
8
- end
9
-
10
- #Goes through a complex Hash nest and gets the value of a passed key.
11
- # First wil check whether the object has the key? method,
12
- # which will mean it's a Hash and also if the Hash the method parameter key
13
- # if obj.respond_to?(:key?) && obj.key?(key)
14
- #
15
- # If it's not a Hash will check if it's a Array instead,
16
- # checking out whether it responds to a Array.each method or not.
17
- # elsif obj.respond_to?(:each)
18
- #
19
- # For every Array found it make a recursive call to itself passing
20
- # the last element of the array and the Key it's looking for.
21
- # r = nested_hash_value(a.last, key)
22
- def nested_hash_value(obj, key)
23
- if obj.respond_to?(:key?) && obj.key?(key)
24
- obj[key]
25
- elsif obj.respond_to?(:each)
26
- r = nil
27
- #The asterisk "splat" operator means you can pass multiple parameters in its place and the block will see them as an array.
28
- obj.find do |*a|
29
- r = nested_hash_value(a.last, key)
30
- end
31
- r
32
- end
33
- end
34
-
35
- # Parses a given json structure looking for specific keys inside the structure.
36
- # The result of it it's stored on a instance variable called to_hash and accessible through accessors with same name.
37
- def parse(json = {},keys = [])
38
- accessor_builder('to_hash',{})
39
- keys.each do |key|
40
- @to_hash.merge!({key => nested_hash_value(json,key)})
41
- end unless json.blank?
42
- end
43
-
44
- def attribute_from_inner_key(element, attribute, inner_key = nil)
45
- {attribute.to_sym => nested_hash_value(element, inner_key.present? ? inner_key : attribute.to_s)}
46
- end
47
-
48
- end