aws-sdk-code-generator 0.1.0.pre

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 (78) hide show
  1. checksums.yaml +7 -0
  2. data/lib/aws-sdk-code-generator.rb +91 -0
  3. data/lib/aws-sdk-code-generator/apply_docs.rb +37 -0
  4. data/lib/aws-sdk-code-generator/code_builder.rb +201 -0
  5. data/lib/aws-sdk-code-generator/dsl/access_control_statement.rb +23 -0
  6. data/lib/aws-sdk-code-generator/dsl/attribute_accessor.rb +43 -0
  7. data/lib/aws-sdk-code-generator/dsl/attribute_reader.rb +11 -0
  8. data/lib/aws-sdk-code-generator/dsl/attribute_writer.rb +11 -0
  9. data/lib/aws-sdk-code-generator/dsl/autoload_statement.rb +15 -0
  10. data/lib/aws-sdk-code-generator/dsl/block_param.rb +11 -0
  11. data/lib/aws-sdk-code-generator/dsl/class.rb +27 -0
  12. data/lib/aws-sdk-code-generator/dsl/code_literal.rb +66 -0
  13. data/lib/aws-sdk-code-generator/dsl/code_object.rb +33 -0
  14. data/lib/aws-sdk-code-generator/dsl/docstring.rb +36 -0
  15. data/lib/aws-sdk-code-generator/dsl/eigenclass.rb +15 -0
  16. data/lib/aws-sdk-code-generator/dsl/extend_statement.rb +12 -0
  17. data/lib/aws-sdk-code-generator/dsl/formatter.rb +25 -0
  18. data/lib/aws-sdk-code-generator/dsl/include_statement.rb +17 -0
  19. data/lib/aws-sdk-code-generator/dsl/main.rb +105 -0
  20. data/lib/aws-sdk-code-generator/dsl/method.rb +108 -0
  21. data/lib/aws-sdk-code-generator/dsl/module.rb +167 -0
  22. data/lib/aws-sdk-code-generator/dsl/option_tag.rb +36 -0
  23. data/lib/aws-sdk-code-generator/dsl/param.rb +43 -0
  24. data/lib/aws-sdk-code-generator/dsl/param_list.rb +38 -0
  25. data/lib/aws-sdk-code-generator/dsl/return_tag.rb +19 -0
  26. data/lib/aws-sdk-code-generator/dsl/tag_default.rb +20 -0
  27. data/lib/aws-sdk-code-generator/dsl/tag_docstring.rb +27 -0
  28. data/lib/aws-sdk-code-generator/dsl/tag_type.rb +18 -0
  29. data/lib/aws-sdk-code-generator/errors.rb +30 -0
  30. data/lib/aws-sdk-code-generator/gem_builder.rb +71 -0
  31. data/lib/aws-sdk-code-generator/generators/client_api_module.rb +334 -0
  32. data/lib/aws-sdk-code-generator/generators/client_class.rb +389 -0
  33. data/lib/aws-sdk-code-generator/generators/client_operation_documentation.rb +166 -0
  34. data/lib/aws-sdk-code-generator/generators/errors_module.rb +25 -0
  35. data/lib/aws-sdk-code-generator/generators/resource/action.rb +88 -0
  36. data/lib/aws-sdk-code-generator/generators/resource/batch_builder.rb +211 -0
  37. data/lib/aws-sdk-code-generator/generators/resource/builder.rb +50 -0
  38. data/lib/aws-sdk-code-generator/generators/resource/client_getter.rb +15 -0
  39. data/lib/aws-sdk-code-generator/generators/resource/client_request.rb +49 -0
  40. data/lib/aws-sdk-code-generator/generators/resource/client_request_docs.rb +97 -0
  41. data/lib/aws-sdk-code-generator/generators/resource/client_request_params.rb +88 -0
  42. data/lib/aws-sdk-code-generator/generators/resource/collection_class.rb +180 -0
  43. data/lib/aws-sdk-code-generator/generators/resource/data_attribute_getter.rb +24 -0
  44. data/lib/aws-sdk-code-generator/generators/resource/data_loaded_method.rb +18 -0
  45. data/lib/aws-sdk-code-generator/generators/resource/data_method.rb +49 -0
  46. data/lib/aws-sdk-code-generator/generators/resource/exists_method.rb +29 -0
  47. data/lib/aws-sdk-code-generator/generators/resource/extract_identifier_method.rb +32 -0
  48. data/lib/aws-sdk-code-generator/generators/resource/has_association.rb +101 -0
  49. data/lib/aws-sdk-code-generator/generators/resource/has_many_association.rb +108 -0
  50. data/lib/aws-sdk-code-generator/generators/resource/identifier_getter.rb +26 -0
  51. data/lib/aws-sdk-code-generator/generators/resource/identifiers_method.rb +28 -0
  52. data/lib/aws-sdk-code-generator/generators/resource/initialize_method.rb +67 -0
  53. data/lib/aws-sdk-code-generator/generators/resource/load_method.rb +65 -0
  54. data/lib/aws-sdk-code-generator/generators/resource/value_source.rb +68 -0
  55. data/lib/aws-sdk-code-generator/generators/resource/waiter_method.rb +61 -0
  56. data/lib/aws-sdk-code-generator/generators/resource_class.rb +325 -0
  57. data/lib/aws-sdk-code-generator/generators/response_structure_example.rb +83 -0
  58. data/lib/aws-sdk-code-generator/generators/root_resource_class.rb +42 -0
  59. data/lib/aws-sdk-code-generator/generators/service_documentation.rb +64 -0
  60. data/lib/aws-sdk-code-generator/generators/shared_example.rb +132 -0
  61. data/lib/aws-sdk-code-generator/generators/structure_type_class.rb +95 -0
  62. data/lib/aws-sdk-code-generator/generators/syntax_example.rb +169 -0
  63. data/lib/aws-sdk-code-generator/generators/types_module.rb +52 -0
  64. data/lib/aws-sdk-code-generator/generators/waiter_class.rb +62 -0
  65. data/lib/aws-sdk-code-generator/generators/waiters_module.rb +20 -0
  66. data/lib/aws-sdk-code-generator/hash_formatter.rb +122 -0
  67. data/lib/aws-sdk-code-generator/helper.rb +215 -0
  68. data/lib/aws-sdk-code-generator/service.rb +126 -0
  69. data/lib/aws-sdk-code-generator/underscore.rb +45 -0
  70. data/lib/aws-sdk-code-generator/view.rb +23 -0
  71. data/lib/aws-sdk-code-generator/views.rb +3 -0
  72. data/lib/aws-sdk-code-generator/views/features/env.rb +24 -0
  73. data/lib/aws-sdk-code-generator/views/features/step_definitions.rb +20 -0
  74. data/lib/aws-sdk-code-generator/views/gemspec.rb +41 -0
  75. data/lib/aws-sdk-code-generator/views/service_module.rb +85 -0
  76. data/lib/aws-sdk-code-generator/views/spec/spec_helper.rb +24 -0
  77. data/lib/aws-sdk-code-generator/views/version.rb +16 -0
  78. metadata +120 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cd7b6eb0cfae166558e734fdb8e7c9236f7f14d6
4
+ data.tar.gz: 8cad3f3e2213a13d558259216831b08e1e4d5323
5
+ SHA512:
6
+ metadata.gz: c970544cd6c87e3794260f4dda931f717c9e7ef9dfb43693b35c0d22f0a3b1ec850b3ff281b7e9e825591905a2a45b19168337521c8039c2e648db3e66b1d525
7
+ data.tar.gz: 6a927656fc80f7df13cc27c03f1675a81fb3f000bcec4b6fb3ba6d672ad1e37a74296ccaff8b37137e3ce4912780bf1a1818f4b7c03e13ca3b8781f9a7375ade
@@ -0,0 +1,91 @@
1
+ require_relative 'aws-sdk-code-generator/apply_docs'
2
+ require_relative 'aws-sdk-code-generator/helper'
3
+ require_relative 'aws-sdk-code-generator/service'
4
+ require_relative 'aws-sdk-code-generator/underscore'
5
+ require_relative 'aws-sdk-code-generator/view'
6
+
7
+ require_relative 'aws-sdk-code-generator/code_builder'
8
+ require_relative 'aws-sdk-code-generator/gem_builder'
9
+
10
+ # views
11
+ require_relative 'aws-sdk-code-generator/views/features/env'
12
+ require_relative 'aws-sdk-code-generator/views/features/step_definitions'
13
+ require_relative 'aws-sdk-code-generator/views/gemspec'
14
+ require_relative 'aws-sdk-code-generator/views/service_module'
15
+ require_relative 'aws-sdk-code-generator/views/spec/spec_helper'
16
+ require_relative 'aws-sdk-code-generator/views/version'
17
+
18
+ module AwsSdkCodeGenerator
19
+
20
+ autoload :Errors, 'aws-sdk-code-generator/errors'
21
+ autoload :HashFormatter, 'aws-sdk-code-generator/hash_formatter'
22
+ autoload :Helper, 'aws-sdk-code-generator/helper'
23
+
24
+ module Dsl
25
+ autoload :AccessControlStatement, 'aws-sdk-code-generator/dsl/access_control_statement'
26
+ autoload :AutoloadStatement, 'aws-sdk-code-generator/dsl/autoload_statement'
27
+ autoload :AttributeAccessor, 'aws-sdk-code-generator/dsl/attribute_accessor'
28
+ autoload :AttributeReader, 'aws-sdk-code-generator/dsl/attribute_reader'
29
+ autoload :AttributeWriter, 'aws-sdk-code-generator/dsl/attribute_writer'
30
+ autoload :BlockParam, 'aws-sdk-code-generator/dsl/block_param'
31
+ autoload :Class, 'aws-sdk-code-generator/dsl/class'
32
+ autoload :CodeLiteral, 'aws-sdk-code-generator/dsl/code_literal'
33
+ autoload :CodeObject, 'aws-sdk-code-generator/dsl/code_object'
34
+ autoload :Docstring, 'aws-sdk-code-generator/dsl/docstring'
35
+ autoload :Eigenclass, 'aws-sdk-code-generator/dsl/eigenclass'
36
+ autoload :ExtendStatement, 'aws-sdk-code-generator/dsl/extend_statement'
37
+ autoload :IncludeStatement, 'aws-sdk-code-generator/dsl/include_statement'
38
+ autoload :Main, 'aws-sdk-code-generator/dsl/main'
39
+ autoload :Method, 'aws-sdk-code-generator/dsl/method'
40
+ autoload :Module, 'aws-sdk-code-generator/dsl/module'
41
+ autoload :OptionTag, 'aws-sdk-code-generator/dsl/option_tag'
42
+ autoload :Param, 'aws-sdk-code-generator/dsl/param'
43
+ autoload :ParamList, 'aws-sdk-code-generator/dsl/param_list'
44
+ autoload :ReturnTag, 'aws-sdk-code-generator/dsl/return_tag'
45
+ autoload :TagDocstring, 'aws-sdk-code-generator/dsl/tag_docstring'
46
+ autoload :TagDefault, 'aws-sdk-code-generator/dsl/tag_default'
47
+ autoload :TagType, 'aws-sdk-code-generator/dsl/tag_type'
48
+ end
49
+
50
+ module Generators
51
+ autoload :ClientApiModule, 'aws-sdk-code-generator/generators/client_api_module'
52
+ autoload :ClientClass, 'aws-sdk-code-generator/generators/client_class'
53
+ autoload :ClientOperationDocumentation, 'aws-sdk-code-generator/generators/client_operation_documentation'
54
+ autoload :ErrorsModule, 'aws-sdk-code-generator/generators/errors_module'
55
+ autoload :TypesModule, 'aws-sdk-code-generator/generators/types_module'
56
+ autoload :RootResourceClass, 'aws-sdk-code-generator/generators/root_resource_class'
57
+ autoload :ResourceClass, 'aws-sdk-code-generator/generators/resource_class'
58
+ autoload :ResponseStructureExample, 'aws-sdk-code-generator/generators/response_structure_example'
59
+ autoload :ServiceDocumentation, 'aws-sdk-code-generator/generators/service_documentation'
60
+ autoload :SharedExample, 'aws-sdk-code-generator/generators/shared_example'
61
+ autoload :StructureTypeClass, 'aws-sdk-code-generator/generators/structure_type_class'
62
+ autoload :SyntaxExample, 'aws-sdk-code-generator/generators/syntax_example'
63
+ autoload :WaiterClass, 'aws-sdk-code-generator/generators/waiter_class'
64
+ autoload :WaitersModule, 'aws-sdk-code-generator/generators/waiters_module'
65
+
66
+ module Resource
67
+ autoload :Action, 'aws-sdk-code-generator/generators/resource/action'
68
+ autoload :BatchBuilder, 'aws-sdk-code-generator/generators/resource/batch_builder'
69
+ autoload :Builder, 'aws-sdk-code-generator/generators/resource/builder'
70
+ autoload :ClientGetter, 'aws-sdk-code-generator/generators/resource/client_getter'
71
+ autoload :ClientRequest, 'aws-sdk-code-generator/generators/resource/client_request'
72
+ autoload :ClientRequestParams, 'aws-sdk-code-generator/generators/resource/client_request_params'
73
+ autoload :ClientRequestDocs, 'aws-sdk-code-generator/generators/resource/client_request_docs'
74
+ autoload :CollectionClass, 'aws-sdk-code-generator/generators/resource/collection_class'
75
+ autoload :DataMethod, 'aws-sdk-code-generator/generators/resource/data_method'
76
+ autoload :DataAttributeGetter, 'aws-sdk-code-generator/generators/resource/data_attribute_getter'
77
+ autoload :DataLoadedMethod, 'aws-sdk-code-generator/generators/resource/data_loaded_method'
78
+ autoload :ExistsMethod, 'aws-sdk-code-generator/generators/resource/exists_method'
79
+ autoload :ExtractIdentifierMethod, 'aws-sdk-code-generator/generators/resource/extract_identifier_method'
80
+ autoload :HasAssociation, 'aws-sdk-code-generator/generators/resource/has_association'
81
+ autoload :HasManyAssociation, 'aws-sdk-code-generator/generators/resource/has_many_association'
82
+ autoload :InitializeMethod, 'aws-sdk-code-generator/generators/resource/initialize_method'
83
+ autoload :IdentifiersMethod, 'aws-sdk-code-generator/generators/resource/identifiers_method'
84
+ autoload :IdentifierGetter, 'aws-sdk-code-generator/generators/resource/identifier_getter'
85
+ autoload :LoadMethod, 'aws-sdk-code-generator/generators/resource/load_method'
86
+ autoload :ValueSource, 'aws-sdk-code-generator/generators/resource/value_source'
87
+ autoload :WaiterMethod, 'aws-sdk-code-generator/generators/resource/waiter_method'
88
+ end
89
+ end
90
+
91
+ end
@@ -0,0 +1,37 @@
1
+ module AwsSdkCodeGenerator
2
+ class ApplyDocs
3
+
4
+ def initialize(api)
5
+ @api = api
6
+ end
7
+
8
+ # @param [Hash, nil] docs
9
+ def apply(docs)
10
+ if docs
11
+ apply_docs(docs)
12
+ end
13
+ end
14
+
15
+ private
16
+
17
+ def apply_docs(docs)
18
+ @api['documentation'] = docs['service']
19
+ docs['operations'].each do |name, docstring|
20
+ @api['operations'][name]['documentation'] = docstring
21
+ end
22
+ docs['shapes'].each do |shape_name, shape_docs|
23
+ @api['shapes'][shape_name]['documentation'] = shape_docs['base']
24
+ shape_docs['refs'].each do |ref, ref_docs|
25
+ ref_shape, ref_member = ref.split('$')
26
+ case @api['shapes'][ref_shape]['type']
27
+ when 'structure'
28
+ @api['shapes'][ref_shape]['members'][ref_member]['documentation'] = ref_docs
29
+ when 'list', 'map'
30
+ @api['shapes'][ref_shape][ref_member]['documentation'] = ref_docs
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,201 @@
1
+ module AwsSdkCodeGenerator
2
+ class CodeBuilder
3
+
4
+ # @api private
5
+ GENERATED_SRC_WARNING = <<-WARNING
6
+ # WARNING ABOUT GENERATED CODE
7
+ #
8
+ # This file is generated. See the contributing for info on making contributions:
9
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
10
+ #
11
+ # WARNING ABOUT GENERATED CODE
12
+
13
+ WARNING
14
+
15
+ include Helper
16
+
17
+ # @option options [required, Service] :service
18
+ def initialize(options)
19
+ @service = options.fetch(:service)
20
+ # TODO : remove these
21
+ @add_plugins = @service.add_plugins
22
+ @remove_plugins = @service.remove_plugins
23
+ @gem_dependencies = @service.gem_dependencies
24
+ @module_names = @service.module_name.split('::')
25
+ @api = @service.api
26
+ @paginators = @service.paginators
27
+ @waiters = @service.waiters
28
+ @resources = @service.resources
29
+ @examples = @service.examples
30
+ end
31
+
32
+ def source
33
+ svc_mod = new_svc_module
34
+ @gem_dependencies.each { |gem_name, _| svc_mod.require(gem_name) }
35
+ svc_mod.docstring(service_docstring)
36
+ each_module do |mod, _|
37
+ svc_mod.add(mod)
38
+ end
39
+ @callback.call(svc_mod) if @callback
40
+ svc_mod.root.to_s
41
+ end
42
+
43
+ # @option options [String] :prefix
44
+ # @return [Enumerable<String<path>, String<code>>]
45
+ def source_files(options = {})
46
+ prefix = options.fetch(:prefix, nil)
47
+ prefix ||= @module_names.map { |n| underscore(n) }.join('/')
48
+ # prefix should always be the gemname. The service-module (the first
49
+ # item yielded below) should be moved from here into the gem builder
50
+ # The source code builder should simply yield the empty module
51
+ Enumerator.new do |y|
52
+ y.yield("#{prefix}.rb", Views::ServiceModule.new(service: @service, prefix: prefix).render)
53
+ y.yield("#{prefix}/customizations.rb", '')
54
+ each_module do |mod, type, code|
55
+ case type
56
+ when :unwrapped
57
+ filename = File.join(prefix, underscore(mod.name) + '.rb')
58
+ y.yield(filename, GENERATED_SRC_WARNING + wrap(mod))
59
+ when :wrapped # dsl module
60
+ filename = File.join(prefix, underscore(mod.name) + '.rb')
61
+ y.yield(filename, GENERATED_SRC_WARNING + mod.root.to_s)
62
+ else
63
+ raise "expected :wrapped or :unwrapped"
64
+ end
65
+ end
66
+ end
67
+ end
68
+
69
+ private
70
+
71
+ def each_module(&block)
72
+ yield(types_module, :unwrapped)
73
+ yield(client_api_module, :unwrapped)
74
+ yield(client_class, :wrapped)
75
+ yield(errors_module, :unwrapped)
76
+ yield(waiters_module, :wrapped) if @waiters
77
+ yield(root_resource_class, :unwrapped)
78
+ if @resources
79
+ @resources['resources'].keys.sort.each do |name|
80
+ yield(resource_class(name, @resources['resources'][name]), :unwrapped)
81
+ end
82
+ end
83
+ end
84
+
85
+ def new_svc_module
86
+ @module_names.inject(Dsl::Main.new) do |mod, module_name|
87
+ mod.module(module_name)
88
+ end
89
+ end
90
+
91
+ def wrap(mod)
92
+ svc_mod = new_svc_module
93
+ svc_mod.add(mod)
94
+ svc_mod.root.to_s
95
+ end
96
+
97
+ def service_module(autoload_prefix)
98
+ autoloads = Generators::ServiceAutoloads.new(
99
+ prefix: autoload_prefix,
100
+ resources: @resources,
101
+ waiters: !!@waiters
102
+ )
103
+ svc_mod = new_svc_module
104
+ @gem_dependencies.each { |gem_name, _| svc_mod.require(gem_name) }
105
+ svc_mod.docstring(service_docstring)
106
+ svc_mod.code("GEM_VERSION = '#{@service.gem_version}'")
107
+ autoloads.apply(svc_mod)
108
+ @callback.call(svc_mod) if @callback
109
+ svc_mod.root.to_s
110
+ end
111
+
112
+ def types_module
113
+ Generators::TypesModule.new(api: @api)
114
+ end
115
+
116
+ def client_api_module
117
+ Generators::ClientApiModule.new(api: @api, paginators:@paginators)
118
+ end
119
+
120
+ def client_class(svc_mod = new_svc_module)
121
+ klass = Generators::ClientClass.new(
122
+ parent: svc_mod,
123
+ identifier: @module_names.last.downcase,
124
+ api: @api,
125
+ waiters: @waiters,
126
+ examples: @examples,
127
+ add_plugins: @add_plugins,
128
+ remove_plugins: @remove_plugins,
129
+ gem_name: @service.gem_name,
130
+ gem_version: @service.gem_version,
131
+ )
132
+ svc_mod.add(klass)
133
+ klass
134
+ end
135
+
136
+ def errors_module
137
+ Generators::ErrorsModule.new(api: @api)
138
+ end
139
+
140
+ def waiters_module(svc_mod = new_svc_module)
141
+ klass = Generators::WaitersModule.new(
142
+ parent: svc_mod,
143
+ waiters: @waiters
144
+ )
145
+ svc_mod.add(klass)
146
+ klass
147
+ end
148
+
149
+ def root_resource_class
150
+ Generators::RootResourceClass.new({
151
+ api: @api,
152
+ resources: @resources,
153
+ paginators: @paginators,
154
+ var_name: underscore(@module_names.last),
155
+ })
156
+ end
157
+
158
+ def resource_class(resource_name, resource_definition)
159
+ Generators::ResourceClass.new(
160
+ api: @api,
161
+ name: resource_name,
162
+ resource: resource_definition,
163
+ paginators: @paginators,
164
+ waiters: @waiters,
165
+ )
166
+ end
167
+
168
+ def service_docstring
169
+ metadata = @api['metadata'] || {}
170
+ Generators::ServiceDocumentation.new(
171
+ product_name: metadata['serviceFullName'] || @module_names.last,
172
+ namespace: @module_names.join('::'),
173
+ api: @api
174
+ ).docstring
175
+ end
176
+
177
+ # @api private
178
+ # This method can be removed if move to used the combined API and
179
+ # docs JSON document.
180
+ def apply_docs(api, docs)
181
+ api['documentation'] = docs['service']
182
+ docs['operations'].each do |name, docstring|
183
+ api['operations'][name]['documentation'] = docstring
184
+ end
185
+ docs['shapes'].each do |shape_name, shape_docs|
186
+ api['shapes'][shape_name]['documentation'] = shape_docs['base']
187
+ shape_docs['refs'].each do |ref, ref_docs|
188
+ ref_shape, ref_member = ref.split('$')
189
+ case api['shapes'][ref_shape]['type']
190
+ when 'structure'
191
+ api['shapes'][ref_shape]['members'][ref_member]['documentation'] = ref_docs
192
+ when 'list', 'map'
193
+ api['shapes'][ref_shape][ref_member]['documentation'] = ref_docs
194
+ end
195
+
196
+ end
197
+ end
198
+ end
199
+
200
+ end
201
+ end
@@ -0,0 +1,23 @@
1
+ module AwsSdkCodeGenerator
2
+ module Dsl
3
+ class AccessControlStatement
4
+
5
+ include Dsl::CodeObject
6
+
7
+ def initialize(access)
8
+ if [:public, :protected, :private].include?(access)
9
+ @access = access
10
+ else
11
+ raise ArgumentError, "expected :public, :protected, or :private"
12
+ end
13
+ end
14
+
15
+ attr_reader :access
16
+
17
+ def lines
18
+ [access.to_s]
19
+ end
20
+
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,43 @@
1
+ module AwsSdkCodeGenerator
2
+ module Dsl
3
+ class AttributeAccessor
4
+
5
+ include Dsl::CodeObject
6
+
7
+ # @option options [Boolean] :api_private (false)
8
+ def initialize(name, options = {}, &block)
9
+ @name = name
10
+ @tags = []
11
+ yield(self) if block
12
+ api_private! if options.fetch(:api_private, false)
13
+ end
14
+
15
+ attr_reader :name
16
+
17
+ def returns(type, options = {})
18
+ @tags << ReturnTag.new(options.merge(type:type))
19
+ end
20
+
21
+ def api_private!
22
+ @tags << "# @api private"
23
+ end
24
+
25
+ def documented?
26
+ !@tags.empty?
27
+ end
28
+
29
+ def lines
30
+ lines = []
31
+ @tags.each do |tag|
32
+ lines.concat(tag.lines.to_a)
33
+ end
34
+ lines + ["#{macro} :#{@name}"]
35
+ end
36
+
37
+ def macro
38
+ "attr_accessor"
39
+ end
40
+
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,11 @@
1
+ module AwsSdkCodeGenerator
2
+ module Dsl
3
+ class AttributeReader < AttributeAccessor
4
+
5
+ def macro
6
+ "attr_reader"
7
+ end
8
+
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module AwsSdkCodeGenerator
2
+ module Dsl
3
+ class AttributeWriter < AttributeAccessor
4
+
5
+ def macro
6
+ "attr_writer"
7
+ end
8
+
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ module AwsSdkCodeGenerator
2
+ module Dsl
3
+ class AutoloadStatement
4
+
5
+ include Dsl::CodeObject
6
+
7
+ def initialize(const_name, path)
8
+ @lines = ["autoload :#{const_name}, '#{path}'"]
9
+ end
10
+
11
+ attr_reader :lines
12
+
13
+ end
14
+ end
15
+ end