redsnow 0.2.1 → 0.3.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +2 -0
- data/ext/snowcrash/bin/snowcrash +0 -0
- data/ext/snowcrash/snowcrash.xcworkspace/contents.xcworkspacedata +10 -0
- data/ext/snowcrash/src/ActionParser.h +35 -33
- data/ext/snowcrash/src/AssetParser.h +17 -17
- data/ext/snowcrash/src/Blueprint.h +101 -66
- data/ext/snowcrash/src/BlueprintParser.h +219 -10
- data/ext/snowcrash/src/BlueprintSourcemap.h +1 -1
- data/ext/snowcrash/src/BlueprintUtility.h +14 -14
- data/ext/snowcrash/src/CBlueprint.cc +29 -10
- data/ext/snowcrash/src/CBlueprint.h +19 -3
- data/ext/snowcrash/src/CBlueprintSourcemap.cc +20 -10
- data/ext/snowcrash/src/CBlueprintSourcemap.h +12 -3
- data/ext/snowcrash/src/CodeBlockUtility.h +25 -25
- data/ext/snowcrash/src/HTTP.cc +3 -0
- data/ext/snowcrash/src/HTTP.h +9 -6
- data/ext/snowcrash/src/HeadersParser.h +34 -14
- data/ext/snowcrash/src/ParameterParser.h +21 -21
- data/ext/snowcrash/src/ParametersParser.h +6 -5
- data/ext/snowcrash/src/PayloadParser.h +174 -129
- data/ext/snowcrash/src/RegexMatch.h +3 -3
- data/ext/snowcrash/src/ResourceGroupParser.h +5 -4
- data/ext/snowcrash/src/ResourceParser.h +30 -26
- data/ext/snowcrash/src/Section.cc +6 -6
- data/ext/snowcrash/src/Section.h +2 -2
- data/ext/snowcrash/src/SectionParser.h +41 -41
- data/ext/snowcrash/src/SectionParserData.h +10 -10
- data/ext/snowcrash/src/SectionProcessor.h +70 -30
- data/ext/snowcrash/src/Serialize.h +3 -3
- data/ext/snowcrash/src/SerializeJSON.cc +124 -96
- data/ext/snowcrash/src/SerializeJSON.h +1 -1
- data/ext/snowcrash/src/SerializeYAML.cc +71 -53
- data/ext/snowcrash/src/SerializeYAML.h +1 -1
- data/ext/snowcrash/src/Signature.cc +2 -2
- data/ext/snowcrash/src/Signature.h +1 -1
- data/ext/snowcrash/src/SourceAnnotation.h +23 -23
- data/ext/snowcrash/src/StringUtility.h +71 -9
- data/ext/snowcrash/src/SymbolTable.h +17 -17
- data/ext/snowcrash/src/UriTemplateParser.cc +5 -5
- data/ext/snowcrash/src/UriTemplateParser.h +9 -9
- data/ext/snowcrash/src/ValuesParser.h +2 -2
- data/ext/snowcrash/src/Version.h +1 -1
- data/ext/snowcrash/src/csnowcrash.cc +10 -8
- data/ext/snowcrash/src/snowcrash.cc +9 -9
- data/ext/snowcrash/src/snowcrash.h +6 -8
- data/ext/snowcrash/src/snowcrash/snowcrash.cc +14 -14
- data/ext/snowcrash/src/win/RegexMatch.cc +7 -7
- data/ext/snowcrash/tools/gyp/pylib/gyp/__init__.pyc +0 -0
- data/ext/snowcrash/tools/gyp/pylib/gyp/common.pyc +0 -0
- data/ext/snowcrash/tools/gyp/pylib/gyp/generator/__init__.pyc +0 -0
- data/ext/snowcrash/tools/gyp/pylib/gyp/generator/make.pyc +0 -0
- data/ext/snowcrash/tools/gyp/pylib/gyp/generator/xcode.pyc +0 -0
- data/ext/snowcrash/tools/gyp/pylib/gyp/input.pyc +0 -0
- data/ext/snowcrash/tools/gyp/pylib/gyp/xcode_emulation.pyc +0 -0
- data/ext/snowcrash/tools/gyp/pylib/gyp/xcodeproj_file.pyc +0 -0
- data/ext/snowcrash/tools/homebrew/snowcrash.rb +1 -1
- data/lib/redsnow/binding.rb +8 -2
- data/lib/redsnow/blueprint.rb +4 -3
- data/lib/redsnow/sourcemap.rb +6 -4
- data/lib/redsnow/version.rb +1 -1
- metadata +4 -17
@@ -17,13 +17,13 @@ static std::string ReservedCharacters = "#-[]:|>!*&%@`,{}?\'";
|
|
17
17
|
static std::string NormalizeStringValue(const std::string& value, bool& needsQuotation)
|
18
18
|
{
|
19
19
|
std::string normalizedValue = value;
|
20
|
-
|
20
|
+
|
21
21
|
if (normalizedValue.find("\"") != std::string::npos)
|
22
22
|
normalizedValue = EscapeDoubleQuotes(normalizedValue);
|
23
|
-
|
23
|
+
|
24
24
|
if (value.find("\n") != std::string::npos)
|
25
25
|
normalizedValue = EscapeNewlines(normalizedValue);
|
26
|
-
|
26
|
+
|
27
27
|
needsQuotation = (normalizedValue != value);
|
28
28
|
|
29
29
|
if (!needsQuotation) {
|
@@ -33,7 +33,7 @@ static std::string NormalizeStringValue(const std::string& value, bool& needsQuo
|
|
33
33
|
break;
|
34
34
|
}
|
35
35
|
}
|
36
|
-
|
36
|
+
|
37
37
|
return normalizedValue;
|
38
38
|
}
|
39
39
|
|
@@ -43,7 +43,7 @@ static void ArrayItemLeadIn(size_t level, std::ostream &os, bool withTrailingSpa
|
|
43
43
|
{
|
44
44
|
if (level < 1)
|
45
45
|
return;
|
46
|
-
|
46
|
+
|
47
47
|
for (size_t i = 0; i < level - 1; ++i)
|
48
48
|
os << " ";
|
49
49
|
|
@@ -59,17 +59,17 @@ static void serialize(const std::string& key, const std::string& value, size_t l
|
|
59
59
|
{
|
60
60
|
if (key.empty())
|
61
61
|
return;
|
62
|
-
|
62
|
+
|
63
63
|
for (size_t i = 0; i < level; ++i)
|
64
64
|
os << " ";
|
65
|
-
|
65
|
+
|
66
66
|
if (!value.empty()) {
|
67
|
-
|
67
|
+
|
68
68
|
os << key << ": ";
|
69
69
|
|
70
70
|
bool needsQuotation = false;
|
71
71
|
std::string normalizedValue = NormalizeStringValue(value, needsQuotation);
|
72
|
-
|
72
|
+
|
73
73
|
if (implicitQuotation) {
|
74
74
|
// Always use quotation
|
75
75
|
os << "\"" << normalizedValue << "\"";
|
@@ -80,7 +80,7 @@ static void serialize(const std::string& key, const std::string& value, size_t l
|
|
80
80
|
else
|
81
81
|
os << value;
|
82
82
|
}
|
83
|
-
|
83
|
+
|
84
84
|
os << std::endl;
|
85
85
|
}
|
86
86
|
else
|
@@ -160,7 +160,7 @@ static void serializeKeyValueCollection(const Collection<KeyValuePair>::type& co
|
|
160
160
|
static void serialize(const Collection<Metadata>::type& metadata, std::ostream &os)
|
161
161
|
{
|
162
162
|
serialize(SerializeKey::Metadata, std::string(), 0, os);
|
163
|
-
|
163
|
+
|
164
164
|
if (metadata.empty())
|
165
165
|
return;
|
166
166
|
|
@@ -204,28 +204,28 @@ static void serialize(const Parameters& parameters, size_t level, std::ostream &
|
|
204
204
|
|
205
205
|
// Description
|
206
206
|
serialize(SerializeKey::Description, it->description, level + 1, os);
|
207
|
-
|
207
|
+
|
208
208
|
// Type
|
209
209
|
serialize(SerializeKey::Type, it->type, level + 1, os);
|
210
|
-
|
210
|
+
|
211
211
|
// Required
|
212
212
|
serialize(SerializeKey::Required, (it->use == OptionalParameterUse) ? "false" : "true", level + 1, os, false);
|
213
|
-
|
213
|
+
|
214
214
|
// Default
|
215
215
|
serialize(SerializeKey::Default, it->defaultValue, level + 1, os);
|
216
|
-
|
216
|
+
|
217
217
|
// Example
|
218
218
|
serialize(SerializeKey::Example, it->exampleValue, level + 1, os);
|
219
|
-
|
219
|
+
|
220
220
|
// Values
|
221
221
|
serialize(SerializeKey::Values, std::string(), level + 1, os);
|
222
|
-
|
222
|
+
|
223
223
|
for (Collection<Value>::const_iterator val_it = it->values.begin();
|
224
224
|
val_it != it->values.end();
|
225
225
|
++val_it) {
|
226
226
|
|
227
227
|
ArrayItemLeadIn(level + 2, os);
|
228
|
-
|
228
|
+
|
229
229
|
serialize(SerializeKey::Value, *val_it, 0, os);
|
230
230
|
}
|
231
231
|
}
|
@@ -275,13 +275,36 @@ static void serialize(const Collection<SourceMap<Parameter> >::type& parameters,
|
|
275
275
|
}
|
276
276
|
}
|
277
277
|
|
278
|
+
/** Serialize Reference */
|
279
|
+
static void serialize(const Reference& reference, size_t level, std::ostream &os)
|
280
|
+
{
|
281
|
+
if (reference.id.empty()) {
|
282
|
+
return;
|
283
|
+
}
|
284
|
+
|
285
|
+
serialize(SerializeKey::Reference, "", level - 1, os);
|
286
|
+
|
287
|
+
// ID
|
288
|
+
serialize(SerializeKey::Id, reference.id, level, os);
|
289
|
+
}
|
290
|
+
|
291
|
+
/** Serialize Reference source map */
|
292
|
+
static void serialize(const SourceMap<Reference>& reference, size_t level, std::ostream &os)
|
293
|
+
{
|
294
|
+
if (reference.sourceMap.empty()) {
|
295
|
+
return;
|
296
|
+
}
|
297
|
+
|
298
|
+
serialize(SerializeKey::Reference, reference, level - 1, os);
|
299
|
+
}
|
300
|
+
|
278
301
|
/** Serialize Payload */
|
279
302
|
static void serialize(const Payload& payload, size_t level, bool array, std::ostream &os)
|
280
303
|
{
|
281
304
|
for (size_t i = 0; i < level - 1; i++) {
|
282
305
|
os << " ";
|
283
306
|
}
|
284
|
-
|
307
|
+
|
285
308
|
if (array)
|
286
309
|
os << "- ";
|
287
310
|
else
|
@@ -290,25 +313,22 @@ static void serialize(const Payload& payload, size_t level, bool array, std::ost
|
|
290
313
|
// Name
|
291
314
|
serialize(SerializeKey::Name, payload.name, 0, os);
|
292
315
|
|
293
|
-
//
|
294
|
-
|
295
|
-
serialize(SerializeKey::Reference, "", level, os);
|
296
|
-
serialize(SerializeKey::Id, payload.symbol, level + 1, os);
|
297
|
-
}
|
316
|
+
// Reference
|
317
|
+
serialize(payload.reference, level + 1, os);
|
298
318
|
|
299
319
|
// Description
|
300
320
|
serialize(SerializeKey::Description, payload.description, level, os);
|
301
|
-
|
321
|
+
|
302
322
|
// Headers
|
303
323
|
serialize(SerializeKey::Headers, std::string(), level, os);
|
304
324
|
|
305
325
|
if (!payload.headers.empty()) {
|
306
326
|
serialize(payload.headers, level, os);
|
307
327
|
}
|
308
|
-
|
328
|
+
|
309
329
|
// Body
|
310
330
|
serialize(SerializeKey::Body, payload.body, level, os);
|
311
|
-
|
331
|
+
|
312
332
|
// Schema
|
313
333
|
serialize(SerializeKey::Schema, payload.schema, level, os);
|
314
334
|
}
|
@@ -328,10 +348,8 @@ static void serialize(const SourceMap<Payload>& payload, size_t level, bool arra
|
|
328
348
|
// Name
|
329
349
|
serialize(SerializeKey::Name, payload.name, level, os, true);
|
330
350
|
|
331
|
-
//
|
332
|
-
|
333
|
-
serialize(SerializeKey::Reference, payload.symbol, level, os);
|
334
|
-
}
|
351
|
+
// Reference
|
352
|
+
serialize(payload.reference, level + 1, os);
|
335
353
|
|
336
354
|
// Description
|
337
355
|
serialize(SerializeKey::Description, payload.description, level, os);
|
@@ -357,10 +375,10 @@ static void serialize(const TransactionExample& example, std::ostream &os)
|
|
357
375
|
|
358
376
|
// Name
|
359
377
|
serialize(SerializeKey::Name, example.name, 0, os);
|
360
|
-
|
378
|
+
|
361
379
|
// Description
|
362
380
|
serialize(SerializeKey::Description, example.description, 4, os);
|
363
|
-
|
381
|
+
|
364
382
|
// Requests
|
365
383
|
serialize(SerializeKey::Requests, std::string(), 4, os);
|
366
384
|
|
@@ -372,7 +390,7 @@ static void serialize(const TransactionExample& example, std::ostream &os)
|
|
372
390
|
serialize(*it, 5, true, os);
|
373
391
|
}
|
374
392
|
}
|
375
|
-
|
393
|
+
|
376
394
|
// Responses
|
377
395
|
serialize(SerializeKey::Responses, std::string(), 4, os);
|
378
396
|
|
@@ -426,22 +444,22 @@ static void serialize(const SourceMap<TransactionExample>& example, std::ostream
|
|
426
444
|
static void serialize(const Action& action, std::ostream &os)
|
427
445
|
{
|
428
446
|
os << " - "; // indent 3
|
429
|
-
|
447
|
+
|
430
448
|
// Name
|
431
449
|
serialize(SerializeKey::Name, action.name, 0, os);
|
432
|
-
|
450
|
+
|
433
451
|
// Description
|
434
452
|
serialize(SerializeKey::Description, action.description, 3, os);
|
435
453
|
|
436
454
|
// HTTP method
|
437
455
|
serialize(SerializeKey::Method, action.method, 3, os);
|
438
|
-
|
456
|
+
|
439
457
|
// Parameters
|
440
458
|
serialize(SerializeKey::Parameters, std::string(), 3, os);
|
441
459
|
|
442
460
|
if (!action.parameters.empty())
|
443
461
|
serialize(action.parameters, 3, os);
|
444
|
-
|
462
|
+
|
445
463
|
// Examples
|
446
464
|
serialize(SerializeKey::Examples, std::string(), 3, os);
|
447
465
|
|
@@ -492,34 +510,34 @@ static void serialize(const SourceMap<Action>& action, std::ostream &os)
|
|
492
510
|
static void serialize(const Resource& resource, std::ostream &os)
|
493
511
|
{
|
494
512
|
os << " - "; // indent 2
|
495
|
-
|
513
|
+
|
496
514
|
// Name
|
497
515
|
serialize(SerializeKey::Name, resource.name, 0, os);
|
498
|
-
|
516
|
+
|
499
517
|
// Description
|
500
518
|
serialize(SerializeKey::Description, resource.description, 2, os);
|
501
|
-
|
519
|
+
|
502
520
|
// URI Template
|
503
521
|
serialize(SerializeKey::URITemplate, resource.uriTemplate, 2, os);
|
504
|
-
|
522
|
+
|
505
523
|
// Model
|
506
524
|
serialize(SerializeKey::Model, std::string(), 2, os);
|
507
525
|
|
508
526
|
if (!resource.model.name.empty())
|
509
527
|
serialize(resource.model, 3, false, os);
|
510
|
-
|
528
|
+
|
511
529
|
// Parameters
|
512
530
|
serialize(SerializeKey::Parameters, std::string(), 2, os);
|
513
531
|
|
514
532
|
if (!resource.parameters.empty())
|
515
533
|
serialize(resource.parameters, 2, os);
|
516
|
-
|
534
|
+
|
517
535
|
// Actions
|
518
536
|
serialize(SerializeKey::Actions, std::string(), 2, os);
|
519
|
-
|
537
|
+
|
520
538
|
if (resource.actions.empty())
|
521
539
|
return;
|
522
|
-
|
540
|
+
|
523
541
|
for (Collection<Action>::const_iterator it = resource.actions.begin();
|
524
542
|
it != resource.actions.end();
|
525
543
|
++it) {
|
@@ -575,13 +593,13 @@ static void serialize(const ResourceGroup& group, std::ostream &os)
|
|
575
593
|
|
576
594
|
// Name
|
577
595
|
serialize(SerializeKey::Name, group.name, 0, os);
|
578
|
-
|
596
|
+
|
579
597
|
// Description
|
580
598
|
serialize(SerializeKey::Description, group.description, 1, os);
|
581
599
|
|
582
600
|
// Resources
|
583
601
|
serialize(SerializeKey::Resources, std::string(), 1, os);
|
584
|
-
|
602
|
+
|
585
603
|
if (group.resources.empty())
|
586
604
|
return;
|
587
605
|
|
@@ -623,16 +641,16 @@ static void serialize(const Blueprint& blueprint, std::ostream &os)
|
|
623
641
|
{
|
624
642
|
// AST Version
|
625
643
|
serialize(SerializeKey::ASTVersion, AST_SERIALIZATION_VERSION, 0, os, false);
|
626
|
-
|
644
|
+
|
627
645
|
// Metadata
|
628
646
|
serialize(blueprint.metadata, os);
|
629
|
-
|
647
|
+
|
630
648
|
// API Name
|
631
649
|
serialize(SerializeKey::Name, blueprint.name, 0, os);
|
632
|
-
|
650
|
+
|
633
651
|
// API Description
|
634
652
|
serialize(SerializeKey::Description, blueprint.description, 0, os);
|
635
|
-
|
653
|
+
|
636
654
|
// Resource Groups
|
637
655
|
serialize(SerializeKey::ResourceGroups, std::string(), 0, os);
|
638
656
|
|
@@ -642,7 +660,7 @@ static void serialize(const Blueprint& blueprint, std::ostream &os)
|
|
642
660
|
for (Collection<ResourceGroup>::type::const_iterator it = blueprint.resourceGroups.begin();
|
643
661
|
it != blueprint.resourceGroups.end();
|
644
662
|
++it) {
|
645
|
-
|
663
|
+
|
646
664
|
serialize(*it, os);
|
647
665
|
}
|
648
666
|
}
|
@@ -38,7 +38,7 @@ SectionType snowcrash::SectionKeywordSignature(const mdp::MarkdownNodeIterator&
|
|
38
38
|
if ((type = SectionProcessor<Parameters>::sectionType(node)) != UndefinedSectionType)
|
39
39
|
return type;
|
40
40
|
|
41
|
-
/*
|
41
|
+
/*
|
42
42
|
* NOTE: Order is important. Resource MUST preceed the Action.
|
43
43
|
*
|
44
44
|
* This is because an HTTP Request Method + URI is recognized as both %ActionSectionType and %ResourceSectionType.
|
@@ -46,7 +46,7 @@ SectionType snowcrash::SectionKeywordSignature(const mdp::MarkdownNodeIterator&
|
|
46
46
|
*/
|
47
47
|
if ((type = SectionProcessor<Resource>::sectionType(node)) != UndefinedSectionType)
|
48
48
|
return type;
|
49
|
-
|
49
|
+
|
50
50
|
if ((type = SectionProcessor<Action>::sectionType(node)) != UndefinedSectionType)
|
51
51
|
return type;
|
52
52
|
|
@@ -14,8 +14,8 @@
|
|
14
14
|
#include "ByteBuffer.h"
|
15
15
|
|
16
16
|
namespace snowcrash {
|
17
|
-
|
18
|
-
|
17
|
+
|
18
|
+
|
19
19
|
/**
|
20
20
|
* \brief A source data annotation.
|
21
21
|
*
|
@@ -23,30 +23,30 @@ namespace snowcrash {
|
|
23
23
|
* annotation code and an optional message.
|
24
24
|
*/
|
25
25
|
struct SourceAnnotation {
|
26
|
-
|
26
|
+
|
27
27
|
/**
|
28
28
|
* \brief Default annotation code representing success.
|
29
29
|
*/
|
30
30
|
static const int OK;
|
31
|
-
|
31
|
+
|
32
32
|
/**
|
33
33
|
* \brief %SourceAnnotation default constructor.
|
34
34
|
*
|
35
35
|
* Creates an empty annotation with the default annotation code.
|
36
36
|
*/
|
37
37
|
SourceAnnotation() : code(OK) {}
|
38
|
-
|
38
|
+
|
39
39
|
/**
|
40
40
|
* \brief %SourceAnnotation copy constructor.
|
41
41
|
* \param rhs An annotation to be copied.
|
42
42
|
*/
|
43
43
|
SourceAnnotation(const SourceAnnotation& rhs) {
|
44
|
-
|
44
|
+
|
45
45
|
this->message = rhs.message;
|
46
46
|
this->code = rhs.code;
|
47
47
|
this->location = rhs.location;
|
48
48
|
}
|
49
|
-
|
49
|
+
|
50
50
|
/**
|
51
51
|
* \brief %SourceAnnotation constructor.
|
52
52
|
* \param message An annotation message.
|
@@ -56,18 +56,18 @@ namespace snowcrash {
|
|
56
56
|
SourceAnnotation(const std::string& message,
|
57
57
|
int code = OK,
|
58
58
|
const mdp::CharactersRangeSet& location = mdp::CharactersRangeSet()) {
|
59
|
-
|
59
|
+
|
60
60
|
this->message = message;
|
61
61
|
this->code = code;
|
62
|
-
|
62
|
+
|
63
63
|
this->location.clear();
|
64
64
|
if (!location.empty())
|
65
65
|
this->location.assign(location.begin(), location.end());
|
66
66
|
}
|
67
|
-
|
67
|
+
|
68
68
|
/** \brief %SourceAnnotation destructor. */
|
69
69
|
~SourceAnnotation() {}
|
70
|
-
|
70
|
+
|
71
71
|
/**
|
72
72
|
* \brief %SourceAnnotation assignment operator
|
73
73
|
* \param rhs An annotation to be assigned to this annotation.
|
@@ -78,22 +78,22 @@ namespace snowcrash {
|
|
78
78
|
this->location = rhs.location;
|
79
79
|
return *this;
|
80
80
|
}
|
81
|
-
|
81
|
+
|
82
82
|
/** The location of this annotation within the source data buffer. */
|
83
83
|
mdp::CharactersRangeSet location;
|
84
|
-
|
84
|
+
|
85
85
|
/** An annotation code. */
|
86
86
|
int code;
|
87
|
-
|
87
|
+
|
88
88
|
/** A annotation message. */
|
89
89
|
std::string message;
|
90
90
|
};
|
91
|
-
|
91
|
+
|
92
92
|
/**
|
93
93
|
* Error source annotation.
|
94
94
|
*/
|
95
95
|
typedef SourceAnnotation Error;
|
96
|
-
|
96
|
+
|
97
97
|
/**
|
98
98
|
* Error codes
|
99
99
|
*/
|
@@ -103,12 +103,12 @@ namespace snowcrash {
|
|
103
103
|
BusinessError = 2,
|
104
104
|
SymbolError = 3
|
105
105
|
};
|
106
|
-
|
106
|
+
|
107
107
|
/**
|
108
108
|
* Warning source annotation.
|
109
109
|
*/
|
110
110
|
typedef SourceAnnotation Warning;
|
111
|
-
|
111
|
+
|
112
112
|
/**
|
113
113
|
* Warning codes
|
114
114
|
*/
|
@@ -127,12 +127,12 @@ namespace snowcrash {
|
|
127
127
|
AmbiguityWarning = 11,
|
128
128
|
URIWarning = 12
|
129
129
|
};
|
130
|
-
|
130
|
+
|
131
131
|
/**
|
132
132
|
* A set of warning source annotations.
|
133
133
|
*/
|
134
134
|
typedef std::vector<Warning> Warnings;
|
135
|
-
|
135
|
+
|
136
136
|
/**
|
137
137
|
* \brief A parsing report Report.
|
138
138
|
*
|
@@ -141,7 +141,7 @@ namespace snowcrash {
|
|
141
141
|
* and a set of warning source annotations.
|
142
142
|
*/
|
143
143
|
struct Report {
|
144
|
-
|
144
|
+
|
145
145
|
/**
|
146
146
|
* \brief Append a report to this one, replacing the error source annotation.
|
147
147
|
*
|
@@ -152,10 +152,10 @@ namespace snowcrash {
|
|
152
152
|
warnings.insert(warnings.end(), rhs.warnings.begin(), rhs.warnings.end());
|
153
153
|
return *this;
|
154
154
|
}
|
155
|
-
|
155
|
+
|
156
156
|
/** Result error source annotation */
|
157
157
|
Error error;
|
158
|
-
|
158
|
+
|
159
159
|
/** Result warning source annotations */
|
160
160
|
Warnings warnings;
|
161
161
|
};
|