redsnow 0.2.0 → 0.2.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -1
- data/README.md +12 -0
- data/ext/snowcrash/bin/snowcrash +0 -0
- data/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.c +5 -2
- data/ext/snowcrash/snowcrash.gyp +7 -2
- data/ext/snowcrash/src/ActionParser.h +141 -81
- data/ext/snowcrash/src/AssetParser.h +19 -11
- data/ext/snowcrash/src/Blueprint.h +44 -14
- data/ext/snowcrash/src/BlueprintParser.h +65 -51
- data/ext/snowcrash/src/BlueprintSourcemap.h +254 -0
- data/ext/snowcrash/src/BlueprintUtility.h +3 -24
- data/ext/snowcrash/src/CBlueprint.cc +40 -31
- data/ext/snowcrash/src/CBlueprint.h +54 -58
- data/ext/snowcrash/src/CBlueprintSourcemap.cc +620 -0
- data/ext/snowcrash/src/CBlueprintSourcemap.h +342 -0
- data/ext/snowcrash/src/CSourceAnnotation.cc +14 -0
- data/ext/snowcrash/src/CodeBlockUtility.h +42 -5
- data/ext/snowcrash/src/HeadersParser.h +84 -42
- data/ext/snowcrash/src/ParameterParser.h +110 -68
- data/ext/snowcrash/src/ParametersParser.h +26 -28
- data/ext/snowcrash/src/PayloadParser.h +164 -83
- data/ext/snowcrash/src/ResourceGroupParser.h +35 -41
- data/ext/snowcrash/src/ResourceParser.h +142 -97
- data/ext/snowcrash/src/SectionParser.h +15 -14
- data/ext/snowcrash/src/SectionParserData.h +11 -2
- data/ext/snowcrash/src/SectionProcessor.h +42 -18
- data/ext/snowcrash/src/Serialize.cc +2 -0
- data/ext/snowcrash/src/Serialize.h +3 -1
- data/ext/snowcrash/src/SerializeJSON.cc +608 -16
- data/ext/snowcrash/src/SerializeJSON.h +4 -1
- data/ext/snowcrash/src/SerializeYAML.cc +367 -19
- data/ext/snowcrash/src/SerializeYAML.h +4 -1
- data/ext/snowcrash/src/SymbolTable.h +12 -1
- data/ext/snowcrash/src/ValuesParser.h +12 -11
- data/ext/snowcrash/src/Version.h +1 -1
- data/ext/snowcrash/src/csnowcrash.cc +7 -3
- data/ext/snowcrash/src/csnowcrash.h +4 -2
- data/ext/snowcrash/src/snowcrash.cc +10 -11
- data/ext/snowcrash/src/snowcrash.h +3 -3
- data/ext/snowcrash/src/snowcrash/snowcrash.cc +38 -8
- data/ext/snowcrash/tools/homebrew/snowcrash.rb +1 -1
- data/lib/redsnow.rb +41 -2
- data/lib/redsnow/binding.rb +93 -8
- data/lib/redsnow/blueprint.rb +48 -25
- data/lib/redsnow/parseresult.rb +9 -2
- data/lib/redsnow/sourcemap.rb +369 -0
- data/lib/redsnow/version.rb +1 -1
- data/test/fixtures/sample-api-ast.json +1 -1
- data/test/fixtures/sample-api-sourcemap.json +169 -0
- data/test/redsnow_binding_test.rb +19 -2
- data/test/redsnow_options_test.rb +42 -0
- data/test/redsnow_parseresult_test.rb +5 -1
- data/test/redsnow_test.rb +5 -0
- metadata +11 -2
data/lib/redsnow/blueprint.rb
CHANGED
@@ -11,6 +11,20 @@ module RedSnow
|
|
11
11
|
class BlueprintNode
|
12
12
|
end
|
13
13
|
|
14
|
+
# Blueprint AST Reference node
|
15
|
+
#
|
16
|
+
# @attr id [String] identifier of the reference
|
17
|
+
#
|
18
|
+
# @abstrac
|
19
|
+
class ReferenceNode < BlueprintNode
|
20
|
+
|
21
|
+
attr_accessor :id
|
22
|
+
|
23
|
+
def initialize(id)
|
24
|
+
@id = id
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
14
28
|
# Blueprint AST node with name and description associated
|
15
29
|
#
|
16
30
|
# @attr name [String] name of the node
|
@@ -137,6 +151,7 @@ module RedSnow
|
|
137
151
|
attr_accessor :default_value
|
138
152
|
attr_accessor :example_value
|
139
153
|
attr_accessor :values
|
154
|
+
|
140
155
|
# @param sc_parameter_handle [FFI::Pointer]
|
141
156
|
def initialize(sc_parameter_handle)
|
142
157
|
@name = RedSnow::Binding.sc_parameter_name(sc_parameter_handle)
|
@@ -145,6 +160,7 @@ module RedSnow
|
|
145
160
|
@use = RedSnow::Binding.sc_parameter_parameter_use(sc_parameter_handle)
|
146
161
|
@default_value = RedSnow::Binding.sc_parameter_default_value(sc_parameter_handle)
|
147
162
|
@example_value = RedSnow::Binding.sc_parameter_example_value(sc_parameter_handle)
|
163
|
+
|
148
164
|
@values = Array.new
|
149
165
|
|
150
166
|
sc_value_collection_handle = RedSnow::Binding.sc_value_collection_handle(sc_parameter_handle)
|
@@ -155,8 +171,7 @@ module RedSnow
|
|
155
171
|
|
156
172
|
for valueIndex in 0..values_size do
|
157
173
|
sc_value_handle = RedSnow::Binding.sc_value_handle(sc_value_collection_handle, valueIndex)
|
158
|
-
|
159
|
-
@values << value
|
174
|
+
@values << RedSnow::Binding.sc_value(sc_value_handle)
|
160
175
|
end
|
161
176
|
end
|
162
177
|
end
|
@@ -181,8 +196,7 @@ module RedSnow
|
|
181
196
|
|
182
197
|
for index in 0..parameters_size do
|
183
198
|
sc_parameter_handle = RedSnow::Binding.sc_parameter_handle(sc_parameter_collection_handle, index)
|
184
|
-
|
185
|
-
@collection << parameter
|
199
|
+
@collection << Parameter.new(sc_parameter_handle)
|
186
200
|
end
|
187
201
|
end
|
188
202
|
end
|
@@ -194,15 +208,16 @@ module RedSnow
|
|
194
208
|
#
|
195
209
|
# @abstract
|
196
210
|
# @attr parameters [Array] ignored
|
197
|
-
# @attr headers [
|
211
|
+
# @attr headers [Headers] array of HTTP header fields of the message or nil
|
198
212
|
# @attr body [String] HTTP-message body or nil
|
199
213
|
# @attr schema [String] HTTP-message body validation schema or nil
|
214
|
+
# @attr reference [Hash] Symbol Reference if the payload is a reference
|
200
215
|
class Payload < NamedBlueprintNode
|
201
216
|
|
202
|
-
attr_accessor :parameters
|
203
217
|
attr_accessor :headers
|
204
218
|
attr_accessor :body
|
205
219
|
attr_accessor :schema
|
220
|
+
attr_accessor :reference
|
206
221
|
|
207
222
|
# @param sc_payload_handle_resource [FFI::Pointer]
|
208
223
|
def initialize(sc_payload_handle_resource)
|
@@ -211,6 +226,12 @@ module RedSnow
|
|
211
226
|
@body = RedSnow::Binding.sc_payload_body(sc_payload_handle_resource)
|
212
227
|
@schema = RedSnow::Binding.sc_payload_schema(sc_payload_handle_resource)
|
213
228
|
|
229
|
+
symbol = RedSnow::Binding.sc_payload_symbol(sc_payload_handle_resource)
|
230
|
+
|
231
|
+
if not symbol.empty?
|
232
|
+
@reference = ReferenceNode.new(symbol)
|
233
|
+
end
|
234
|
+
|
214
235
|
sc_header_collection_handle_payload = RedSnow::Binding.sc_header_collection_handle_payload(sc_payload_handle_resource)
|
215
236
|
@headers = Headers.new(sc_header_collection_handle_payload)
|
216
237
|
end
|
@@ -230,6 +251,7 @@ module RedSnow
|
|
230
251
|
def initialize(sc_transaction_example_handle)
|
231
252
|
@name = RedSnow::Binding.sc_transaction_example_name(sc_transaction_example_handle)
|
232
253
|
@description = RedSnow::Binding.sc_transaction_example_description(sc_transaction_example_handle)
|
254
|
+
|
233
255
|
# BP Resource Actions Examples Requests
|
234
256
|
@requests = Array.new
|
235
257
|
sc_payload_collection_handle_requests = RedSnow::Binding.sc_payload_collection_handle_requests(sc_transaction_example_handle)
|
@@ -239,8 +261,8 @@ module RedSnow
|
|
239
261
|
requests_size = sc_payload_collection_size_requests - 1
|
240
262
|
|
241
263
|
for index in 0..requests_size do
|
242
|
-
|
243
|
-
@requests <<
|
264
|
+
sc_payload_handle = RedSnow::Binding.sc_payload_handle(sc_payload_collection_handle_requests, index)
|
265
|
+
@requests << Payload.new(sc_payload_handle)
|
244
266
|
end
|
245
267
|
end
|
246
268
|
|
@@ -253,8 +275,8 @@ module RedSnow
|
|
253
275
|
responses_size = sc_payload_collection_size_responses - 1
|
254
276
|
|
255
277
|
for index in 0..responses_size do
|
256
|
-
|
257
|
-
@responses <<
|
278
|
+
sc_payload_handle = RedSnow::Binding.sc_payload_handle(sc_payload_collection_handle_responses, index)
|
279
|
+
@responses << Payload.new(sc_payload_handle)
|
258
280
|
end
|
259
281
|
end
|
260
282
|
end
|
@@ -290,8 +312,8 @@ module RedSnow
|
|
290
312
|
examples_size = sc_transaction_example_collection_size - 1
|
291
313
|
|
292
314
|
for index in 0..examples_size do
|
293
|
-
|
294
|
-
@examples <<
|
315
|
+
sc_transaction_example_handle = RedSnow::Binding.sc_transaction_example_handle(sc_transaction_example_collection_handle, index)
|
316
|
+
@examples << TransactionExample.new(sc_transaction_example_handle)
|
295
317
|
end
|
296
318
|
end
|
297
319
|
end
|
@@ -329,7 +351,8 @@ module RedSnow
|
|
329
351
|
action_size = sc_action_collection_size - 1
|
330
352
|
|
331
353
|
for index in 0..action_size do
|
332
|
-
|
354
|
+
sc_action_handle = RedSnow::Binding.sc_action_handle(sc_action_collection_handle, index)
|
355
|
+
@actions << Action.new(sc_action_handle)
|
333
356
|
end
|
334
357
|
end
|
335
358
|
|
@@ -346,13 +369,13 @@ module RedSnow
|
|
346
369
|
|
347
370
|
attr_accessor :resources
|
348
371
|
|
349
|
-
# @param
|
350
|
-
def initialize(
|
351
|
-
@name = RedSnow::Binding.
|
352
|
-
@description = RedSnow::Binding.
|
372
|
+
# @param sc_resource_group_handle [FFI::Pointer]
|
373
|
+
def initialize(sc_resource_group_handle)
|
374
|
+
@name = RedSnow::Binding.sc_resource_group_name(sc_resource_group_handle)
|
375
|
+
@description = RedSnow::Binding.sc_resource_group_description(sc_resource_group_handle)
|
353
376
|
|
354
377
|
@resources = Array.new
|
355
|
-
sc_resource_collection_handle = RedSnow::Binding.sc_resource_collection_handle(
|
378
|
+
sc_resource_collection_handle = RedSnow::Binding.sc_resource_collection_handle(sc_resource_group_handle)
|
356
379
|
sc_resource_collection_size = RedSnow::Binding.sc_resource_collection_size(sc_resource_collection_handle)
|
357
380
|
|
358
381
|
if sc_resource_collection_size > 0
|
@@ -382,7 +405,7 @@ module RedSnow
|
|
382
405
|
VERSION_KEY = :_version
|
383
406
|
|
384
407
|
# Supported version of Api Blueprint
|
385
|
-
SUPPORTED_VERSIONS = ["2.
|
408
|
+
SUPPORTED_VERSIONS = ["2.1"]
|
386
409
|
|
387
410
|
# @param handle [FFI:Pointer]
|
388
411
|
def initialize(handle)
|
@@ -395,16 +418,16 @@ module RedSnow
|
|
395
418
|
@metadata = Metadata.new(sc_metadata_collection_handle)
|
396
419
|
|
397
420
|
# BP Resource Groups
|
398
|
-
|
399
|
-
|
421
|
+
sc_resource_group_collection_handle = RedSnow::Binding.sc_resource_group_collection_handle(handle)
|
422
|
+
sc_resource_group_collection_size = RedSnow::Binding.sc_resource_group_collection_size(sc_resource_group_collection_handle)
|
400
423
|
@resource_groups = Array.new
|
401
424
|
|
402
|
-
if
|
403
|
-
group_size =
|
425
|
+
if sc_resource_group_collection_size > 0
|
426
|
+
group_size = sc_resource_group_collection_size - 1
|
404
427
|
|
405
428
|
for index in 0..group_size do
|
406
|
-
|
407
|
-
@resource_groups << ResourceGroup.new(
|
429
|
+
sc_resource_group_handle = RedSnow::Binding.sc_resource_group_handle(sc_resource_group_collection_handle, index)
|
430
|
+
@resource_groups << ResourceGroup.new(sc_resource_group_handle)
|
408
431
|
end
|
409
432
|
end
|
410
433
|
end
|
data/lib/redsnow/parseresult.rb
CHANGED
@@ -5,22 +5,29 @@ module RedSnow
|
|
5
5
|
# @param ast [Blueprint]
|
6
6
|
# @param error [Hash] Description of a parsing error as occurred during parsing. If this field is present and code different from 0 then the content of ast field should be ignored.
|
7
7
|
# @param warnings [Array<Hash>] Ordered array of parser warnings as occurred during the parsing.
|
8
|
+
# @param sourcemap [BlueprintSourcemap]
|
8
9
|
class ParseResult
|
10
|
+
|
9
11
|
attr_accessor :ast
|
10
12
|
attr_accessor :error
|
11
13
|
attr_accessor :warnings
|
14
|
+
attr_accessor :sourcemap
|
12
15
|
|
13
16
|
# Version key
|
14
17
|
VERSION_KEY = :_version
|
18
|
+
|
15
19
|
# Supported version of Api Blueprint
|
16
|
-
SUPPORTED_VERSIONS = ["2.
|
20
|
+
SUPPORTED_VERSIONS = ["2.1"]
|
17
21
|
|
18
22
|
# @param report_handle [FFI::Pointer]
|
19
|
-
def initialize(blueprint_handle,
|
23
|
+
def initialize(report_handle, blueprint_handle, sourcemap_handle)
|
20
24
|
|
21
25
|
@ast = Blueprint.new(blueprint_handle)
|
26
|
+
@sourcemap = RedSnow::Sourcemap::Blueprint.new(sourcemap_handle)
|
27
|
+
|
22
28
|
warnings = RedSnow::Binding.sc_warnings_handler(report_handle)
|
23
29
|
warningsSize = RedSnow::Binding.sc_warnings_size(warnings)
|
30
|
+
|
24
31
|
@warnings = Array.new
|
25
32
|
|
26
33
|
for index in 0..(warningsSize - 1) do
|
@@ -0,0 +1,369 @@
|
|
1
|
+
require "redsnow/object"
|
2
|
+
|
3
|
+
# The classes in this module should be 1:1 with the Snow Crash Blueprint sourcemap
|
4
|
+
# counterparts (https://github.com/apiaryio/snowcrash/blob/master/src/BlueprintSourcemap.h).
|
5
|
+
module RedSnow
|
6
|
+
|
7
|
+
module Sourcemap
|
8
|
+
|
9
|
+
class Node
|
10
|
+
end
|
11
|
+
|
12
|
+
class SourceMap < Array
|
13
|
+
|
14
|
+
def initialize(sc_source_map_handle)
|
15
|
+
source_map_size = RedSnow::Binding.sc_source_map_size(sc_source_map_handle) - 1
|
16
|
+
|
17
|
+
for index in 0..source_map_size do
|
18
|
+
location = RedSnow::Binding.sc_source_map_location(sc_source_map_handle, index)
|
19
|
+
length = RedSnow::Binding.sc_source_map_length(sc_source_map_handle, index)
|
20
|
+
|
21
|
+
self << [location, length]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
# Blueprint sourcemap node with name and description associated
|
28
|
+
#
|
29
|
+
# @attr name [SourceMap] name of the node
|
30
|
+
# @attr description [SourceMap] description of the node
|
31
|
+
#
|
32
|
+
# @abstract
|
33
|
+
class NamedNode < Node
|
34
|
+
|
35
|
+
attr_accessor :name
|
36
|
+
attr_accessor :description
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
# Metadata source map collection node
|
41
|
+
class Metadata < Node
|
42
|
+
|
43
|
+
attr_accessor :collection
|
44
|
+
|
45
|
+
# @param sc_sm_metadata_collection_handle [FFI::Pointer]
|
46
|
+
def initialize(sc_sm_metadata_collection_handle)
|
47
|
+
sc_sm_metadata_collection_size = RedSnow::Binding.sc_sm_metadata_collection_size(sc_sm_metadata_collection_handle)
|
48
|
+
|
49
|
+
if sc_sm_metadata_collection_size > 0
|
50
|
+
metadata_size = sc_sm_metadata_collection_size - 1
|
51
|
+
@collection = Array.new
|
52
|
+
|
53
|
+
for index in 0..metadata_size do
|
54
|
+
sc_sm_metadata_handle = RedSnow::Binding.sc_sm_metadata_handle(sc_sm_metadata_collection_handle, index)
|
55
|
+
@collection << SourceMap.new(RedSnow::Binding.sc_sm_metadata(sc_sm_metadata_handle))
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
# Headers source map collection node
|
63
|
+
class Headers < Node
|
64
|
+
|
65
|
+
attr_accessor :collection
|
66
|
+
|
67
|
+
# @param sc_header_collection_handle_payload [FFI::Pointer]
|
68
|
+
def initialize(sc_sm_header_collection_handle_payload)
|
69
|
+
sc_sm_header_collection_size = RedSnow::Binding.sc_sm_header_collection_size(sc_sm_header_collection_handle_payload)
|
70
|
+
|
71
|
+
if sc_sm_header_collection_size > 0
|
72
|
+
headers_size = sc_sm_header_collection_size - 1
|
73
|
+
@collection = Array.new
|
74
|
+
|
75
|
+
for index in 0..headers_size do
|
76
|
+
sc_sm_header_handle = RedSnow::Binding.sc_sm_header_handle(sc_sm_header_collection_handle_payload, index)
|
77
|
+
@collection << SourceMap.new(RedSnow::Binding.sc_sm_header(sc_sm_header_handle))
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
|
84
|
+
# Parameter source map node
|
85
|
+
#
|
86
|
+
# @attr type [Sourcemap] an arbitrary type of the parameter or nil
|
87
|
+
# @attr use [Sourcemap] parameter necessity flag, `:required` or `:optional`
|
88
|
+
# @attr default_value [Sourcemap] default value of the parameter or nil
|
89
|
+
# @attr example_value [Sourcemap] example value of the parameter or nil
|
90
|
+
# @attr values [Array<Sourcemap>] an enumeration of possible parameter values
|
91
|
+
class Parameter < NamedNode
|
92
|
+
|
93
|
+
attr_accessor :type
|
94
|
+
attr_accessor :use
|
95
|
+
attr_accessor :default_value
|
96
|
+
attr_accessor :example_value
|
97
|
+
attr_accessor :values
|
98
|
+
|
99
|
+
# @param sc_sm_parameter_handle [FFI::Pointer]
|
100
|
+
def initialize(sc_sm_parameter_handle)
|
101
|
+
@name = SourceMap.new(RedSnow::Binding.sc_sm_parameter_name(sc_sm_parameter_handle))
|
102
|
+
@description = SourceMap.new(RedSnow::Binding.sc_sm_parameter_description(sc_sm_parameter_handle))
|
103
|
+
@type = SourceMap.new(RedSnow::Binding.sc_sm_parameter_type(sc_sm_parameter_handle))
|
104
|
+
@use = SourceMap.new(RedSnow::Binding.sc_sm_parameter_parameter_use(sc_sm_parameter_handle))
|
105
|
+
@default_value = SourceMap.new(RedSnow::Binding.sc_sm_parameter_default_value(sc_sm_parameter_handle))
|
106
|
+
@example_value = SourceMap.new(RedSnow::Binding.sc_sm_parameter_example_value(sc_sm_parameter_handle))
|
107
|
+
|
108
|
+
@values = Array.new
|
109
|
+
|
110
|
+
sc_sm_value_collection_handle = RedSnow::Binding.sc_sm_value_collection_handle(sc_sm_parameter_handle)
|
111
|
+
sc_sm_value_collection_size = RedSnow::Binding.sc_sm_value_collection_size(sc_sm_value_collection_handle)
|
112
|
+
|
113
|
+
if sc_sm_value_collection_size > 0
|
114
|
+
values_size = sc_sm_value_collection_size - 1
|
115
|
+
|
116
|
+
for valueIndex in 0..values_size do
|
117
|
+
sc_sm_value_handle = RedSnow::Binding.sc_sm_value_handle(sc_sm_value_collection_handle, valueIndex)
|
118
|
+
@values << SourceMap.new(RedSnow::Binding.sc_sm_value(sc_sm_value_handle))
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
124
|
+
|
125
|
+
# Parameters source map collection node
|
126
|
+
#
|
127
|
+
# @attr collection [Array<Parameter>] an array of URI parameters
|
128
|
+
class Parameters < Node
|
129
|
+
|
130
|
+
attr_accessor :collection
|
131
|
+
|
132
|
+
# @param sc_sm_parameter_collection_handle [FFI::Pointer]
|
133
|
+
def initialize(sc_sm_parameter_collection_handle)
|
134
|
+
sc_sm_parameter_collection_size = RedSnow::Binding.sc_sm_parameter_collection_size(sc_sm_parameter_collection_handle)
|
135
|
+
@collection = Array.new
|
136
|
+
|
137
|
+
if sc_sm_parameter_collection_size > 0
|
138
|
+
parameters_size = sc_sm_parameter_collection_size - 1
|
139
|
+
|
140
|
+
for index in 0..parameters_size do
|
141
|
+
sc_sm_parameter_handle = RedSnow::Binding.sc_sm_parameter_handle(sc_sm_parameter_collection_handle, index)
|
142
|
+
@collection << Parameter.new(sc_sm_parameter_handle)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
end
|
148
|
+
|
149
|
+
# Payload source map node
|
150
|
+
#
|
151
|
+
# @abstract
|
152
|
+
# @attr parameters [Parameters] ignored
|
153
|
+
# @attr headers [Headers] array of HTTP header fields of the message or nil
|
154
|
+
# @attr body [Sourcemap] HTTP-message body or nil
|
155
|
+
# @attr schema [Sourcemap] HTTP-message body validation schema or nil
|
156
|
+
# @attr reference [Sourcemap] Symbol Reference sourcemap if the payload is a reference
|
157
|
+
class Payload < NamedNode
|
158
|
+
|
159
|
+
attr_accessor :headers
|
160
|
+
attr_accessor :body
|
161
|
+
attr_accessor :schema
|
162
|
+
attr_accessor :reference
|
163
|
+
|
164
|
+
# @param sc_sm_payload_handle_resource [FFI::Pointer]
|
165
|
+
def initialize(sc_sm_payload_handle_resource)
|
166
|
+
@name = SourceMap.new(RedSnow::Binding.sc_sm_payload_name(sc_sm_payload_handle_resource))
|
167
|
+
@description = SourceMap.new(RedSnow::Binding.sc_sm_payload_description(sc_sm_payload_handle_resource))
|
168
|
+
@body = SourceMap.new(RedSnow::Binding.sc_sm_payload_body(sc_sm_payload_handle_resource))
|
169
|
+
@schema = SourceMap.new(RedSnow::Binding.sc_sm_payload_schema(sc_sm_payload_handle_resource))
|
170
|
+
|
171
|
+
symbol_source_map_handle = RedSnow::Binding.sc_sm_payload_symbol(sc_sm_payload_handle_resource)
|
172
|
+
symbol_source_map_size = RedSnow::Binding.sc_source_map_size(symbol_source_map_handle)
|
173
|
+
|
174
|
+
if symbol_source_map_size != 0
|
175
|
+
@reference = SourceMap.new(symbol_source_map_handle)
|
176
|
+
end
|
177
|
+
|
178
|
+
sc_sm_header_collection_handle_payload = RedSnow::Binding.sc_sm_header_collection_handle_payload(sc_sm_payload_handle_resource)
|
179
|
+
@headers = Headers.new(sc_sm_header_collection_handle_payload)
|
180
|
+
end
|
181
|
+
|
182
|
+
end
|
183
|
+
|
184
|
+
# Transaction example source map node
|
185
|
+
#
|
186
|
+
# @attr requests [Array<Request>] example request payloads
|
187
|
+
# @attr response [Array<Response>] example response payloads
|
188
|
+
class TransactionExample < NamedNode
|
189
|
+
|
190
|
+
attr_accessor :requests
|
191
|
+
attr_accessor :responses
|
192
|
+
|
193
|
+
# @param sc_sm_transaction_example_handle [FFI::Pointer]
|
194
|
+
def initialize(sc_sm_transaction_example_handle)
|
195
|
+
@name = SourceMap.new(RedSnow::Binding.sc_sm_transaction_example_name(sc_sm_transaction_example_handle))
|
196
|
+
@description = SourceMap.new(RedSnow::Binding.sc_sm_transaction_example_description(sc_sm_transaction_example_handle))
|
197
|
+
|
198
|
+
# BP Resource Actions Examples Requests
|
199
|
+
@requests = Array.new
|
200
|
+
sc_sm_payload_collection_handle_requests = RedSnow::Binding.sc_sm_payload_collection_handle_requests(sc_sm_transaction_example_handle)
|
201
|
+
sc_sm_payload_collection_size_requests = RedSnow::Binding.sc_sm_payload_collection_size(sc_sm_payload_collection_handle_requests)
|
202
|
+
|
203
|
+
if sc_sm_payload_collection_size_requests > 0
|
204
|
+
requests_size = sc_sm_payload_collection_size_requests - 1
|
205
|
+
|
206
|
+
for index in 0..requests_size do
|
207
|
+
sc_sm_payload_handle = RedSnow::Binding.sc_sm_payload_handle(sc_sm_payload_collection_handle_requests, index)
|
208
|
+
@requests << Payload.new(sc_sm_payload_handle)
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
# BP Resource Actions Examples Responses
|
213
|
+
@responses = Array.new
|
214
|
+
sc_sm_payload_collection_handle_responses = RedSnow::Binding.sc_sm_payload_collection_handle_responses(sc_sm_transaction_example_handle)
|
215
|
+
sc_sm_payload_collection_size_responses = RedSnow::Binding.sc_sm_payload_collection_size(sc_sm_payload_collection_handle_responses)
|
216
|
+
|
217
|
+
if sc_sm_payload_collection_size_responses > 0
|
218
|
+
responses_size = sc_sm_payload_collection_size_responses - 1
|
219
|
+
|
220
|
+
for index in 0..responses_size do
|
221
|
+
sc_sm_payload_handle = RedSnow::Binding.sc_sm_payload_handle(sc_sm_payload_collection_handle_responses, index)
|
222
|
+
@responses << Payload.new(sc_sm_payload_handle)
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
end
|
228
|
+
|
229
|
+
# Action source map node
|
230
|
+
#
|
231
|
+
# @attr method [Sourcemap] HTTP request method or nil
|
232
|
+
# @attr parameters [Parameters] action-specific URI parameters or nil
|
233
|
+
# @attr examples [Array<TransactionExample>] action transaction examples
|
234
|
+
class Action < NamedNode
|
235
|
+
|
236
|
+
attr_accessor :method
|
237
|
+
attr_accessor :parameters
|
238
|
+
attr_accessor :examples
|
239
|
+
|
240
|
+
# @param sc_sm_action_handle [FFI::Pointer]
|
241
|
+
def initialize(sc_sm_action_handle)
|
242
|
+
@name = SourceMap.new(RedSnow::Binding.sc_sm_action_name(sc_sm_action_handle))
|
243
|
+
@description = SourceMap.new(RedSnow::Binding.sc_sm_action_description(sc_sm_action_handle))
|
244
|
+
|
245
|
+
@method = SourceMap.new(RedSnow::Binding.sc_sm_action_httpmethod(sc_sm_action_handle))
|
246
|
+
|
247
|
+
@parameters = Parameters.new(RedSnow::Binding.sc_sm_parameter_collection_handle_action(sc_sm_action_handle))
|
248
|
+
|
249
|
+
@examples = Array.new
|
250
|
+
sc_sm_transaction_example_collection_handle = RedSnow::Binding.sc_sm_transaction_example_collection_handle(sc_sm_action_handle)
|
251
|
+
sc_sm_transaction_example_collection_size = RedSnow::Binding.sc_sm_transaction_example_collection_size(sc_sm_transaction_example_collection_handle)
|
252
|
+
|
253
|
+
if sc_sm_transaction_example_collection_size > 0
|
254
|
+
examples_size = sc_sm_transaction_example_collection_size - 1
|
255
|
+
|
256
|
+
for index in 0..examples_size do
|
257
|
+
sc_sm_transaction_example_handle = RedSnow::Binding.sc_sm_transaction_example_handle(sc_sm_transaction_example_collection_handle, index)
|
258
|
+
@examples << TransactionExample.new(sc_sm_transaction_example_handle)
|
259
|
+
end
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
end
|
264
|
+
|
265
|
+
# Resource source map node
|
266
|
+
#
|
267
|
+
# @attr uri_template [Sourcemap] RFC 6570 URI template
|
268
|
+
# @attr model [Payload] model payload for the resource or nil
|
269
|
+
# @attr parameters [Parameters] action-specific URI parameters or nil
|
270
|
+
# @attr actions [Array<Action>] array of resource actions or nil
|
271
|
+
class Resource < NamedNode
|
272
|
+
|
273
|
+
attr_accessor :uri_template
|
274
|
+
attr_accessor :model
|
275
|
+
attr_accessor :parameters
|
276
|
+
attr_accessor :actions
|
277
|
+
|
278
|
+
# @param sc_sm_resource_handle [FFI::Pointer]
|
279
|
+
def initialize(sc_sm_resource_handle)
|
280
|
+
@name = SourceMap.new(RedSnow::Binding.sc_sm_resource_name(sc_sm_resource_handle))
|
281
|
+
@description = SourceMap.new(RedSnow::Binding.sc_sm_resource_description(sc_sm_resource_handle))
|
282
|
+
@uri_template = SourceMap.new(RedSnow::Binding.sc_sm_resource_uritemplate(sc_sm_resource_handle))
|
283
|
+
|
284
|
+
sc_sm_payload_handle_resource = RedSnow::Binding.sc_sm_payload_handle_resource(sc_sm_resource_handle)
|
285
|
+
@model = Payload.new(sc_sm_payload_handle_resource)
|
286
|
+
|
287
|
+
@actions = Array.new
|
288
|
+
sc_sm_action_collection_handle = RedSnow::Binding.sc_sm_action_collection_handle(sc_sm_resource_handle)
|
289
|
+
sc_sm_action_collection_size = RedSnow::Binding.sc_sm_action_collection_size(sc_sm_action_collection_handle)
|
290
|
+
|
291
|
+
if sc_sm_action_collection_size > 0
|
292
|
+
action_size = sc_sm_action_collection_size - 1
|
293
|
+
|
294
|
+
for index in 0..action_size do
|
295
|
+
sc_sm_action_handle = RedSnow::Binding.sc_sm_action_handle(sc_sm_action_collection_handle, index)
|
296
|
+
@actions << Action.new(sc_sm_action_handle)
|
297
|
+
end
|
298
|
+
end
|
299
|
+
|
300
|
+
@parameters = Parameters.new(RedSnow::Binding.sc_sm_parameter_collection_handle_resource(sc_sm_resource_handle))
|
301
|
+
end
|
302
|
+
|
303
|
+
end
|
304
|
+
|
305
|
+
# Resource group source map node
|
306
|
+
#
|
307
|
+
# @attr resources [Array<Resource>] array of resources in the group
|
308
|
+
class ResourceGroup < NamedNode
|
309
|
+
|
310
|
+
attr_accessor :resources
|
311
|
+
|
312
|
+
# @param sc_sm_resource_group_handle [FFI::Pointer]
|
313
|
+
def initialize(sc_sm_resource_group_handle)
|
314
|
+
@name = SourceMap.new(RedSnow::Binding.sc_sm_resource_group_name(sc_sm_resource_group_handle))
|
315
|
+
@description = SourceMap.new(RedSnow::Binding.sc_sm_resource_group_description(sc_sm_resource_group_handle))
|
316
|
+
|
317
|
+
@resources = Array.new
|
318
|
+
sc_sm_resource_collection_handle = RedSnow::Binding.sc_sm_resource_collection_handle(sc_sm_resource_group_handle)
|
319
|
+
sc_sm_resource_collection_size = RedSnow::Binding.sc_sm_resource_collection_size(sc_sm_resource_collection_handle)
|
320
|
+
|
321
|
+
if sc_sm_resource_collection_size > 0
|
322
|
+
resource_size = sc_sm_resource_collection_size - 1
|
323
|
+
|
324
|
+
for index in 0..resource_size do
|
325
|
+
sc_sm_resource_handle = RedSnow::Binding.sc_sm_resource_handle(sc_sm_resource_collection_handle, index)
|
326
|
+
@resources << Resource.new(sc_sm_resource_handle)
|
327
|
+
end
|
328
|
+
end
|
329
|
+
end
|
330
|
+
|
331
|
+
end
|
332
|
+
|
333
|
+
|
334
|
+
# Blueprint source map node
|
335
|
+
#
|
336
|
+
# @attr metadata [Metadata] tool-specific metadata collection or nil
|
337
|
+
# @attr resource_groups [Array<ResourceGroup>] array of resource groups
|
338
|
+
class Blueprint < NamedNode
|
339
|
+
|
340
|
+
attr_accessor :metadata
|
341
|
+
attr_accessor :resource_groups
|
342
|
+
|
343
|
+
# @param handle [FFI:Pointer]
|
344
|
+
def initialize(handle)
|
345
|
+
# BP name, desc
|
346
|
+
@name = SourceMap.new(RedSnow::Binding.sc_sm_blueprint_name(handle))
|
347
|
+
@description = SourceMap.new(RedSnow::Binding.sc_sm_blueprint_description(handle))
|
348
|
+
|
349
|
+
# BP metadata
|
350
|
+
sc_sm_metadata_collection_handle = RedSnow::Binding.sc_sm_metadata_collection_handle(handle)
|
351
|
+
@metadata = Metadata.new(sc_sm_metadata_collection_handle)
|
352
|
+
|
353
|
+
# BP Resource Groups
|
354
|
+
sc_sm_resource_group_collection_handle = RedSnow::Binding.sc_sm_resource_group_collection_handle(handle)
|
355
|
+
sc_sm_resource_group_collection_size = RedSnow::Binding.sc_sm_resource_group_collection_size(sc_sm_resource_group_collection_handle)
|
356
|
+
@resource_groups = Array.new
|
357
|
+
|
358
|
+
if sc_sm_resource_group_collection_size > 0
|
359
|
+
group_size = sc_sm_resource_group_collection_size - 1
|
360
|
+
|
361
|
+
for index in 0..group_size do
|
362
|
+
sc_sm_resource_group_handle = RedSnow::Binding.sc_sm_resource_group_handle(sc_sm_resource_group_collection_handle, index)
|
363
|
+
@resource_groups << ResourceGroup.new(sc_sm_resource_group_handle)
|
364
|
+
end
|
365
|
+
end
|
366
|
+
end
|
367
|
+
end
|
368
|
+
end
|
369
|
+
end
|