rggen-core 0.9.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 (87) hide show
  1. checksums.yaml +7 -0
  2. data/CODE_OF_CONDUCT.md +46 -0
  3. data/LICENSE +21 -0
  4. data/README.md +46 -0
  5. data/exe/rggen +13 -0
  6. data/lib/rggen/core.rb +101 -0
  7. data/lib/rggen/core/base/component.rb +54 -0
  8. data/lib/rggen/core/base/component_factory.rb +84 -0
  9. data/lib/rggen/core/base/feature.rb +46 -0
  10. data/lib/rggen/core/base/feature_factory.rb +37 -0
  11. data/lib/rggen/core/base/hierarchical_accessors.rb +91 -0
  12. data/lib/rggen/core/base/hierarchical_feature_accessors.rb +83 -0
  13. data/lib/rggen/core/base/internal_struct.rb +21 -0
  14. data/lib/rggen/core/base/shared_context.rb +18 -0
  15. data/lib/rggen/core/builder.rb +13 -0
  16. data/lib/rggen/core/builder/builder.rb +150 -0
  17. data/lib/rggen/core/builder/category.rb +116 -0
  18. data/lib/rggen/core/builder/component_entry.rb +29 -0
  19. data/lib/rggen/core/builder/component_registry.rb +47 -0
  20. data/lib/rggen/core/builder/feature_registry.rb +126 -0
  21. data/lib/rggen/core/builder/input_component_registry.rb +35 -0
  22. data/lib/rggen/core/builder/list_feature_entry.rb +98 -0
  23. data/lib/rggen/core/builder/output_component_registry.rb +10 -0
  24. data/lib/rggen/core/builder/simple_feature_entry.rb +39 -0
  25. data/lib/rggen/core/cli.rb +29 -0
  26. data/lib/rggen/core/configuration.rb +19 -0
  27. data/lib/rggen/core/configuration/component.rb +10 -0
  28. data/lib/rggen/core/configuration/component_factory.rb +19 -0
  29. data/lib/rggen/core/configuration/error.rb +16 -0
  30. data/lib/rggen/core/configuration/feature.rb +13 -0
  31. data/lib/rggen/core/configuration/feature_factory.rb +11 -0
  32. data/lib/rggen/core/configuration/hash_loader.rb +15 -0
  33. data/lib/rggen/core/configuration/json_loader.rb +18 -0
  34. data/lib/rggen/core/configuration/loader.rb +11 -0
  35. data/lib/rggen/core/configuration/ruby_loader.rb +15 -0
  36. data/lib/rggen/core/configuration/yaml_loader.rb +18 -0
  37. data/lib/rggen/core/core_extensions/casecmp.rb +12 -0
  38. data/lib/rggen/core/core_extensions/forwardable.rb +12 -0
  39. data/lib/rggen/core/core_extensions/forwardable_workaround.rb +22 -0
  40. data/lib/rggen/core/core_extensions/object.rb +14 -0
  41. data/lib/rggen/core/dsl.rb +30 -0
  42. data/lib/rggen/core/exceptions.rb +29 -0
  43. data/lib/rggen/core/facets.rb +7 -0
  44. data/lib/rggen/core/generator.rb +51 -0
  45. data/lib/rggen/core/input_base/component.rb +30 -0
  46. data/lib/rggen/core/input_base/component_factory.rb +88 -0
  47. data/lib/rggen/core/input_base/feature.rb +130 -0
  48. data/lib/rggen/core/input_base/feature_factory.rb +80 -0
  49. data/lib/rggen/core/input_base/input_data.rb +98 -0
  50. data/lib/rggen/core/input_base/input_matcher.rb +79 -0
  51. data/lib/rggen/core/input_base/input_value.rb +34 -0
  52. data/lib/rggen/core/input_base/json_loader.rb +16 -0
  53. data/lib/rggen/core/input_base/loader.rb +44 -0
  54. data/lib/rggen/core/input_base/property.rb +76 -0
  55. data/lib/rggen/core/input_base/verifier.rb +41 -0
  56. data/lib/rggen/core/input_base/yaml_loader.rb +34 -0
  57. data/lib/rggen/core/options.rb +181 -0
  58. data/lib/rggen/core/output_base/code_generator.rb +59 -0
  59. data/lib/rggen/core/output_base/component.rb +100 -0
  60. data/lib/rggen/core/output_base/component_factory.rb +35 -0
  61. data/lib/rggen/core/output_base/erb_engine.rb +21 -0
  62. data/lib/rggen/core/output_base/feature.rb +147 -0
  63. data/lib/rggen/core/output_base/feature_factory.rb +13 -0
  64. data/lib/rggen/core/output_base/file_writer.rb +40 -0
  65. data/lib/rggen/core/output_base/template_engine.rb +27 -0
  66. data/lib/rggen/core/printers.rb +53 -0
  67. data/lib/rggen/core/register_map.rb +21 -0
  68. data/lib/rggen/core/register_map/component.rb +20 -0
  69. data/lib/rggen/core/register_map/component_factory.rb +19 -0
  70. data/lib/rggen/core/register_map/error.rb +16 -0
  71. data/lib/rggen/core/register_map/feature.rb +22 -0
  72. data/lib/rggen/core/register_map/feature_factory.rb +11 -0
  73. data/lib/rggen/core/register_map/hash_loader.rb +47 -0
  74. data/lib/rggen/core/register_map/input_data.rb +34 -0
  75. data/lib/rggen/core/register_map/json_loader.rb +18 -0
  76. data/lib/rggen/core/register_map/loader.rb +15 -0
  77. data/lib/rggen/core/register_map/ruby_loader.rb +15 -0
  78. data/lib/rggen/core/register_map/yaml_loader.rb +18 -0
  79. data/lib/rggen/core/utility/attribute_setter.rb +53 -0
  80. data/lib/rggen/core/utility/code_utility.rb +64 -0
  81. data/lib/rggen/core/utility/code_utility/code_block.rb +88 -0
  82. data/lib/rggen/core/utility/code_utility/line.rb +51 -0
  83. data/lib/rggen/core/utility/code_utility/source_file.rb +104 -0
  84. data/lib/rggen/core/utility/code_utility/structure_definition.rb +54 -0
  85. data/lib/rggen/core/utility/regexp_patterns.rb +38 -0
  86. data/lib/rggen/core/version.rb +10 -0
  87. metadata +188 -0
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RgGen
4
+ module Core
5
+ module Utility
6
+ module CodeUtility
7
+ class StructureDefinition
8
+ include CodeUtility
9
+
10
+ def initialize
11
+ block_given? && yield(self)
12
+ end
13
+
14
+ def body(&block)
15
+ return unless block_given?
16
+ (@bodies ||= []) << [block, 2]
17
+ end
18
+
19
+ def to_code
20
+ CodeBlock.new do |code|
21
+ code_blocks.each do |block, indent_size|
22
+ indent(code, indent_size) { code.eval_block(&block) }
23
+ end
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def header_code
30
+ end
31
+
32
+ def pre_body_code
33
+ end
34
+
35
+ def post_body_code
36
+ end
37
+
38
+ def footer_code
39
+ end
40
+
41
+ def code_blocks
42
+ blocks = []
43
+ blocks << [method(:header_code), 0]
44
+ blocks << [method(:pre_body_code), 2]
45
+ blocks.concat(Array(@bodies))
46
+ blocks << [method(:post_body_code), 2]
47
+ blocks << [method(:footer_code), 0]
48
+ blocks
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RgGen
4
+ module Core
5
+ module Utility
6
+ module RegexpPatterns
7
+ class << self
8
+ def included(klass)
9
+ klass.extend(self)
10
+ end
11
+ end
12
+
13
+ private
14
+
15
+ VARIABLE_NAME_PATTERN = /[a-z_]\w*/i.freeze
16
+
17
+ def variable_name
18
+ VARIABLE_NAME_PATTERN
19
+ end
20
+
21
+ BINARY_PATTERN = /[+-]?0b[01](?:_?[01])*/i.freeze
22
+
23
+ DECIMAL_PATTERN = /[+-]?(?:[1-9]_?(?:\d_?)*)?\d/.freeze
24
+
25
+ HEXADECIMAL_PATTERN = /[+-]?0x\h(?:_?\h)*/i.freeze
26
+
27
+ INTEGER_PATTERN =
28
+ Regexp.union(
29
+ BINARY_PATTERN, DECIMAL_PATTERN, HEXADECIMAL_PATTERN
30
+ ).freeze
31
+
32
+ def integer
33
+ INTEGER_PATTERN
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RgGen
4
+ module Core
5
+ MAJOR = 0
6
+ MINOR = 9
7
+ PATCH = 0
8
+ VERSION = "#{MAJOR}.#{MINOR}.#{PATCH}"
9
+ end
10
+ end
metadata ADDED
@@ -0,0 +1,188 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rggen-core
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ platform: ruby
6
+ authors:
7
+ - Taichi Ishitani
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-07-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: docile
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.1.5
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.1.5
27
+ - !ruby/object:Gem::Dependency
28
+ name: erubi
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '1.7'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '1.7'
41
+ - !ruby/object:Gem::Dependency
42
+ name: facets
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Core library of RgGen tool.
70
+ email:
71
+ - taichi730@gmail.com
72
+ executables:
73
+ - rggen
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - CODE_OF_CONDUCT.md
78
+ - LICENSE
79
+ - README.md
80
+ - exe/rggen
81
+ - lib/rggen/core.rb
82
+ - lib/rggen/core/base/component.rb
83
+ - lib/rggen/core/base/component_factory.rb
84
+ - lib/rggen/core/base/feature.rb
85
+ - lib/rggen/core/base/feature_factory.rb
86
+ - lib/rggen/core/base/hierarchical_accessors.rb
87
+ - lib/rggen/core/base/hierarchical_feature_accessors.rb
88
+ - lib/rggen/core/base/internal_struct.rb
89
+ - lib/rggen/core/base/shared_context.rb
90
+ - lib/rggen/core/builder.rb
91
+ - lib/rggen/core/builder/builder.rb
92
+ - lib/rggen/core/builder/category.rb
93
+ - lib/rggen/core/builder/component_entry.rb
94
+ - lib/rggen/core/builder/component_registry.rb
95
+ - lib/rggen/core/builder/feature_registry.rb
96
+ - lib/rggen/core/builder/input_component_registry.rb
97
+ - lib/rggen/core/builder/list_feature_entry.rb
98
+ - lib/rggen/core/builder/output_component_registry.rb
99
+ - lib/rggen/core/builder/simple_feature_entry.rb
100
+ - lib/rggen/core/cli.rb
101
+ - lib/rggen/core/configuration.rb
102
+ - lib/rggen/core/configuration/component.rb
103
+ - lib/rggen/core/configuration/component_factory.rb
104
+ - lib/rggen/core/configuration/error.rb
105
+ - lib/rggen/core/configuration/feature.rb
106
+ - lib/rggen/core/configuration/feature_factory.rb
107
+ - lib/rggen/core/configuration/hash_loader.rb
108
+ - lib/rggen/core/configuration/json_loader.rb
109
+ - lib/rggen/core/configuration/loader.rb
110
+ - lib/rggen/core/configuration/ruby_loader.rb
111
+ - lib/rggen/core/configuration/yaml_loader.rb
112
+ - lib/rggen/core/core_extensions/casecmp.rb
113
+ - lib/rggen/core/core_extensions/forwardable.rb
114
+ - lib/rggen/core/core_extensions/forwardable_workaround.rb
115
+ - lib/rggen/core/core_extensions/object.rb
116
+ - lib/rggen/core/dsl.rb
117
+ - lib/rggen/core/exceptions.rb
118
+ - lib/rggen/core/facets.rb
119
+ - lib/rggen/core/generator.rb
120
+ - lib/rggen/core/input_base/component.rb
121
+ - lib/rggen/core/input_base/component_factory.rb
122
+ - lib/rggen/core/input_base/feature.rb
123
+ - lib/rggen/core/input_base/feature_factory.rb
124
+ - lib/rggen/core/input_base/input_data.rb
125
+ - lib/rggen/core/input_base/input_matcher.rb
126
+ - lib/rggen/core/input_base/input_value.rb
127
+ - lib/rggen/core/input_base/json_loader.rb
128
+ - lib/rggen/core/input_base/loader.rb
129
+ - lib/rggen/core/input_base/property.rb
130
+ - lib/rggen/core/input_base/verifier.rb
131
+ - lib/rggen/core/input_base/yaml_loader.rb
132
+ - lib/rggen/core/options.rb
133
+ - lib/rggen/core/output_base/code_generator.rb
134
+ - lib/rggen/core/output_base/component.rb
135
+ - lib/rggen/core/output_base/component_factory.rb
136
+ - lib/rggen/core/output_base/erb_engine.rb
137
+ - lib/rggen/core/output_base/feature.rb
138
+ - lib/rggen/core/output_base/feature_factory.rb
139
+ - lib/rggen/core/output_base/file_writer.rb
140
+ - lib/rggen/core/output_base/template_engine.rb
141
+ - lib/rggen/core/printers.rb
142
+ - lib/rggen/core/register_map.rb
143
+ - lib/rggen/core/register_map/component.rb
144
+ - lib/rggen/core/register_map/component_factory.rb
145
+ - lib/rggen/core/register_map/error.rb
146
+ - lib/rggen/core/register_map/feature.rb
147
+ - lib/rggen/core/register_map/feature_factory.rb
148
+ - lib/rggen/core/register_map/hash_loader.rb
149
+ - lib/rggen/core/register_map/input_data.rb
150
+ - lib/rggen/core/register_map/json_loader.rb
151
+ - lib/rggen/core/register_map/loader.rb
152
+ - lib/rggen/core/register_map/ruby_loader.rb
153
+ - lib/rggen/core/register_map/yaml_loader.rb
154
+ - lib/rggen/core/utility/attribute_setter.rb
155
+ - lib/rggen/core/utility/code_utility.rb
156
+ - lib/rggen/core/utility/code_utility/code_block.rb
157
+ - lib/rggen/core/utility/code_utility/line.rb
158
+ - lib/rggen/core/utility/code_utility/source_file.rb
159
+ - lib/rggen/core/utility/code_utility/structure_definition.rb
160
+ - lib/rggen/core/utility/regexp_patterns.rb
161
+ - lib/rggen/core/version.rb
162
+ homepage: https://github.com/rggen/rggen-core
163
+ licenses:
164
+ - MIT
165
+ metadata:
166
+ bug_tracker_uri: https://github.com/rggen/rggen-core/issues
167
+ source_code_uri: https://github.com/rggen/rggen-core
168
+ wiki_uri: https://github.com/rggen/rggen/wiki
169
+ post_install_message:
170
+ rdoc_options: []
171
+ require_paths:
172
+ - lib
173
+ required_ruby_version: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ version: '2.3'
178
+ required_rubygems_version: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - ">="
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
183
+ requirements: []
184
+ rubygems_version: 3.0.3
185
+ signing_key:
186
+ specification_version: 4
187
+ summary: rggen-core-0.9.0
188
+ test_files: []