cattri 0.1.0 → 0.1.2

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.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cattri
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Lucas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-04-19 00:00:00.000000000 Z
11
+ date: 2025-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -102,9 +102,7 @@ executables: []
102
102
  extensions: []
103
103
  extra_rdoc_files: []
104
104
  files:
105
- - ".idea/workspace.xml"
106
105
  - ".rspec"
107
- - ".rspec_status"
108
106
  - ".rubocop.yml"
109
107
  - CHANGELOG.md
110
108
  - CODE_OF_CONDUCT.md
@@ -113,12 +111,15 @@ files:
113
111
  - Rakefile
114
112
  - cattri.gemspec
115
113
  - lib/cattri.rb
114
+ - lib/cattri/attribute.rb
115
+ - lib/cattri/attribute_definer.rb
116
116
  - lib/cattri/class_attributes.rb
117
+ - lib/cattri/context.rb
117
118
  - lib/cattri/error.rb
118
- - lib/cattri/helpers.rb
119
119
  - lib/cattri/instance_attributes.rb
120
120
  - lib/cattri/introspection.rb
121
121
  - lib/cattri/version.rb
122
+ - lib/cattri/visibility.rb
122
123
  - sig/cattri.rbs
123
124
  homepage: https://github.com/bnlucas/cattri
124
125
  licenses:
data/.idea/workspace.xml DELETED
@@ -1,350 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="AutoImportSettings">
4
- <option name="autoReloadType" value="SELECTIVE" />
5
- </component>
6
- <component name="ChangeListManager">
7
- <list default="true" id="fec6a554-a186-4966-830b-5ef89e82e898" name="Changes" comment="">
8
- <change afterPath="$PROJECT_DIR$/.github/workflows/main.yml" afterDir="false" />
9
- <change afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
10
- <change afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
11
- <change afterPath="$PROJECT_DIR$/.rspec" afterDir="false" />
12
- <change afterPath="$PROJECT_DIR$/.rubocop.yml" afterDir="false" />
13
- <change afterPath="$PROJECT_DIR$/CHANGELOG.md" afterDir="false" />
14
- <change afterPath="$PROJECT_DIR$/CODE_OF_CONDUCT.md" afterDir="false" />
15
- <change afterPath="$PROJECT_DIR$/Gemfile" afterDir="false" />
16
- <change afterPath="$PROJECT_DIR$/LICENSE.txt" afterDir="false" />
17
- <change afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
18
- <change afterPath="$PROJECT_DIR$/Rakefile" afterDir="false" />
19
- <change afterPath="$PROJECT_DIR$/bin/console" afterDir="false" />
20
- <change afterPath="$PROJECT_DIR$/bin/setup" afterDir="false" />
21
- <change afterPath="$PROJECT_DIR$/cattri.gemspec" afterDir="false" />
22
- <change afterPath="$PROJECT_DIR$/lib/cattri.rb" afterDir="false" />
23
- <change afterPath="$PROJECT_DIR$/lib/cattri/class_attributes.rb" afterDir="false" />
24
- <change afterPath="$PROJECT_DIR$/lib/cattri/error.rb" afterDir="false" />
25
- <change afterPath="$PROJECT_DIR$/lib/cattri/helpers.rb" afterDir="false" />
26
- <change afterPath="$PROJECT_DIR$/lib/cattri/instance_attributes.rb" afterDir="false" />
27
- <change afterPath="$PROJECT_DIR$/lib/cattri/introspection.rb" afterDir="false" />
28
- <change afterPath="$PROJECT_DIR$/lib/cattri/version.rb" afterDir="false" />
29
- <change afterPath="$PROJECT_DIR$/sig/cattri.rbs" afterDir="false" />
30
- <change afterPath="$PROJECT_DIR$/spec/cattri/class_attributes_spec.rb" afterDir="false" />
31
- <change afterPath="$PROJECT_DIR$/spec/cattri/error_spec.rb" afterDir="false" />
32
- <change afterPath="$PROJECT_DIR$/spec/cattri/helpers_spec.rb" afterDir="false" />
33
- <change afterPath="$PROJECT_DIR$/spec/cattri/instance_attributes_spec.rb" afterDir="false" />
34
- <change afterPath="$PROJECT_DIR$/spec/cattri/introspection_spec.rb" afterDir="false" />
35
- <change afterPath="$PROJECT_DIR$/spec/cattri_spec.rb" afterDir="false" />
36
- <change afterPath="$PROJECT_DIR$/spec/simplecov_helper.rb" afterDir="false" />
37
- <change afterPath="$PROJECT_DIR$/spec/spec_helper.rb" afterDir="false" />
38
- </list>
39
- <option name="SHOW_DIALOG" value="false" />
40
- <option name="HIGHLIGHT_CONFLICTS" value="true" />
41
- <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
42
- <option name="LAST_RESOLUTION" value="IGNORE" />
43
- </component>
44
- <component name="FileTemplateManagerImpl">
45
- <option name="RECENT_TEMPLATES">
46
- <list>
47
- <option value="Ruby File" />
48
- </list>
49
- </option>
50
- </component>
51
- <component name="Git.Settings">
52
- <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
53
- </component>
54
- <component name="ProjectColorInfo"><![CDATA[{
55
- "associatedIndex": 4
56
- }]]></component>
57
- <component name="ProjectId" id="2vsZDJVeK9JOzIT0XVm4VRqlOp1" />
58
- <component name="ProjectViewState">
59
- <option name="autoscrollFromSource" value="true" />
60
- <option name="hideEmptyMiddlePackages" value="true" />
61
- <option name="showLibraryContents" value="true" />
62
- </component>
63
- <component name="PropertiesComponent"><![CDATA[{
64
- "keyToString": {
65
- "RSpec.All specs in spec: cattri.executor": "Run",
66
- "RSpec.Cattri::ClassAttributes .class_attribute_reader / .cattr_reader defines a readonly accessor.executor": "Debug",
67
- "RSpec.Cattri::ClassAttributes .class_attribute_reader defines a readonly accessor.executor": "Debug",
68
- "RSpec.Cattri::ClassAttributes .class_attribute_reader defines a readonly attribute.executor": "Debug",
69
- "RSpec.Cattri::ClassAttributes .class_attributes returns all defined class attributes.executor": "Debug",
70
- "RSpec.Cattri::ClassAttributes.class_attribute_reader / .cattr_reader defines a readonly accessor.executor": "Debug",
71
- "RSpec.Cattri::InstanceAttributes.executor": "Run",
72
- "RSpec.Cattri::InstanceAttributes.instance_attribute_definition / .iattr_definition.executor": "Debug",
73
- "RSpec.Cattri::InstanceAttributes.reset_instance_attribute! / .reset_iattr!.executor": "Debug",
74
- "RSpec.Cattri::Introspection.executor": "Run",
75
- "RSpec.class_attributes_spec.executor": "Run",
76
- "RSpec.instance_attributes_spec.executor": "Run",
77
- "RunOnceActivity.ShowReadmeOnStart": "true",
78
- "RunOnceActivity.git.unshallow": "true",
79
- "git-widget-placeholder": "main",
80
- "last_opened_file_path": "/Users/nlucas/dev/unwritten/cattri/spec",
81
- "node.js.detected.package.eslint": "true",
82
- "node.js.detected.package.tslint": "true",
83
- "node.js.selected.package.eslint": "(autodetect)",
84
- "node.js.selected.package.tslint": "(autodetect)",
85
- "nodejs_package_manager_path": "npm",
86
- "ruby.structure.view.model.defaults.configured": "true",
87
- "vue.rearranger.settings.migration": "true"
88
- },
89
- "keyToStringList": {
90
- "com.intellij.ide.scratch.ScratchImplUtil$2/New Scratch File": [
91
- "ruby"
92
- ]
93
- }
94
- }]]></component>
95
- <component name="RecentsManager">
96
- <key name="CopyFile.RECENT_KEYS">
97
- <recent name="$PROJECT_DIR$/spec" />
98
- </key>
99
- </component>
100
- <component name="RunManager" selected="RSpec.All specs in spec: cattri">
101
- <configuration name="All specs in spec: cattri" type="RSpecRunConfigurationType" factoryName="RSpec" temporary="true">
102
- <module name="cattri" />
103
- <predefined_log_file enabled="true" id="RUBY_RSPEC" />
104
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="" />
105
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
106
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
107
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
108
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
109
- <envs>
110
- <env name="JRUBY_OPTS" value="-X+O" />
111
- </envs>
112
- <EXTENSION ID="BundlerRunConfigurationExtension" BUNDLE_MODE="AUTO" bundleExecEnabled="true" />
113
- <EXTENSION ID="RubyCoverageRunConfigurationExtension" track_test_folders="true" runner="rcov" ENABLE_BRANCH_COVERAGE="true" ENABLE_FORKED_COVERAGE="true">
114
- <COVERAGE_PATTERN ENABLED="true">
115
- <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
116
- </COVERAGE_PATTERN>
117
- </EXTENSION>
118
- <EXTENSION ID="org.jetbrains.plugins.ruby.rails.run.RailsRunConfigurationExtension" SCRATCH_USE_RAILS_RUNNER="false" />
119
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="$MODULE_DIR$/spec" />
120
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
121
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATHS" VALUE="" />
122
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
123
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*_spec.rb" />
124
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="" />
125
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_EXAMPLE_MATCHES" VALUE="false" />
126
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="LINE_NUMBER_EXAMPLE_IDS" VALUE="" />
127
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="ALL_IN_FOLDER" />
128
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
129
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
130
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
131
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
132
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
133
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
134
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
135
- <method v="2" />
136
- </configuration>
137
- <configuration name="Cattri::InstanceAttributes" type="RSpecRunConfigurationType" factoryName="RSpec" temporary="true" nameIsGenerated="true">
138
- <module name="cattri" />
139
- <predefined_log_file enabled="true" id="RUBY_RSPEC" />
140
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="" />
141
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
142
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
143
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
144
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
145
- <envs>
146
- <env name="JRUBY_OPTS" value="-X+O" />
147
- </envs>
148
- <EXTENSION ID="BundlerRunConfigurationExtension" BUNDLE_MODE="AUTO" bundleExecEnabled="true" />
149
- <EXTENSION ID="RubyCoverageRunConfigurationExtension" track_test_folders="true" runner="rcov" ENABLE_BRANCH_COVERAGE="true" ENABLE_FORKED_COVERAGE="true">
150
- <COVERAGE_PATTERN ENABLED="true">
151
- <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
152
- </COVERAGE_PATTERN>
153
- </EXTENSION>
154
- <EXTENSION ID="org.jetbrains.plugins.ruby.rails.run.RailsRunConfigurationExtension" SCRATCH_USE_RAILS_RUNNER="false" />
155
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
156
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/spec/cattri/instance_attributes_spec.rb" />
157
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATHS" VALUE="" />
158
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
159
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*_spec.rb" />
160
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="Cattri::InstanceAttributes" />
161
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_EXAMPLE_MATCHES" VALUE="false" />
162
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="LINE_NUMBER_EXAMPLE_IDS" VALUE="" />
163
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
164
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
165
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
166
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
167
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
168
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
169
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
170
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
171
- <method v="2" />
172
- </configuration>
173
- <configuration name="Cattri::InstanceAttributes.reset_instance_attribute! / .reset_iattr!" type="RSpecRunConfigurationType" factoryName="RSpec" temporary="true" nameIsGenerated="true">
174
- <module name="cattri" />
175
- <predefined_log_file enabled="true" id="RUBY_RSPEC" />
176
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="" />
177
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
178
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
179
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
180
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
181
- <envs>
182
- <env name="JRUBY_OPTS" value="-X+O" />
183
- </envs>
184
- <EXTENSION ID="BundlerRunConfigurationExtension" BUNDLE_MODE="AUTO" bundleExecEnabled="true" />
185
- <EXTENSION ID="RubyCoverageRunConfigurationExtension" track_test_folders="true" runner="rcov" ENABLE_BRANCH_COVERAGE="true" ENABLE_FORKED_COVERAGE="true">
186
- <COVERAGE_PATTERN ENABLED="true">
187
- <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
188
- </COVERAGE_PATTERN>
189
- </EXTENSION>
190
- <EXTENSION ID="org.jetbrains.plugins.ruby.rails.run.RailsRunConfigurationExtension" SCRATCH_USE_RAILS_RUNNER="false" />
191
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
192
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/spec/cattri/instance_attributes_spec.rb" />
193
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATHS" VALUE="" />
194
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
195
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*_spec.rb" />
196
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="Cattri::InstanceAttributes.reset_instance_attribute! / .reset_iattr!" />
197
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_EXAMPLE_MATCHES" VALUE="false" />
198
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="LINE_NUMBER_EXAMPLE_IDS" VALUE="" />
199
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
200
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
201
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
202
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
203
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
204
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
205
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
206
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
207
- <method v="2" />
208
- </configuration>
209
- <configuration name="Cattri::Introspection" type="RSpecRunConfigurationType" factoryName="RSpec" temporary="true" nameIsGenerated="true">
210
- <module name="cattri" />
211
- <predefined_log_file enabled="true" id="RUBY_RSPEC" />
212
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="" />
213
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
214
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
215
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
216
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
217
- <envs>
218
- <env name="JRUBY_OPTS" value="-X+O" />
219
- </envs>
220
- <EXTENSION ID="BundlerRunConfigurationExtension" BUNDLE_MODE="AUTO" bundleExecEnabled="true" />
221
- <EXTENSION ID="RubyCoverageRunConfigurationExtension" track_test_folders="true" runner="rcov" ENABLE_BRANCH_COVERAGE="true" ENABLE_FORKED_COVERAGE="true">
222
- <COVERAGE_PATTERN ENABLED="true">
223
- <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
224
- </COVERAGE_PATTERN>
225
- </EXTENSION>
226
- <EXTENSION ID="org.jetbrains.plugins.ruby.rails.run.RailsRunConfigurationExtension" SCRATCH_USE_RAILS_RUNNER="false" />
227
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
228
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/spec/cattri/introspection_spec.rb" />
229
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATHS" VALUE="" />
230
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
231
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*_spec.rb" />
232
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="Cattri::Introspection" />
233
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_EXAMPLE_MATCHES" VALUE="false" />
234
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="LINE_NUMBER_EXAMPLE_IDS" VALUE="" />
235
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
236
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
237
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
238
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
239
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
240
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
241
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
242
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
243
- <method v="2" />
244
- </configuration>
245
- <configuration name="instance_attributes_spec" type="RSpecRunConfigurationType" factoryName="RSpec" temporary="true" nameIsGenerated="true">
246
- <module name="cattri" />
247
- <predefined_log_file enabled="true" id="RUBY_RSPEC" />
248
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="" />
249
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
250
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
251
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
252
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
253
- <envs>
254
- <env name="JRUBY_OPTS" value="-X+O" />
255
- </envs>
256
- <EXTENSION ID="BundlerRunConfigurationExtension" BUNDLE_MODE="AUTO" bundleExecEnabled="true" />
257
- <EXTENSION ID="RubyCoverageRunConfigurationExtension" track_test_folders="true" runner="rcov" ENABLE_BRANCH_COVERAGE="true" ENABLE_FORKED_COVERAGE="true">
258
- <COVERAGE_PATTERN ENABLED="true">
259
- <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
260
- </COVERAGE_PATTERN>
261
- </EXTENSION>
262
- <EXTENSION ID="org.jetbrains.plugins.ruby.rails.run.RailsRunConfigurationExtension" SCRATCH_USE_RAILS_RUNNER="false" />
263
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
264
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/spec/cattri/instance_attributes_spec.rb" />
265
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATHS" VALUE="" />
266
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
267
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*_spec.rb" />
268
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="" />
269
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_EXAMPLE_MATCHES" VALUE="false" />
270
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="LINE_NUMBER_EXAMPLE_IDS" VALUE="" />
271
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
272
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
273
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
274
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
275
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
276
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
277
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
278
- <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
279
- <method v="2" />
280
- </configuration>
281
- <recent_temporary>
282
- <list>
283
- <item itemvalue="RSpec.All specs in spec: cattri" />
284
- <item itemvalue="RSpec.Cattri::Introspection" />
285
- <item itemvalue="RSpec.Cattri::InstanceAttributes" />
286
- <item itemvalue="RSpec.instance_attributes_spec" />
287
- <item itemvalue="RSpec.Cattri::InstanceAttributes.reset_instance_attribute! / .reset_iattr!" />
288
- </list>
289
- </recent_temporary>
290
- </component>
291
- <component name="SharedIndexes">
292
- <attachedChunks>
293
- <set>
294
- <option value="bundled-js-predefined-d6986cc7102b-1632447f56bf-JavaScript-RM-243.26053.19" />
295
- </set>
296
- </attachedChunks>
297
- </component>
298
- <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
299
- <component name="SpringUtil" SPRING_PRE_LOADER_OPTION="true" RAKE_SPRING_PRE_LOADER_OPTION="true" RAILS_SPRING_PRE_LOADER_OPTION="true" />
300
- <component name="TaskManager">
301
- <task active="true" id="Default" summary="Default task">
302
- <changelist id="fec6a554-a186-4966-830b-5ef89e82e898" name="Changes" comment="" />
303
- <created>1744935621196</created>
304
- <option name="number" value="Default" />
305
- <option name="presentableId" value="Default" />
306
- <updated>1744935621196</updated>
307
- <workItem from="1744935622460" duration="28499000" />
308
- </task>
309
- <servers />
310
- </component>
311
- <component name="TypeScriptGeneratedFilesManager">
312
- <option name="version" value="3" />
313
- </component>
314
- <component name="XDebuggerManager">
315
- <breakpoint-manager>
316
- <breakpoints>
317
- <line-breakpoint enabled="true" type="ruby-line">
318
- <url>file://$PROJECT_DIR$/spec/cattri/instance_attributes_spec.rb</url>
319
- <line>87</line>
320
- <properties myBlockOrdinal="-1">
321
- <option name="block-ordinal" value="-1" />
322
- </properties>
323
- <option name="timeStamp" value="12" />
324
- </line-breakpoint>
325
- <line-breakpoint enabled="true" type="ruby-line">
326
- <url>file://$PROJECT_DIR$/spec/cattri/instance_attributes_spec.rb</url>
327
- <line>89</line>
328
- <properties myBlockOrdinal="-1">
329
- <option name="block-ordinal" value="-1" />
330
- </properties>
331
- <option name="timeStamp" value="13" />
332
- </line-breakpoint>
333
- </breakpoints>
334
- </breakpoint-manager>
335
- </component>
336
- <component name="com.intellij.coverage.CoverageDataManagerImpl">
337
- <SUITE FILE_PATH="coverage/cattri@Cattri__ClassAttributes__class_attributes_returns_all_defined_class_attributes.rcov" NAME="Cattri::ClassAttributes .class_attributes returns all defined class attributes Coverage Results" MODIFIED="1744951504847" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="cattri" />
338
- <SUITE FILE_PATH="coverage/cattri@Cattri__InstanceAttributes.rcov" NAME="Cattri::InstanceAttributes Coverage Results" MODIFIED="1745025690218" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="cattri" />
339
- <SUITE FILE_PATH="coverage/cattri@instance_attributes_spec.rcov" NAME="instance_attributes_spec Coverage Results" MODIFIED="1745025306772" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="cattri" />
340
- <SUITE FILE_PATH="coverage/cattri@Cattri__ClassAttributes_class_attribute_reader____cattr_reader_defines_a_readonly_accessor.rcov" NAME="Cattri::ClassAttributes.class_attribute_reader / .cattr_reader defines a readonly accessor Coverage Results" MODIFIED="1744952624939" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="cattri" />
341
- <SUITE FILE_PATH="coverage/cattri@All_specs_in_spec__cattri.rcov" NAME="All specs in spec: cattri Coverage Results" MODIFIED="1745028240488" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="cattri" />
342
- <SUITE FILE_PATH="coverage/cattri@Cattri__InstanceAttributes_instance_attribute_definition____iattr_definition.rcov" NAME="Cattri::InstanceAttributes.instance_attribute_definition / .iattr_definition Coverage Results" MODIFIED="1745023210727" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="cattri" />
343
- <SUITE FILE_PATH="coverage/cattri@Cattri__ClassAttributes__class_attribute_reader_defines_a_readonly_accessor.rcov" NAME="Cattri::ClassAttributes .class_attribute_reader defines a readonly accessor Coverage Results" MODIFIED="1744950990470" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="cattri" />
344
- <SUITE FILE_PATH="coverage/cattri@Cattri__ClassAttributes__class_attribute_reader____cattr_reader_defines_a_readonly_accessor.rcov" NAME="Cattri::ClassAttributes .class_attribute_reader / .cattr_reader defines a readonly accessor Coverage Results" MODIFIED="1744952400200" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="cattri" />
345
- <SUITE FILE_PATH="coverage/cattri@class_attributes_spec.rcov" NAME="class_attributes_spec Coverage Results" MODIFIED="1745021039202" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="cattri" />
346
- <SUITE FILE_PATH="coverage/cattri@Cattri__ClassAttributes__class_attribute_reader_defines_a_readonly_attribute.rcov" NAME="Cattri::ClassAttributes .class_attribute_reader defines a readonly attribute Coverage Results" MODIFIED="1744950584715" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="cattri" />
347
- <SUITE FILE_PATH="coverage/cattri@Cattri__InstanceAttributes_reset_instance_attribute_____reset_iattr_.rcov" NAME="Cattri::InstanceAttributes.reset_instance_attribute! / .reset_iattr! Coverage Results" MODIFIED="1745025163505" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="cattri" />
348
- <SUITE FILE_PATH="coverage/cattri@Cattri__Introspection.rcov" NAME="Cattri::Introspection Coverage Results" MODIFIED="1745026654575" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="cattri" />
349
- </component>
350
- </project>
data/.rspec_status DELETED
@@ -1,75 +0,0 @@
1
- example_id | status | run_time |
2
- ------------------------------------------------ | ------ | --------------- |
3
- ./spec/cattri/class_attributes_spec.rb[1:1:1] | passed | 0.00444 seconds |
4
- ./spec/cattri/class_attributes_spec.rb[1:1:2] | passed | 0.00063 seconds |
5
- ./spec/cattri/class_attributes_spec.rb[1:1:3] | passed | 0.00025 seconds |
6
- ./spec/cattri/class_attributes_spec.rb[1:1:4] | passed | 0.00027 seconds |
7
- ./spec/cattri/class_attributes_spec.rb[1:1:5] | passed | 0.00127 seconds |
8
- ./spec/cattri/class_attributes_spec.rb[1:1:6] | passed | 0.0003 seconds |
9
- ./spec/cattri/class_attributes_spec.rb[1:1:7] | passed | 0.00023 seconds |
10
- ./spec/cattri/class_attributes_spec.rb[1:1:8] | passed | 0.00103 seconds |
11
- ./spec/cattri/class_attributes_spec.rb[1:2:1] | passed | 0.00022 seconds |
12
- ./spec/cattri/class_attributes_spec.rb[1:2:2] | passed | 0.00019 seconds |
13
- ./spec/cattri/class_attributes_spec.rb[1:2:3] | passed | 0.00018 seconds |
14
- ./spec/cattri/class_attributes_spec.rb[1:2:4] | passed | 0.00096 seconds |
15
- ./spec/cattri/class_attributes_spec.rb[1:3:1] | passed | 0.00021 seconds |
16
- ./spec/cattri/class_attributes_spec.rb[1:4:1] | passed | 0.00062 seconds |
17
- ./spec/cattri/class_attributes_spec.rb[1:4:2] | passed | 0.00026 seconds |
18
- ./spec/cattri/class_attributes_spec.rb[1:5:1] | passed | 0.00196 seconds |
19
- ./spec/cattri/class_attributes_spec.rb[1:6:1] | passed | 0.00041 seconds |
20
- ./spec/cattri/class_attributes_spec.rb[1:7:1] | passed | 0.00036 seconds |
21
- ./spec/cattri/class_attributes_spec.rb[1:7:2] | passed | 0.00024 seconds |
22
- ./spec/cattri/class_attributes_spec.rb[1:8:1] | passed | 0.0002 seconds |
23
- ./spec/cattri/class_attributes_spec.rb[1:9:1] | passed | 0.00021 seconds |
24
- ./spec/cattri/class_attributes_spec.rb[1:9:2] | passed | 0.00014 seconds |
25
- ./spec/cattri/class_attributes_spec.rb[1:9:3] | passed | 0.00012 seconds |
26
- ./spec/cattri/class_attributes_spec.rb[1:9:4] | passed | 0.00012 seconds |
27
- ./spec/cattri/class_attributes_spec.rb[1:9:5] | passed | 0.00011 seconds |
28
- ./spec/cattri/class_attributes_spec.rb[1:9:6] | passed | 0.00012 seconds |
29
- ./spec/cattri/class_attributes_spec.rb[1:9:7] | passed | 0.00012 seconds |
30
- ./spec/cattri/class_attributes_spec.rb[1:9:8] | passed | 0.00011 seconds |
31
- ./spec/cattri/error_spec.rb[1:1] | passed | 0.00007 seconds |
32
- ./spec/cattri/helpers_spec.rb[1:1:1] | passed | 0.00008 seconds |
33
- ./spec/cattri/helpers_spec.rb[1:1:2] | passed | 0.00004 seconds |
34
- ./spec/cattri/helpers_spec.rb[1:1:3] | passed | 0.00004 seconds |
35
- ./spec/cattri/helpers_spec.rb[1:1:4] | passed | 0.00004 seconds |
36
- ./spec/cattri/helpers_spec.rb[1:1:5] | passed | 0.00004 seconds |
37
- ./spec/cattri/helpers_spec.rb[1:2:1] | passed | 0.00004 seconds |
38
- ./spec/cattri/helpers_spec.rb[1:2:2] | passed | 0.00004 seconds |
39
- ./spec/cattri/helpers_spec.rb[1:2:3] | passed | 0.00003 seconds |
40
- ./spec/cattri/helpers_spec.rb[1:2:4] | passed | 0.00005 seconds |
41
- ./spec/cattri/helpers_spec.rb[1:3:1] | passed | 0.00007 seconds |
42
- ./spec/cattri/helpers_spec.rb[1:3:2] | passed | 0.00014 seconds |
43
- ./spec/cattri/instance_attributes_spec.rb[1:1:1] | passed | 0.00012 seconds |
44
- ./spec/cattri/instance_attributes_spec.rb[1:1:2] | passed | 0.00007 seconds |
45
- ./spec/cattri/instance_attributes_spec.rb[1:1:3] | passed | 0.00007 seconds |
46
- ./spec/cattri/instance_attributes_spec.rb[1:2:1] | passed | 0.00008 seconds |
47
- ./spec/cattri/instance_attributes_spec.rb[1:2:2] | passed | 0.0001 seconds |
48
- ./spec/cattri/instance_attributes_spec.rb[1:2:3] | passed | 0.00008 seconds |
49
- ./spec/cattri/instance_attributes_spec.rb[1:3:1] | passed | 0.00007 seconds |
50
- ./spec/cattri/instance_attributes_spec.rb[1:3:2] | passed | 0.00013 seconds |
51
- ./spec/cattri/instance_attributes_spec.rb[1:3:3] | passed | 0.0001 seconds |
52
- ./spec/cattri/instance_attributes_spec.rb[1:4:1] | passed | 0.00006 seconds |
53
- ./spec/cattri/instance_attributes_spec.rb[1:5:1] | passed | 0.00006 seconds |
54
- ./spec/cattri/instance_attributes_spec.rb[1:5:2] | passed | 0.00006 seconds |
55
- ./spec/cattri/instance_attributes_spec.rb[1:6:1] | passed | 0.00019 seconds |
56
- ./spec/cattri/instance_attributes_spec.rb[1:7:1] | passed | 0.0001 seconds |
57
- ./spec/cattri/instance_attributes_spec.rb[1:8:1] | passed | 0.00034 seconds |
58
- ./spec/cattri/instance_attributes_spec.rb[1:8:2] | passed | 0.00015 seconds |
59
- ./spec/cattri/instance_attributes_spec.rb[1:9:1] | passed | 0.00006 seconds |
60
- ./spec/cattri/instance_attributes_spec.rb[1:9:2] | passed | 0.00006 seconds |
61
- ./spec/cattri/instance_attributes_spec.rb[1:9:3] | passed | 0.00005 seconds |
62
- ./spec/cattri/instance_attributes_spec.rb[1:9:4] | passed | 0.00006 seconds |
63
- ./spec/cattri/instance_attributes_spec.rb[1:9:5] | passed | 0.00012 seconds |
64
- ./spec/cattri/instance_attributes_spec.rb[1:9:6] | passed | 0.00005 seconds |
65
- ./spec/cattri/instance_attributes_spec.rb[1:9:7] | passed | 0.00005 seconds |
66
- ./spec/cattri/instance_attributes_spec.rb[1:9:8] | passed | 0.00005 seconds |
67
- ./spec/cattri/instance_attributes_spec.rb[1:9:9] | passed | 0.00012 seconds |
68
- ./spec/cattri/introspection_spec.rb[1:1:1] | passed | 0.00004 seconds |
69
- ./spec/cattri/introspection_spec.rb[1:1:2] | passed | 0.00008 seconds |
70
- ./spec/cattri/introspection_spec.rb[1:1:3] | passed | 0.00006 seconds |
71
- ./spec/cattri/introspection_spec.rb[1:2:1] | passed | 0.00004 seconds |
72
- ./spec/cattri/introspection_spec.rb[1:2:2] | passed | 0.00008 seconds |
73
- ./spec/cattri/introspection_spec.rb[1:2:3] | passed | 0.00008 seconds |
74
- ./spec/cattri_spec.rb[1:1] | passed | 0.00005 seconds |
75
- ./spec/cattri_spec.rb[1:2] | passed | 0.00004 seconds |
@@ -1,75 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cattri
4
- # Internal support utilities for Cattri modules.
5
- #
6
- # Provides shared logic for safe default handling, attribute definition, and
7
- # consistent reset behavior across class-level and instance-level attributes.
8
- #
9
- # This module is intended for internal use only and is included by both
10
- # Cattri::ClassAttributes and Cattri::InstanceAttributes.
11
- module Helpers
12
- # A list of immutable Ruby types that are safe to reuse directly without duplication.
13
- #
14
- # These types are treated as-is when used as default values.
15
- #
16
- # @return [Array<Class>]
17
- SAFE_VALUE_TYPES = [Numeric, Symbol, TrueClass, FalseClass, NilClass].freeze
18
-
19
- protected
20
-
21
- # Defines an attribute structure used internally for accessors.
22
- #
23
- # Combines the caller's options with normalized default and setter logic,
24
- # and attaches a consistent `@ivar` key for storage.
25
- #
26
- # @param name [Symbol, String] The attribute name
27
- # @param options [Hash] The caller-provided options (e.g., `:default`, `:readonly`)
28
- # @param block [Proc, nil] Optional setter block
29
- # @param defaults [Hash] A set of fallback/default values to merge in
30
- # @return [Array] Normalized name and attribute definition hash
31
- def define_attribute(name, options, block, defaults)
32
- options[:default] = normalize_default(options[:default])
33
- options[:setter] = block || lambda { |*args, **kwargs|
34
- return kwargs unless kwargs.empty?
35
- return args.first if args.length == 1
36
-
37
- args
38
- }
39
-
40
- name = name.to_sym
41
- [name, defaults.merge(ivar: :"@#{name}", **options)]
42
- end
43
-
44
- # Wraps static default values in lambdas to ensure safety.
45
- #
46
- # If the value is already callable, it is returned as-is.
47
- # If the value is immutable, it is wrapped directly.
48
- # Otherwise, it is wrapped with `.dup` for safe reuse.
49
- #
50
- # @param default [Object, Proc, nil] The user-provided default value
51
- # @return [Proc] A proc that returns a safe default value
52
- def normalize_default(default)
53
- return default if default.respond_to?(:call)
54
- return -> { default } if default.frozen? || SAFE_VALUE_TYPES.any? { |type| default.is_a?(type) }
55
-
56
- -> { default.dup }
57
- end
58
-
59
- # Resets a set of attribute definitions on a target object.
60
- #
61
- # Used to restore class or instance attributes to their configured default values.
62
- #
63
- # @param target [Object] The object or class whose instance variables will be reset
64
- # @param attribute_definitions [Enumerable<Hash>] A list of attribute definition hashes
65
- # @return [void]
66
- def reset_attributes!(target, attribute_definitions)
67
- attribute_definitions.each do |definition|
68
- target.instance_variable_set(
69
- definition[:ivar],
70
- definition[:default].call
71
- )
72
- end
73
- end
74
- end
75
- end