striuct 0.6.1 → 0.7.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.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE.txt +21 -0
  3. data/README.md +19 -39
  4. data/lib/striuct.rb +3 -3
  5. data/lib/striuct/classmethods/README.md +2 -2
  6. data/lib/striuct/classmethods/adjustment.rb +15 -13
  7. data/lib/striuct/classmethods/attributes.rb +94 -92
  8. data/lib/striuct/classmethods/conflict_management.rb +109 -106
  9. data/lib/striuct/classmethods/constructor.rb +47 -54
  10. data/lib/striuct/classmethods/copy.rb +45 -43
  11. data/lib/striuct/classmethods/default.rb +23 -21
  12. data/lib/striuct/classmethods/enum.rb +46 -44
  13. data/lib/striuct/classmethods/fix.rb +23 -21
  14. data/lib/striuct/classmethods/hashdeepdupulicatable.rb +15 -15
  15. data/lib/striuct/classmethods/inner.rb +57 -55
  16. data/lib/striuct/classmethods/length.rb +12 -10
  17. data/lib/striuct/classmethods/macro.rb +110 -106
  18. data/lib/striuct/classmethods/names.rb +69 -65
  19. data/lib/striuct/classmethods/predicate.rb +131 -129
  20. data/lib/striuct/classmethods/requirements.rb +3 -1
  21. data/lib/striuct/classmethods/to_struct.rb +21 -18
  22. data/lib/striuct/classmethods/validation.rb +15 -13
  23. data/lib/striuct/instancemethods/README.md +2 -2
  24. data/lib/striuct/instancemethods/assign.rb +29 -27
  25. data/lib/striuct/instancemethods/cast.rb +28 -26
  26. data/lib/striuct/instancemethods/compare.rb +26 -24
  27. data/lib/striuct/instancemethods/default.rb +31 -29
  28. data/lib/striuct/instancemethods/delegate_class_methods.rb +35 -33
  29. data/lib/striuct/instancemethods/enum.rb +86 -84
  30. data/lib/striuct/instancemethods/getter.rb +39 -37
  31. data/lib/striuct/instancemethods/hashy.rb +99 -97
  32. data/lib/striuct/instancemethods/keyvalidatable.rb +8 -6
  33. data/lib/striuct/instancemethods/lock.rb +46 -44
  34. data/lib/striuct/instancemethods/object.rb +50 -48
  35. data/lib/striuct/instancemethods/requirements.rb +11 -9
  36. data/lib/striuct/instancemethods/safety.rb +11 -9
  37. data/lib/striuct/instancemethods/setter.rb +46 -45
  38. data/lib/striuct/instancemethods/to_s.rb +39 -37
  39. data/lib/striuct/instancemethods/validation.rb +31 -29
  40. data/lib/striuct/instancemethods/values.rb +50 -48
  41. data/lib/striuct/requirements.rb +3 -1
  42. data/lib/striuct/singleton_class.rb +12 -17
  43. data/lib/striuct/structs.rb +3 -3
  44. metadata +33 -178
  45. data/.gitignore +0 -35
  46. data/.travis.yml +0 -17
  47. data/.yardopts +0 -1
  48. data/Gemfile +0 -11
  49. data/MIT-LICENSE +0 -22
  50. data/Rakefile +0 -11
  51. data/benchmark/basics.rb +0 -56
  52. data/example/README.rb +0 -50
  53. data/example/example1.rb +0 -195
  54. data/example/example2.rb +0 -20
  55. data/example/see_trace.rb +0 -32
  56. data/striuct.gemspec +0 -45
  57. data/test/helper.rb +0 -3
  58. data/test/test_sglc-constructor.rb +0 -36
  59. data/test/test_subc-c-add_members.rb +0 -13
  60. data/test/test_subc-c-close_member.rb +0 -36
  61. data/test/test_subc-c-constructor.rb +0 -92
  62. data/test/test_subc-c-copy.rb +0 -71
  63. data/test/test_subc-c-freeze.rb +0 -36
  64. data/test/test_subc-c-inheritable.rb +0 -58
  65. data/test/test_subc-c-safety_naming.rb +0 -73
  66. data/test/test_subc-f-alias_member.rb +0 -54
  67. data/test/test_subc-f-enum.rb +0 -159
  68. data/test/test_subc-f-predicate.rb +0 -647
  69. data/test/test_subc-f-to_struct.rb +0 -61
  70. data/test/test_subc-f-validation_util.rb +0 -59
  71. data/test/test_subc-f_debug.rb +0 -39
  72. data/test/test_subc-f_name.rb +0 -525
  73. data/test/test_subc-i-accessor.rb +0 -138
  74. data/test/test_subc-i-adjuster.rb +0 -95
  75. data/test/test_subc-i-assign.rb +0 -53
  76. data/test/test_subc-i-basic.rb +0 -43
  77. data/test/test_subc-i-cast.rb +0 -27
  78. data/test/test_subc-i-compare.rb +0 -52
  79. data/test/test_subc-i-copy.rb +0 -23
  80. data/test/test_subc-i-default_value.rb +0 -129
  81. data/test/test_subc-i-freeze.rb +0 -19
  82. data/test/test_subc-i-hashlike.rb +0 -144
  83. data/test/test_subc-i-keyvalidatable.rb +0 -25
  84. data/test/test_subc-i-lock.rb +0 -40
  85. data/test/test_subc-i-must.rb +0 -30
  86. data/test/test_subc-i-to_s_family.rb +0 -26
  87. data/test/test_subc-i-validation_specific_conditions.rb +0 -297
  88. data/test/test_subc-i-validation_with_getter.rb +0 -33
  89. data/test/test_version.rb +0 -13
@@ -1,7 +1,7 @@
1
- class Striuct
1
+ # frozen_string_literal: true
2
2
 
3
+ class Striuct
3
4
  # namespace for .to_struct_class, #to_struct
4
5
  module Structs
5
6
  end
6
-
7
- end
7
+ end
metadata CHANGED
@@ -1,163 +1,84 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: striuct
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kenichi Kamiya
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-29 00:00:00.000000000 Z
11
+ date: 2021-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: validation
15
15
  requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '0.1'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '0.1'
27
- - !ruby/object:Gem::Dependency
28
- name: optionalargument
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '0.3'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '0.3'
41
- - !ruby/object:Gem::Dependency
42
- name: keyvalidatable
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: test-unit
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: 3.2.6
62
- - - "<"
63
- - !ruby/object:Gem::Version
64
- version: '4'
65
- type: :development
66
- prerelease: false
67
- version_requirements: !ruby/object:Gem::Requirement
68
16
  requirements:
69
17
  - - ">="
70
18
  - !ruby/object:Gem::Version
71
- version: 3.2.6
19
+ version: 0.2.2
72
20
  - - "<"
73
21
  - !ruby/object:Gem::Version
74
- version: '4'
75
- - !ruby/object:Gem::Dependency
76
- name: yard
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: 0.9.11
82
- - - "<"
83
- - !ruby/object:Gem::Version
84
- version: '2.0'
85
- type: :development
22
+ version: 0.3.0
23
+ type: :runtime
86
24
  prerelease: false
87
25
  version_requirements: !ruby/object:Gem::Requirement
88
26
  requirements:
89
27
  - - ">="
90
28
  - !ruby/object:Gem::Version
91
- version: 0.9.11
29
+ version: 0.2.2
92
30
  - - "<"
93
31
  - !ruby/object:Gem::Version
94
- version: '2.0'
32
+ version: 0.3.0
95
33
  - !ruby/object:Gem::Dependency
96
- name: rake
34
+ name: optionalargument
97
35
  requirement: !ruby/object:Gem::Requirement
98
36
  requirements:
99
37
  - - ">="
100
38
  - !ruby/object:Gem::Version
101
- version: '10'
39
+ version: 0.5.1
102
40
  - - "<"
103
41
  - !ruby/object:Gem::Version
104
- version: '20'
105
- type: :development
42
+ version: 0.6.0
43
+ type: :runtime
106
44
  prerelease: false
107
45
  version_requirements: !ruby/object:Gem::Requirement
108
46
  requirements:
109
47
  - - ">="
110
48
  - !ruby/object:Gem::Version
111
- version: '10'
49
+ version: 0.5.1
112
50
  - - "<"
113
51
  - !ruby/object:Gem::Version
114
- version: '20'
52
+ version: 0.6.0
115
53
  - !ruby/object:Gem::Dependency
116
- name: bundler
54
+ name: keyvalidatable
117
55
  requirement: !ruby/object:Gem::Requirement
118
56
  requirements:
119
57
  - - ">="
120
58
  - !ruby/object:Gem::Version
121
- version: '1.10'
59
+ version: 0.2.0
122
60
  - - "<"
123
61
  - !ruby/object:Gem::Version
124
- version: '2'
125
- type: :development
62
+ version: 0.3.0
63
+ type: :runtime
126
64
  prerelease: false
127
65
  version_requirements: !ruby/object:Gem::Requirement
128
66
  requirements:
129
67
  - - ">="
130
68
  - !ruby/object:Gem::Version
131
- version: '1.10'
69
+ version: 0.2.0
132
70
  - - "<"
133
71
  - !ruby/object:Gem::Version
134
- version: '2'
135
- description: |-
136
- Struct++ library.
137
-
138
- ---
139
-
140
- Validatable, Inheritable, Member Aliasing,
141
- Conflict Management, Default Value, Divide nil with unassign,
142
- Lock setter of each member, Hash flendly API, ... And more Struct++ features :)
72
+ version: 0.3.0
73
+ description: " Struct + validation + inheritable + default_value + etc...\n"
143
74
  email:
144
75
  - kachick1+ruby@gmail.com
145
76
  executables: []
146
77
  extensions: []
147
78
  extra_rdoc_files: []
148
79
  files:
149
- - ".gitignore"
150
- - ".travis.yml"
151
- - ".yardopts"
152
- - Gemfile
153
- - MIT-LICENSE
80
+ - MIT-LICENSE.txt
154
81
  - README.md
155
- - Rakefile
156
- - benchmark/basics.rb
157
- - example/README.rb
158
- - example/example1.rb
159
- - example/example2.rb
160
- - example/see_trace.rb
161
82
  - lib/striuct.rb
162
83
  - lib/striuct/classmethods/README.md
163
84
  - lib/striuct/classmethods/adjustment.rb
@@ -198,45 +119,15 @@ files:
198
119
  - lib/striuct/requirements.rb
199
120
  - lib/striuct/singleton_class.rb
200
121
  - lib/striuct/structs.rb
201
- - striuct.gemspec
202
- - test/helper.rb
203
- - test/test_sglc-constructor.rb
204
- - test/test_subc-c-add_members.rb
205
- - test/test_subc-c-close_member.rb
206
- - test/test_subc-c-constructor.rb
207
- - test/test_subc-c-copy.rb
208
- - test/test_subc-c-freeze.rb
209
- - test/test_subc-c-inheritable.rb
210
- - test/test_subc-c-safety_naming.rb
211
- - test/test_subc-f-alias_member.rb
212
- - test/test_subc-f-enum.rb
213
- - test/test_subc-f-predicate.rb
214
- - test/test_subc-f-to_struct.rb
215
- - test/test_subc-f-validation_util.rb
216
- - test/test_subc-f_debug.rb
217
- - test/test_subc-f_name.rb
218
- - test/test_subc-i-accessor.rb
219
- - test/test_subc-i-adjuster.rb
220
- - test/test_subc-i-assign.rb
221
- - test/test_subc-i-basic.rb
222
- - test/test_subc-i-cast.rb
223
- - test/test_subc-i-compare.rb
224
- - test/test_subc-i-copy.rb
225
- - test/test_subc-i-default_value.rb
226
- - test/test_subc-i-freeze.rb
227
- - test/test_subc-i-hashlike.rb
228
- - test/test_subc-i-keyvalidatable.rb
229
- - test/test_subc-i-lock.rb
230
- - test/test_subc-i-must.rb
231
- - test/test_subc-i-to_s_family.rb
232
- - test/test_subc-i-validation_specific_conditions.rb
233
- - test/test_subc-i-validation_with_getter.rb
234
- - test/test_version.rb
235
122
  homepage: https://github.com/kachick/striuct
236
123
  licenses:
237
124
  - MIT
238
- metadata: {}
239
- post_install_message:
125
+ metadata:
126
+ documentation_uri: https://kachick.github.io/striuct/
127
+ homepage_uri: https://github.com/kachick/striuct
128
+ source_code_uri: https://github.com/kachick/striuct
129
+ bug_tracker_uri: https://github.com/kachick/striuct/issues
130
+ post_install_message:
240
131
  rdoc_options: []
241
132
  require_paths:
242
133
  - lib
@@ -244,51 +135,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
244
135
  requirements:
245
136
  - - ">="
246
137
  - !ruby/object:Gem::Version
247
- version: '2.2'
138
+ version: 2.6.0
248
139
  required_rubygems_version: !ruby/object:Gem::Requirement
249
140
  requirements:
250
141
  - - ">="
251
142
  - !ruby/object:Gem::Version
252
143
  version: '0'
253
144
  requirements: []
254
- rubyforge_project:
255
- rubygems_version: 2.7.3
256
- signing_key:
145
+ rubygems_version: 3.1.4
146
+ signing_key:
257
147
  specification_version: 4
258
- summary: Struct++ library. --- Validatable, Inheritable, Member Aliasing, Conflict
259
- Management, Default Value, Divide nil with unassign, Lock setter of each member,
260
- Hash flendly API, ... And more Struct++ features :)
261
- test_files:
262
- - test/helper.rb
263
- - test/test_sglc-constructor.rb
264
- - test/test_subc-c-add_members.rb
265
- - test/test_subc-c-close_member.rb
266
- - test/test_subc-c-constructor.rb
267
- - test/test_subc-c-copy.rb
268
- - test/test_subc-c-freeze.rb
269
- - test/test_subc-c-inheritable.rb
270
- - test/test_subc-c-safety_naming.rb
271
- - test/test_subc-f-alias_member.rb
272
- - test/test_subc-f-enum.rb
273
- - test/test_subc-f-predicate.rb
274
- - test/test_subc-f-to_struct.rb
275
- - test/test_subc-f-validation_util.rb
276
- - test/test_subc-f_debug.rb
277
- - test/test_subc-f_name.rb
278
- - test/test_subc-i-accessor.rb
279
- - test/test_subc-i-adjuster.rb
280
- - test/test_subc-i-assign.rb
281
- - test/test_subc-i-basic.rb
282
- - test/test_subc-i-cast.rb
283
- - test/test_subc-i-compare.rb
284
- - test/test_subc-i-copy.rb
285
- - test/test_subc-i-default_value.rb
286
- - test/test_subc-i-freeze.rb
287
- - test/test_subc-i-hashlike.rb
288
- - test/test_subc-i-keyvalidatable.rb
289
- - test/test_subc-i-lock.rb
290
- - test/test_subc-i-must.rb
291
- - test/test_subc-i-to_s_family.rb
292
- - test/test_subc-i-validation_specific_conditions.rb
293
- - test/test_subc-i-validation_with_getter.rb
294
- - test/test_version.rb
148
+ summary: Struct++
149
+ test_files: []
data/.gitignore DELETED
@@ -1,35 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- coverage
6
- coverage.data
7
- InstalledFiles
8
- lib/bundler/man
9
- pkg
10
- rdoc
11
- spec/reports
12
- test/tmp
13
- test/version_tmp
14
- tmp
15
-
16
- # bundler
17
- vendor/
18
-
19
- # YARD artifacts
20
- .yardoc
21
- _yardoc
22
- doc/
23
-
24
- # tmp-old
25
- .old
26
-
27
- # editor
28
- *~
29
- .redcar
30
-
31
- # other
32
- *.lock
33
- *.bak
34
- tool/
35
- *\#*
data/.travis.yml DELETED
@@ -1,17 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - ruby-head
5
- - 2.5
6
- - 2.4
7
- - rbx-3
8
- - jruby-head
9
-
10
- matrix:
11
- allow_failures:
12
- - rvm: ruby-head
13
- - rvm: rbx-3
14
- - rvm: jruby-head
15
-
16
- before_install:
17
- - gem install bundler
data/.yardopts DELETED
@@ -1 +0,0 @@
1
- --readme README.md --private lib/**/*.rb --exclude attributes|hashdeepdupulicatable - MIT-LICENSE
data/Gemfile DELETED
@@ -1,11 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gemspec
4
-
5
- group :development do
6
- gem 'rake'
7
- end
8
-
9
- group :test do
10
- gem 'rake'
11
- end
data/MIT-LICENSE DELETED
@@ -1,22 +0,0 @@
1
- (The MIT X11 License)
2
-
3
- Copyright (c) 2011 Kenichi Kamiya
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- 'Software'), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
11
- the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be
14
- included in all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile DELETED
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env rake
2
- require 'bundler/gem_tasks'
3
-
4
- require 'rake/testtask'
5
-
6
- task default: [:test]
7
-
8
- Rake::TestTask.new do |tt|
9
- tt.verbose = true
10
- tt.warning = true
11
- end
data/benchmark/basics.rb DELETED
@@ -1,56 +0,0 @@
1
- #/usr/bin/ruby -w
2
-
3
- require 'benchmark'
4
- require_relative '../lib/striuct'
5
-
6
- XStruct = Struct.new :any, :no_use1, :no_use2
7
-
8
- XStriuct = Striuct.define do
9
- member :any
10
- member :int, Integer
11
- member :truthy, ->v{v}
12
- end
13
-
14
- xstruct = XStruct.new
15
- xstriuct = XStriuct.new
16
-
17
- TIMES = 100000
18
- OBJ = 123
19
-
20
- Benchmark.bm do |bm|
21
- bm.report 'Struct(equal Noguard): Setter' do
22
- TIMES.times do
23
- xstruct.any = OBJ
24
- end
25
- end
26
-
27
- bm.report 'Struct: Reader' do
28
- TIMES.times do
29
- xstruct.any
30
- end
31
- end
32
-
33
- bm.report 'Striuct(when Noguard): Setter' do
34
- TIMES.times do
35
- xstriuct.any = OBJ
36
- end
37
- end
38
-
39
- bm.report 'Striuct(guard under class): Setter' do
40
- TIMES.times do
41
- xstriuct.int = OBJ
42
- end
43
- end
44
-
45
- bm.report 'Striuct(guard under function)' do
46
- TIMES.times do
47
- xstriuct.truthy = OBJ
48
- end
49
- end
50
-
51
- bm.report 'Striuct: Reader' do
52
- TIMES.times do
53
- xstriuct.any
54
- end
55
- end
56
- end