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
@@ -0,0 +1,342 @@
|
|
1
|
+
//
|
2
|
+
// CBlueprintSourcemap.h
|
3
|
+
// snowcrash
|
4
|
+
// C Implementation of BlueprintSourcemap.h for binding purposes
|
5
|
+
//
|
6
|
+
// Created by Pavan Kumar Sunkara on 12/9/14.
|
7
|
+
// Copyright (c) 2014 Apiary Inc. All rights reserved.
|
8
|
+
//
|
9
|
+
|
10
|
+
#ifndef SC_C_BLUEPRINT_SOURCEMAP_H
|
11
|
+
#define SC_C_BLUEPRINT_SOURCEMAP_H
|
12
|
+
|
13
|
+
#include "Platform.h"
|
14
|
+
#include "stdlib.h"
|
15
|
+
|
16
|
+
#ifdef __cplusplus
|
17
|
+
extern "C" {
|
18
|
+
#endif
|
19
|
+
|
20
|
+
/** Class source map wrapper */
|
21
|
+
struct sc_source_map_s;
|
22
|
+
typedef struct sc_source_map_s sc_source_map_t;
|
23
|
+
|
24
|
+
/** Class Blueprint source map wrapper */
|
25
|
+
struct sc_sm_blueprint_s;
|
26
|
+
typedef struct sc_sm_blueprint_s sc_sm_blueprint_t;
|
27
|
+
|
28
|
+
/** Array Metadata source map wrapper */
|
29
|
+
struct sc_sm_metadata_collection_s;
|
30
|
+
typedef struct sc_sm_metadata_collection_s sc_sm_metadata_collection_t;
|
31
|
+
|
32
|
+
/** Class Metadata source map wrapper */
|
33
|
+
struct sc_sm_metadata_s;
|
34
|
+
typedef struct sc_sm_metadata_s sc_sm_metadata_t;
|
35
|
+
|
36
|
+
/** Array Resource Group Collection source map wrapper */
|
37
|
+
struct sc_sm_resource_group_collection_s;
|
38
|
+
typedef struct sc_sm_resource_group_collection_s sc_sm_resource_group_collection_t;
|
39
|
+
|
40
|
+
/** Class Resource Group source map wrapper */
|
41
|
+
struct sc_sm_resource_group_s;
|
42
|
+
typedef struct sc_sm_resource_group_s sc_sm_resource_group_t;
|
43
|
+
|
44
|
+
/** Array Resource Collection source map wrapper */
|
45
|
+
struct sc_sm_resource_collection_s;
|
46
|
+
typedef struct sc_sm_resource_collection_s sc_sm_resource_collection_t;
|
47
|
+
|
48
|
+
/** Class Resource source map wrapper */
|
49
|
+
struct sc_sm_resource_s;
|
50
|
+
typedef struct sc_sm_resource_s sc_sm_resource_t;
|
51
|
+
|
52
|
+
/** Class Resource Model source map wrapper */
|
53
|
+
struct sc_sm_resource_model_s;
|
54
|
+
typedef struct sc_sm_resource_model_s sc_sm_resource_model_t;
|
55
|
+
|
56
|
+
/** Array Payload Collection source map wrapper */
|
57
|
+
struct sc_sm_payload_collection_s;
|
58
|
+
typedef struct sc_sm_payload_collection_s sc_sm_payload_collection_t;
|
59
|
+
|
60
|
+
/** Class Payload source map wrapper */
|
61
|
+
struct sc_sm_payload_s;
|
62
|
+
typedef struct sc_sm_payload_s sc_sm_payload_t;
|
63
|
+
|
64
|
+
/** Array Parameter source map wrapper */
|
65
|
+
struct sc_sm_parameter_collection_s;
|
66
|
+
typedef struct sc_sm_parameter_collection_s sc_sm_parameter_collection_t;
|
67
|
+
|
68
|
+
/** class Parameter source map wrapper */
|
69
|
+
struct sc_sm_parameter_s;
|
70
|
+
typedef struct sc_sm_parameter_s sc_sm_parameter_t;
|
71
|
+
|
72
|
+
/** Array Header source map wrapper */
|
73
|
+
struct sc_sm_header_collection_s;
|
74
|
+
typedef struct sc_sm_header_collection_s sc_sm_header_collection_t;
|
75
|
+
|
76
|
+
/** class Header source map wrapper */
|
77
|
+
struct sc_sm_header_s;
|
78
|
+
typedef struct sc_sm_header_s sc_sm_header_t;
|
79
|
+
|
80
|
+
/** Array Value source map wrapper */
|
81
|
+
struct sc_sm_value_collection_s;
|
82
|
+
typedef struct sc_sm_value_collection_s sc_sm_value_collection_t;
|
83
|
+
|
84
|
+
/** class Value source map wrapper */
|
85
|
+
struct sc_sm_value_s;
|
86
|
+
typedef struct sc_sm_value_s sc_sm_value_t;
|
87
|
+
|
88
|
+
/** Array Action source map wrapper */
|
89
|
+
struct sc_sm_action_collection_s;
|
90
|
+
typedef struct sc_sm_action_collection_s sc_sm_action_collection_t;
|
91
|
+
|
92
|
+
/** class Action source map wrapper */
|
93
|
+
struct sc_sm_action_s;
|
94
|
+
typedef struct sc_sm_action_s sc_sm_action_t;
|
95
|
+
|
96
|
+
/** Array Transaction Example source map wrapper */
|
97
|
+
struct sc_sm_transaction_example_collection_s;
|
98
|
+
typedef struct sc_sm_transaction_example_collection_s sc_sm_transaction_example_collection_t;
|
99
|
+
|
100
|
+
/** class Transaction Example source map wrapper */
|
101
|
+
struct sc_sm_transaction_example_s;
|
102
|
+
typedef struct sc_sm_transaction_example_s sc_sm_transaction_example_t;
|
103
|
+
|
104
|
+
/*----------------------------------------------------------------------*/
|
105
|
+
|
106
|
+
/** \returns size of the source map */
|
107
|
+
SC_API size_t sc_source_map_size(const sc_source_map_t* source_map);
|
108
|
+
|
109
|
+
/** \returns Location of the source map item at index */
|
110
|
+
SC_API size_t sc_source_map_length(const sc_source_map_t* source_map, size_t index);
|
111
|
+
|
112
|
+
/** \returns Length of the source map item at index */
|
113
|
+
SC_API size_t sc_source_map_location(const sc_source_map_t* source_map, size_t index);
|
114
|
+
|
115
|
+
/*----------------------------------------------------------------------*/
|
116
|
+
|
117
|
+
/** \returns pointer to allocated Blueprint source map */
|
118
|
+
SC_API sc_sm_blueprint_t* sc_sm_blueprint_new();
|
119
|
+
|
120
|
+
/** \deallocate Blueprint source map from pointer */
|
121
|
+
SC_API void sc_sm_blueprint_free(sc_sm_blueprint_t* blueprint);
|
122
|
+
|
123
|
+
/** \returns Blueprint name source map */
|
124
|
+
SC_API const sc_source_map_t* sc_sm_blueprint_name(const sc_sm_blueprint_t* blueprint);
|
125
|
+
|
126
|
+
/** \returns Blueprint description source map */
|
127
|
+
SC_API const sc_source_map_t* sc_sm_blueprint_description(const sc_sm_blueprint_t* blueprint);
|
128
|
+
|
129
|
+
/*----------------------------------------------------------------------*/
|
130
|
+
|
131
|
+
/** \returns Metadata source map array handle */
|
132
|
+
SC_API const sc_sm_metadata_collection_t* sc_sm_metadata_collection_handle(const sc_sm_blueprint_t* blueprint);
|
133
|
+
|
134
|
+
/** \returns size of Metadata source map array */
|
135
|
+
SC_API size_t sc_sm_metadata_collection_size(const sc_sm_metadata_collection_t* metadata);
|
136
|
+
|
137
|
+
/*----------------------------------------------------------------------*/
|
138
|
+
|
139
|
+
/** \returns Metadata source map at `index` handle */
|
140
|
+
SC_API const sc_sm_metadata_t* sc_sm_metadata_handle(const sc_sm_metadata_collection_t* metadata_col, size_t index);
|
141
|
+
|
142
|
+
/** \returns Metadata source map */
|
143
|
+
SC_API const sc_source_map_t* sc_sm_metadata(const sc_sm_metadata_t* metadata);
|
144
|
+
|
145
|
+
/*----------------------------------------------------------------------*/
|
146
|
+
|
147
|
+
/** \returns Resource Group Collection source map array handle */
|
148
|
+
SC_API const sc_sm_resource_group_collection_t* sc_sm_resource_group_collection_handle(const sc_sm_blueprint_t* blueprint);
|
149
|
+
|
150
|
+
/** \returns size of Resource Group Collection source map array */
|
151
|
+
SC_API size_t sc_sm_resource_group_collection_size(const sc_sm_resource_group_collection_t* resource);
|
152
|
+
|
153
|
+
/*----------------------------------------------------------------------*/
|
154
|
+
|
155
|
+
/** \returns Resource Group source map handle */
|
156
|
+
SC_API const sc_sm_resource_group_t* sc_sm_resource_group_handle(const sc_sm_resource_group_collection_t* resource, size_t index);
|
157
|
+
|
158
|
+
/** \returns Resource Group name source map */
|
159
|
+
SC_API const sc_source_map_t* sc_sm_resource_group_name(const sc_sm_resource_group_t* handle);
|
160
|
+
|
161
|
+
/** \returns Resource Group description source map */
|
162
|
+
SC_API const sc_source_map_t* sc_sm_resource_group_description(const sc_sm_resource_group_t* handle);
|
163
|
+
|
164
|
+
/*----------------------------------------------------------------------*/
|
165
|
+
|
166
|
+
/** \returns Resource source map array handle */
|
167
|
+
SC_API const sc_sm_resource_collection_t* sc_sm_resource_collection_handle(const sc_sm_resource_group_t* handle);
|
168
|
+
|
169
|
+
/** \returns Resource source map array size */
|
170
|
+
SC_API size_t sc_sm_resource_collection_size(const sc_sm_resource_collection_t* resource);
|
171
|
+
|
172
|
+
/*----------------------------------------------------------------------*/
|
173
|
+
|
174
|
+
/** \returns Resource source map handle */
|
175
|
+
SC_API const sc_sm_resource_t* sc_sm_resource_handle(const sc_sm_resource_collection_t* resource, size_t index);
|
176
|
+
|
177
|
+
/** \returns Resource URITemplate source map */
|
178
|
+
SC_API const sc_source_map_t* sc_sm_resource_uritemplate(const sc_sm_resource_t* handle);
|
179
|
+
|
180
|
+
/** \returns Resource name source map */
|
181
|
+
SC_API const sc_source_map_t* sc_sm_resource_name(const sc_sm_resource_t* handle);
|
182
|
+
|
183
|
+
/** \returns Resource description source map */
|
184
|
+
SC_API const sc_source_map_t* sc_sm_resource_description(const sc_sm_resource_t* handle);
|
185
|
+
|
186
|
+
/*----------------------------------------------------------------------*/
|
187
|
+
|
188
|
+
/** \returns Payload Collection source map array handle from TransactionExample for requests*/
|
189
|
+
SC_API const sc_sm_payload_collection_t* sc_sm_payload_collection_handle_requests(const sc_sm_transaction_example_t* handle);
|
190
|
+
|
191
|
+
/** \returns Payload Collection source map array handle from TransactionExample for responses*/
|
192
|
+
SC_API const sc_sm_payload_collection_t* sc_sm_payload_collection_handle_responses(const sc_sm_transaction_example_t* handle);
|
193
|
+
|
194
|
+
/** \returns Payload Collection array size */
|
195
|
+
SC_API size_t sc_sm_payload_collection_size(const sc_sm_payload_collection_t* handle);
|
196
|
+
|
197
|
+
/*----------------------------------------------------------------------*/
|
198
|
+
|
199
|
+
/** \returns Payload source map at `index` handle */
|
200
|
+
SC_API const sc_sm_payload_t* sc_sm_payload_handle(const sc_sm_payload_collection_t* handle, size_t index);
|
201
|
+
|
202
|
+
/** \returns Payload source map handle from resource source map */
|
203
|
+
SC_API const sc_sm_payload_t* sc_sm_payload_handle_resource(const sc_sm_resource_t* handle);
|
204
|
+
|
205
|
+
/** \returns Payload name source map */
|
206
|
+
SC_API const sc_source_map_t* sc_sm_payload_name(const sc_sm_payload_t* handle);
|
207
|
+
|
208
|
+
/** \returns Payload symbol name source map */
|
209
|
+
SC_API const sc_source_map_t* sc_sm_payload_symbol(const sc_sm_payload_t* handle);
|
210
|
+
|
211
|
+
/** \returns Payload description source map */
|
212
|
+
SC_API const sc_source_map_t* sc_sm_payload_description(const sc_sm_payload_t* handle);
|
213
|
+
|
214
|
+
/** \returns Payload body source map */
|
215
|
+
SC_API const sc_source_map_t* sc_sm_payload_body(const sc_sm_payload_t* handle);
|
216
|
+
|
217
|
+
/** \returns Payload schema source map */
|
218
|
+
SC_API const sc_source_map_t* sc_sm_payload_schema(const sc_sm_payload_t* handle);
|
219
|
+
|
220
|
+
/*----------------------------------------------------------------------*/
|
221
|
+
|
222
|
+
/** \returns Parameter Collection source map array handle from Payload source map */
|
223
|
+
SC_API const sc_sm_parameter_collection_t* sc_sm_parameter_collection_handle_payload(const sc_sm_payload_t* handle);
|
224
|
+
|
225
|
+
/** \returns Parameter Collection source map array handle from Resource source map */
|
226
|
+
SC_API const sc_sm_parameter_collection_t* sc_sm_parameter_collection_handle_resource(const sc_sm_resource_t* handle);
|
227
|
+
|
228
|
+
/** \returns Parameter Collection source map array handle from Action source map */
|
229
|
+
SC_API const sc_sm_parameter_collection_t* sc_sm_parameter_collection_handle_action(const sc_sm_action_t* handle);
|
230
|
+
|
231
|
+
/** \returns Parameter Collection source map array size */
|
232
|
+
SC_API size_t sc_sm_parameter_collection_size(const sc_sm_parameter_collection_t* handle);
|
233
|
+
|
234
|
+
/*----------------------------------------------------------------------*/
|
235
|
+
|
236
|
+
/** \returns Parameter source map handle */
|
237
|
+
SC_API const sc_sm_parameter_t* sc_sm_parameter_handle(const sc_sm_parameter_collection_t* handle, size_t index);
|
238
|
+
|
239
|
+
/** \returns Parameter name source map */
|
240
|
+
SC_API const sc_source_map_t* sc_sm_parameter_name(const sc_sm_parameter_t* handle);
|
241
|
+
|
242
|
+
/** \returns Parameter description source map */
|
243
|
+
SC_API const sc_source_map_t* sc_sm_parameter_description(const sc_sm_parameter_t* handle);
|
244
|
+
|
245
|
+
/** \returns Parameter type source map */
|
246
|
+
SC_API const sc_source_map_t* sc_sm_parameter_type(const sc_sm_parameter_t* handle);
|
247
|
+
|
248
|
+
/** \returns Parameter use source map */
|
249
|
+
SC_API const sc_source_map_t* sc_sm_parameter_parameter_use(const sc_sm_parameter_t* handle);
|
250
|
+
|
251
|
+
/** \returns Parameter default value source map */
|
252
|
+
SC_API const sc_source_map_t* sc_sm_parameter_default_value(const sc_sm_parameter_t* handle);
|
253
|
+
|
254
|
+
/** \returns Parameter example value source map */
|
255
|
+
SC_API const sc_source_map_t* sc_sm_parameter_example_value(const sc_sm_parameter_t* handle);
|
256
|
+
|
257
|
+
/*----------------------------------------------------------------------*/
|
258
|
+
|
259
|
+
/** \returns Value Collection source map array handle */
|
260
|
+
SC_API const sc_sm_value_collection_t* sc_sm_value_collection_handle(const sc_sm_parameter_t* handle);
|
261
|
+
|
262
|
+
/** \returns Value Collection source map array size */
|
263
|
+
SC_API size_t sc_sm_value_collection_size(const sc_sm_value_collection_t* handle);
|
264
|
+
|
265
|
+
/*----------------------------------------------------------------------*/
|
266
|
+
|
267
|
+
/** \returns Value source map handle */
|
268
|
+
SC_API const sc_sm_value_t* sc_sm_value_handle(const sc_sm_value_collection_t* handle, size_t index);
|
269
|
+
|
270
|
+
/** \returns Value source map */
|
271
|
+
SC_API const sc_source_map_t* sc_sm_value(const sc_sm_value_t* handle);
|
272
|
+
|
273
|
+
/*----------------------------------------------------------------------*/
|
274
|
+
|
275
|
+
/** \returns Header Collection source map array handle from Payload source map */
|
276
|
+
SC_API const sc_sm_header_collection_t* sc_sm_header_collection_handle_payload(const sc_sm_payload_t* handle);
|
277
|
+
|
278
|
+
/** \returns Header Collection source map array handle from Resource source map */
|
279
|
+
SC_API const sc_sm_header_collection_t* sc_sm_header_collection_handle_resource(const sc_sm_resource_t* handle);
|
280
|
+
|
281
|
+
/** \returns Header Collection source map array handle from Action source map */
|
282
|
+
SC_API const sc_sm_header_collection_t* sc_sm_header_collection_handle_action(const sc_sm_action_t* handle);
|
283
|
+
|
284
|
+
/** \returns Header Collection source map array size */
|
285
|
+
SC_API size_t sc_sm_header_collection_size(const sc_sm_header_collection_t* handle);
|
286
|
+
|
287
|
+
/*----------------------------------------------------------------------*/
|
288
|
+
|
289
|
+
/** \returns Header source map handle */
|
290
|
+
SC_API const sc_sm_header_t* sc_sm_header_handle(const sc_sm_header_collection_t* handle, size_t index);
|
291
|
+
|
292
|
+
/** \returns Header source map */
|
293
|
+
SC_API const sc_source_map_t* sc_sm_header(const sc_sm_header_t* handle);
|
294
|
+
|
295
|
+
/*----------------------------------------------------------------------*/
|
296
|
+
|
297
|
+
/** \returns Action Collection source map array handle */
|
298
|
+
SC_API const sc_sm_action_collection_t* sc_sm_action_collection_handle(const sc_sm_resource_t* handle);
|
299
|
+
|
300
|
+
/** \returns Action Collection source map array size */
|
301
|
+
SC_API size_t sc_sm_action_collection_size(const sc_sm_action_collection_t* handle);
|
302
|
+
|
303
|
+
/*----------------------------------------------------------------------*/
|
304
|
+
|
305
|
+
/** \returns Action source map handle */
|
306
|
+
SC_API const sc_sm_action_t* sc_sm_action_handle(const sc_sm_action_collection_t* handle, size_t index);
|
307
|
+
|
308
|
+
/** \returns Action HTTPMethod source map */
|
309
|
+
SC_API const sc_source_map_t* sc_sm_action_httpmethod(const sc_sm_action_t* handle);
|
310
|
+
|
311
|
+
/** \returns Action name source map */
|
312
|
+
SC_API const sc_source_map_t* sc_sm_action_name(const sc_sm_action_t* handle);
|
313
|
+
|
314
|
+
/** \returns Action description source map */
|
315
|
+
SC_API const sc_source_map_t* sc_sm_action_description(const sc_sm_action_t* handle);
|
316
|
+
|
317
|
+
/*----------------------------------------------------------------------*/
|
318
|
+
|
319
|
+
/** \returns Transaction Example Collection source map array handle */
|
320
|
+
SC_API const sc_sm_transaction_example_collection_t* sc_sm_transaction_example_collection_handle(const sc_sm_action_t* handle);
|
321
|
+
|
322
|
+
/** \returns Transaction Example Collection source map array size */
|
323
|
+
SC_API size_t sc_sm_transaction_example_collection_size(const sc_sm_transaction_example_collection_t* handle);
|
324
|
+
|
325
|
+
/*----------------------------------------------------------------------*/
|
326
|
+
|
327
|
+
/** \returns Transaction Example source map handle */
|
328
|
+
SC_API const sc_sm_transaction_example_t* sc_sm_transaction_example_handle(const sc_sm_transaction_example_collection_t* handle, size_t index);
|
329
|
+
|
330
|
+
/** \returns Transaction Example name source map */
|
331
|
+
SC_API const sc_source_map_t* sc_sm_transaction_example_name(const sc_sm_transaction_example_t* handle);
|
332
|
+
|
333
|
+
/** \returns Transaction Example description source map */
|
334
|
+
SC_API const sc_source_map_t* sc_sm_transaction_example_description(const sc_sm_transaction_example_t* handle);
|
335
|
+
|
336
|
+
/*----------------------------------------------------------------------*/
|
337
|
+
|
338
|
+
#ifdef __cplusplus
|
339
|
+
}
|
340
|
+
#endif
|
341
|
+
|
342
|
+
#endif
|
@@ -28,6 +28,7 @@ SC_API const sc_location_t* sc_location_handler(const sc_source_annotation_t* so
|
|
28
28
|
const snowcrash::SourceAnnotation* p = AS_CTYPE(snowcrash::SourceAnnotation, source);
|
29
29
|
if(!p)
|
30
30
|
return NULL;
|
31
|
+
|
31
32
|
return AS_CTYPE(sc_location_t, &p->location);
|
32
33
|
}
|
33
34
|
|
@@ -36,6 +37,7 @@ SC_API size_t sc_location_size(const sc_location_t* location)
|
|
36
37
|
const mdp::CharactersRangeSet* p = AS_CTYPE(mdp::CharactersRangeSet, location);
|
37
38
|
if(!p)
|
38
39
|
return 0;
|
40
|
+
|
39
41
|
return p->size();
|
40
42
|
}
|
41
43
|
|
@@ -44,6 +46,7 @@ SC_API size_t sc_location_length(const sc_location_t* location, size_t index)
|
|
44
46
|
const mdp::CharactersRangeSet* p = AS_CTYPE(mdp::CharactersRangeSet, location);
|
45
47
|
if(!p)
|
46
48
|
return 0;
|
49
|
+
|
47
50
|
return p->at(index).length;
|
48
51
|
}
|
49
52
|
|
@@ -52,6 +55,7 @@ SC_API size_t sc_location_location(const sc_location_t* location, size_t index)
|
|
52
55
|
const mdp::CharactersRangeSet* p = AS_CTYPE(mdp::CharactersRangeSet, location);
|
53
56
|
if(!p)
|
54
57
|
return 0;
|
58
|
+
|
55
59
|
return p->at(index).location;
|
56
60
|
}
|
57
61
|
|
@@ -62,6 +66,7 @@ SC_API const sc_error_t* sc_error_handler(const sc_report_t* report)
|
|
62
66
|
const snowcrash::Report* p = AS_CTYPE(snowcrash::Report, report);
|
63
67
|
if(!p)
|
64
68
|
return NULL;
|
69
|
+
|
65
70
|
return AS_CTYPE(sc_error_t, &p->error);
|
66
71
|
}
|
67
72
|
|
@@ -70,6 +75,7 @@ SC_API const char* sc_error_message(const sc_error_t* error)
|
|
70
75
|
const snowcrash::Error* p = AS_CTYPE(snowcrash::Error, error);
|
71
76
|
if (!p)
|
72
77
|
return "";
|
78
|
+
|
73
79
|
return p->message.c_str();
|
74
80
|
}
|
75
81
|
|
@@ -78,6 +84,7 @@ SC_API int sc_error_code(const sc_error_t* error)
|
|
78
84
|
const snowcrash::Error* p = AS_CTYPE(snowcrash::Error, error);
|
79
85
|
if (!p)
|
80
86
|
return 0;
|
87
|
+
|
81
88
|
return p->code;
|
82
89
|
}
|
83
90
|
|
@@ -86,6 +93,7 @@ SC_API int sc_error_ok(const sc_error_t* error)
|
|
86
93
|
const snowcrash::Error* p = AS_CTYPE(snowcrash::Error, error);
|
87
94
|
if (!p)
|
88
95
|
return 0;
|
96
|
+
|
89
97
|
return p->OK;
|
90
98
|
}
|
91
99
|
|
@@ -96,6 +104,7 @@ SC_API const sc_warnings_t* sc_warnings_handler(const sc_report_t* report)
|
|
96
104
|
const snowcrash::Report* p = AS_CTYPE(snowcrash::Report, report);
|
97
105
|
if(!p)
|
98
106
|
return NULL;
|
107
|
+
|
99
108
|
return AS_CTYPE(sc_warnings_t, &p->warnings);
|
100
109
|
}
|
101
110
|
|
@@ -104,6 +113,7 @@ SC_API size_t sc_warnings_size(const sc_warnings_t* warning)
|
|
104
113
|
const snowcrash::Warnings* p = AS_CTYPE(snowcrash::Warnings, warning);
|
105
114
|
if(!p)
|
106
115
|
return 0;
|
116
|
+
|
107
117
|
return p->size();
|
108
118
|
}
|
109
119
|
|
@@ -112,6 +122,7 @@ SC_API const sc_warning_t* sc_warning_handler(const sc_warnings_t* warning, size
|
|
112
122
|
const snowcrash::Warnings* p = AS_CTYPE(snowcrash::Warnings, warning);
|
113
123
|
if(!p)
|
114
124
|
return NULL;
|
125
|
+
|
115
126
|
return AS_CTYPE(sc_warning_t, &p->at(index));
|
116
127
|
}
|
117
128
|
|
@@ -120,6 +131,7 @@ SC_API const char* sc_warning_message(const sc_warning_t* warning)
|
|
120
131
|
const snowcrash::Warning* p = AS_CTYPE(snowcrash::Warning, warning);
|
121
132
|
if (!p)
|
122
133
|
return "";
|
134
|
+
|
123
135
|
return p->message.c_str();
|
124
136
|
}
|
125
137
|
|
@@ -128,6 +140,7 @@ SC_API int sc_warning_code(const sc_warning_t* warning)
|
|
128
140
|
const snowcrash::Warning* p = AS_CTYPE(snowcrash::Warning, warning);
|
129
141
|
if (!p)
|
130
142
|
return 0;
|
143
|
+
|
131
144
|
return p->code;
|
132
145
|
}
|
133
146
|
|
@@ -136,5 +149,6 @@ SC_API int sc_warning_ok(const sc_warning_t* warning)
|
|
136
149
|
const snowcrash::Warning* p = AS_CTYPE(snowcrash::Warning, warning);
|
137
150
|
if (!p)
|
138
151
|
return 0;
|
152
|
+
|
139
153
|
return p->OK;
|
140
154
|
}
|
@@ -55,6 +55,8 @@ namespace snowcrash {
|
|
55
55
|
const SectionParserData& pd,
|
56
56
|
Report& report,
|
57
57
|
mdp::ByteBuffer& content) {
|
58
|
+
|
59
|
+
checkPossibleReference(node, pd, report);
|
58
60
|
|
59
61
|
if (node->type == mdp::CodeMarkdownNodeType) {
|
60
62
|
content += node->text;
|
@@ -197,12 +199,14 @@ namespace snowcrash {
|
|
197
199
|
/**
|
198
200
|
* \brief Add dangling message body asset to the given string
|
199
201
|
* \param out The string to which the dangling asset should be added
|
202
|
+
* \param outSM The source map to which source map should be added
|
203
|
+
* \return asset The value of the asset
|
200
204
|
*/
|
201
|
-
static
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
205
|
+
static mdp::ByteBuffer addDanglingAsset(const MarkdownNodeIterator& node,
|
206
|
+
SectionParserData& pd,
|
207
|
+
SectionType& sectionType,
|
208
|
+
Report& report,
|
209
|
+
mdp::ByteBuffer& out) {
|
206
210
|
|
207
211
|
mdp::ByteBuffer asset;
|
208
212
|
|
@@ -220,6 +224,7 @@ namespace snowcrash {
|
|
220
224
|
if (node->type == mdp::CodeMarkdownNodeType)
|
221
225
|
level--; // Deduct one level for a code block
|
222
226
|
|
227
|
+
checkPossibleReference(node, pd, report);
|
223
228
|
|
224
229
|
if (level) {
|
225
230
|
// WARN: Dangling asset
|
@@ -232,6 +237,38 @@ namespace snowcrash {
|
|
232
237
|
IndentationWarning,
|
233
238
|
sourceMap));
|
234
239
|
}
|
240
|
+
|
241
|
+
return asset;
|
242
|
+
}
|
243
|
+
|
244
|
+
/**
|
245
|
+
* \brief Check for potential resource model reference and warn about not recognizing them
|
246
|
+
* \return True if code block contains a resource model reference, false otherwise.
|
247
|
+
*/
|
248
|
+
static bool checkPossibleReference(const MarkdownNodeIterator& node,
|
249
|
+
const SectionParserData& pd,
|
250
|
+
Report& report) {
|
251
|
+
|
252
|
+
mdp::ByteBuffer source = node->text;
|
253
|
+
SymbolName symbol;
|
254
|
+
|
255
|
+
TrimString(source);
|
256
|
+
|
257
|
+
if(GetSymbolReference(source, symbol)) {
|
258
|
+
|
259
|
+
std::stringstream ss;
|
260
|
+
ss << "found a possible '" << symbol << "' model reference, ";
|
261
|
+
ss << "a reference must be directly in the " << SectionName(pd.sectionContext()) << " section, indented by 4 spaces or 1 tab, without any additional sections";
|
262
|
+
|
263
|
+
mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceData);
|
264
|
+
report.warnings.push_back(Warning(ss.str(),
|
265
|
+
IgnoringWarning,
|
266
|
+
sourceMap));
|
267
|
+
|
268
|
+
return true;
|
269
|
+
}
|
270
|
+
|
271
|
+
return false;
|
235
272
|
}
|
236
273
|
};
|
237
274
|
}
|