Skip to content
This repository was archived by the owner on Nov 8, 2024. It is now read-only.

Commit 7581e78

Browse files
authored
Merge pull request #253 from apiaryio/tjanc/do-not-generate-option
Support `generateMessageBody` and `generateMessageBodySchema` options
2 parents a192dc1 + 28476d9 commit 7581e78

10 files changed

+2611
-9
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
"drafter/drafter.gyp",
3838
"drafter/src/*.cc",
3939
"drafter/src/*.h",
40+
"drafter/src/backend/*.cc",
41+
"drafter/src/backend/*.h",
4042
"drafter/src/parser/*.cc",
4143
"drafter/src/parser/*.h",
4244
"drafter/src/utils/*.cc",

src/options.cc

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,15 @@ void Options::setNameRequired() noexcept
5151
ensure_parse_options(parse_options_);
5252
drafter_set_name_required(parse_options_.get());
5353
}
54+
55+
void Options::setSkipGenBodies() noexcept
56+
{
57+
ensure_parse_options(parse_options_);
58+
drafter_set_skip_gen_bodies(parse_options_.get());
59+
}
60+
61+
void Options::setSkipGenBodySchemas() noexcept
62+
{
63+
ensure_parse_options(parse_options_);
64+
drafter_set_skip_gen_body_schemas(parse_options_.get());
65+
}

src/options.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ namespace protagonist
2424

2525
const drafter_parse_options* parseOptions() const noexcept;
2626
void setNameRequired() noexcept;
27+
void setSkipGenBodies() noexcept;
28+
void setSkipGenBodySchemas() noexcept;
2729

2830
bool serializeSourcemaps() const noexcept;
2931
void setSerializeSourcemaps() noexcept;

src/options_parser.cc

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,16 @@ using namespace protagonist;
1010
static const std::string RequireBlueprintNameOptionKey = "requireBlueprintName";
1111
static const std::string ExportSourcemapOptionKey = "exportSourcemap";
1212
static const std::string GenerateSourceMapOptionKey = "generateSourceMap";
13+
static const std::string GenerateMessageBodyOptionKey = "generateMessageBody";
14+
static const std::string GenerateMessageBodySchemaOptionKey = "generateMessageBodySchema";
1315

1416
static ErrorMessage ErrorMessageForUnrecognisedOption(const Nan::Utf8String& key, const bool forValidate)
1517
{
1618
std::stringstream ss;
1719
ss << "unrecognized option '" << *key << "', expected: ";
1820
ss << "'" << RequireBlueprintNameOptionKey << "'";
21+
ss << ", '" << GenerateMessageBodyOptionKey<< "'";
22+
ss << ", '" << GenerateMessageBodySchemaOptionKey<< "'";
1923

2024
if (!forValidate) {
2125
ss << ", '" << GenerateSourceMapOptionKey << "'";
@@ -42,16 +46,18 @@ ErrorMessage protagonist::ParseOptionsObject(Options& options, Local<Object> opt
4246

4347
if (RequireBlueprintNameOptionKey == *strKey) {
4448
if (value->IsTrue()) options.setNameRequired();
45-
}
46-
else if (!forValidate) {
47-
if (ExportSourcemapOptionKey == *strKey || GenerateSourceMapOptionKey == *strKey) {
49+
} else if (GenerateMessageBodyOptionKey == *strKey) {
50+
if (value->IsFalse()) options.setSkipGenBodies();
51+
} else if (GenerateMessageBodySchemaOptionKey == *strKey) {
52+
if (value->IsFalse()) options.setSkipGenBodySchemas();
53+
} else if (!forValidate) {
54+
if (ExportSourcemapOptionKey == *strKey ||
55+
GenerateSourceMapOptionKey == *strKey) {
4856
if (value->IsTrue()) options.setSerializeSourcemaps();
49-
}
50-
else {
57+
} else {
5158
return ErrorMessageForUnrecognisedOption(strKey, forValidate);
5259
}
53-
}
54-
else {
60+
} else {
5561
return ErrorMessageForUnrecognisedOption(strKey, forValidate);
5662
}
5763
}
Lines changed: 310 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,310 @@
1+
{
2+
"element": "parseResult",
3+
"content": [
4+
{
5+
"element": "category",
6+
"meta": {
7+
"classes": {
8+
"element": "array",
9+
"content": [
10+
{
11+
"element": "string",
12+
"content": "api"
13+
}
14+
]
15+
},
16+
"title": {
17+
"element": "string",
18+
"content": ""
19+
}
20+
},
21+
"attributes": {
22+
"metadata": {
23+
"element": "array",
24+
"content": [
25+
{
26+
"element": "member",
27+
"meta": {
28+
"classes": {
29+
"element": "array",
30+
"content": [
31+
{
32+
"element": "string",
33+
"content": "user"
34+
}
35+
]
36+
}
37+
},
38+
"content": {
39+
"key": {
40+
"element": "string",
41+
"content": "FORMAT"
42+
},
43+
"value": {
44+
"element": "string",
45+
"content": "1A"
46+
}
47+
}
48+
}
49+
]
50+
}
51+
},
52+
"content": [
53+
{
54+
"element": "category",
55+
"meta": {
56+
"classes": {
57+
"element": "array",
58+
"content": [
59+
{
60+
"element": "string",
61+
"content": "resourceGroup"
62+
}
63+
]
64+
},
65+
"title": {
66+
"element": "string",
67+
"content": "Messages"
68+
}
69+
},
70+
"content": [
71+
{
72+
"element": "resource",
73+
"meta": {
74+
"title": {
75+
"element": "string",
76+
"content": "Message"
77+
}
78+
},
79+
"attributes": {
80+
"href": {
81+
"element": "string",
82+
"content": "/messages/{id}"
83+
},
84+
"hrefVariables": {
85+
"element": "hrefVariables",
86+
"content": [
87+
{
88+
"element": "member",
89+
"meta": {
90+
"description": {
91+
"element": "string",
92+
"content": "Id of a message"
93+
}
94+
},
95+
"attributes": {
96+
"typeAttributes": {
97+
"element": "array",
98+
"content": [
99+
{
100+
"element": "string",
101+
"content": "required"
102+
}
103+
]
104+
}
105+
},
106+
"content": {
107+
"key": {
108+
"element": "string",
109+
"content": "id"
110+
},
111+
"value": {
112+
"element": "enum",
113+
"attributes": {
114+
"enumerations": {
115+
"element": "array",
116+
"content": [
117+
{
118+
"element": "string",
119+
"content": "1"
120+
},
121+
{
122+
"element": "string",
123+
"content": "2"
124+
},
125+
{
126+
"element": "string",
127+
"content": "3"
128+
}
129+
]
130+
}
131+
}
132+
}
133+
}
134+
}
135+
]
136+
}
137+
},
138+
"content": [
139+
{
140+
"element": "dataStructure",
141+
"content": {
142+
"element": "object",
143+
"meta": {
144+
"id": {
145+
"element": "string",
146+
"content": "Message"
147+
}
148+
},
149+
"content": [
150+
{
151+
"element": "member",
152+
"content": {
153+
"key": {
154+
"element": "string",
155+
"content": "id"
156+
},
157+
"value": {
158+
"element": "number"
159+
}
160+
}
161+
},
162+
{
163+
"element": "member",
164+
"meta": {
165+
"description": {
166+
"element": "string",
167+
"content": "The Message"
168+
}
169+
},
170+
"content": {
171+
"key": {
172+
"element": "string",
173+
"content": "message"
174+
},
175+
"value": {
176+
"element": "string",
177+
"content": "Hello World!"
178+
}
179+
}
180+
}
181+
]
182+
}
183+
},
184+
{
185+
"element": "transition",
186+
"meta": {
187+
"title": {
188+
"element": "string",
189+
"content": "Retrieve Message"
190+
}
191+
},
192+
"content": [
193+
{
194+
"element": "httpTransaction",
195+
"content": [
196+
{
197+
"element": "httpRequest",
198+
"attributes": {
199+
"method": {
200+
"element": "string",
201+
"content": "GET"
202+
}
203+
},
204+
"content": []
205+
},
206+
{
207+
"element": "httpResponse",
208+
"attributes": {
209+
"statusCode": {
210+
"element": "string",
211+
"content": "200"
212+
},
213+
"headers": {
214+
"element": "httpHeaders",
215+
"content": [
216+
{
217+
"element": "member",
218+
"content": {
219+
"key": {
220+
"element": "string",
221+
"content": "Content-Type"
222+
},
223+
"value": {
224+
"element": "string",
225+
"content": "application/json"
226+
}
227+
}
228+
}
229+
]
230+
}
231+
},
232+
"content": [
233+
{
234+
"element": "dataStructure",
235+
"content": {
236+
"element": "Message"
237+
}
238+
},
239+
{
240+
"element": "asset",
241+
"meta": {
242+
"classes": {
243+
"element": "array",
244+
"content": [
245+
{
246+
"element": "string",
247+
"content": "messageBody"
248+
}
249+
]
250+
}
251+
},
252+
"attributes": {
253+
"contentType": {
254+
"element": "string",
255+
"content": "application/json"
256+
}
257+
},
258+
"content": "{\n \"id\": 0,\n \"message\": \"Hello World!\"\n}"
259+
}
260+
]
261+
}
262+
]
263+
}
264+
]
265+
},
266+
{
267+
"element": "transition",
268+
"meta": {
269+
"title": {
270+
"element": "string",
271+
"content": "Delete Message"
272+
}
273+
},
274+
"content": [
275+
{
276+
"element": "httpTransaction",
277+
"content": [
278+
{
279+
"element": "httpRequest",
280+
"attributes": {
281+
"method": {
282+
"element": "string",
283+
"content": "DELETE"
284+
}
285+
},
286+
"content": []
287+
},
288+
{
289+
"element": "httpResponse",
290+
"attributes": {
291+
"statusCode": {
292+
"element": "string",
293+
"content": "204"
294+
}
295+
},
296+
"content": []
297+
}
298+
]
299+
}
300+
]
301+
}
302+
]
303+
}
304+
]
305+
}
306+
]
307+
}
308+
]
309+
}
310+

0 commit comments

Comments
 (0)