striuct 0.6.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
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