redsnow 0.1.6 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +2 -0
- data/ext/snowcrash/Makefile +1 -1
- data/ext/snowcrash/bin/snowcrash +0 -0
- data/ext/snowcrash/configure +9 -9
- data/ext/snowcrash/ext/markdown-parser/Makefile +87 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/CONTRIBUTING.md +0 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/Makefile +2 -1
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/Makefile.win +0 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/examples/smartypants.c +0 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/examples/sundown.c +0 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/html/houdini.h +0 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/html/houdini_href_e.c +0 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/html/houdini_html_e.c +0 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/html/html.c +0 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/html/html.h +0 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/html/html_smartypants.c +0 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/html_block_names.txt +0 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/src/autolink.c +0 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/src/autolink.h +0 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/src/buffer.c +0 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/src/buffer.h +1 -1
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/src/html_blocks.h +0 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/src/markdown.c +9 -3
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/src/markdown.h +0 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/src/src_map.c +11 -7
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/src/src_map.h +1 -1
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/src/stack.c +0 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/src/stack.h +0 -0
- data/ext/snowcrash/{sundown → ext/markdown-parser/ext/sundown}/sundown.def +0 -0
- data/ext/snowcrash/ext/markdown-parser/msvc/markdown/markdown.vcproj +188 -0
- data/ext/snowcrash/ext/markdown-parser/msvc/msvc.sln +38 -0
- data/ext/snowcrash/ext/markdown-parser/msvc/sundown/sundown.vcproj +206 -0
- data/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.cc +92 -0
- data/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.h +82 -0
- data/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.cc +152 -0
- data/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.h +103 -0
- data/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.cc +388 -0
- data/ext/snowcrash/{src → ext/markdown-parser/src}/MarkdownParser.h +43 -33
- data/ext/snowcrash/snowcrash.gyp +114 -63
- data/ext/snowcrash/src/ActionParser.h +334 -398
- data/ext/snowcrash/src/AssetParser.h +82 -171
- data/ext/snowcrash/src/Blueprint.h +7 -2
- data/ext/snowcrash/src/BlueprintParser.h +212 -286
- data/ext/snowcrash/src/BlueprintUtility.h +2 -2
- data/ext/snowcrash/src/CBlueprint.h +1 -1
- data/ext/snowcrash/src/CSourceAnnotation.cc +11 -11
- data/ext/snowcrash/src/CSourceAnnotation.h +9 -9
- data/ext/snowcrash/src/CodeBlockUtility.h +199 -149
- data/ext/snowcrash/src/HeadersParser.h +197 -0
- data/ext/snowcrash/src/ParameterParser.h +429 -0
- data/ext/snowcrash/src/ParametersParser.h +136 -211
- data/ext/snowcrash/src/PayloadParser.h +458 -562
- data/ext/snowcrash/src/Platform.h +0 -3
- data/ext/snowcrash/src/ResourceGroupParser.h +183 -164
- data/ext/snowcrash/src/ResourceParser.h +325 -493
- data/ext/snowcrash/src/Section.cc +42 -0
- data/ext/snowcrash/src/Section.h +47 -0
- data/ext/snowcrash/src/SectionParser.h +229 -0
- data/ext/snowcrash/src/SectionParserData.h +81 -0
- data/ext/snowcrash/src/SectionProcessor.h +211 -0
- data/ext/snowcrash/src/Signature.cc +74 -0
- data/ext/snowcrash/src/Signature.h +32 -0
- data/ext/snowcrash/src/SourceAnnotation.h +7 -20
- data/ext/snowcrash/src/StringUtility.h +30 -10
- data/ext/snowcrash/src/SymbolTable.h +7 -7
- data/ext/snowcrash/src/UriTemplateParser.cc +10 -10
- data/ext/snowcrash/src/UriTemplateParser.h +11 -14
- data/ext/snowcrash/src/ValuesParser.h +122 -0
- data/ext/snowcrash/src/Version.h +2 -2
- data/ext/snowcrash/src/csnowcrash.cc +5 -5
- data/ext/snowcrash/src/csnowcrash.h +3 -3
- data/ext/snowcrash/src/snowcrash.cc +74 -4
- data/ext/snowcrash/src/snowcrash.h +9 -4
- data/ext/snowcrash/src/snowcrash/snowcrash.cc +16 -16
- data/ext/snowcrash/tools/homebrew/snowcrash.rb +3 -2
- data/ext/snowcrash/vcbuild.bat +13 -4
- data/lib/redsnow.rb +5 -5
- data/lib/redsnow/binding.rb +1 -1
- data/lib/redsnow/blueprint.rb +33 -2
- data/lib/redsnow/parseresult.rb +7 -4
- data/lib/redsnow/version.rb +1 -1
- data/test/redsnow_binding_test.rb +6 -6
- data/test/redsnow_parseresult_test.rb +1 -1
- metadata +62 -42
- data/ext/snowcrash/src/BlockUtility.h +0 -186
- data/ext/snowcrash/src/BlueprintParserCore.h +0 -190
- data/ext/snowcrash/src/BlueprintSection.h +0 -140
- data/ext/snowcrash/src/DescriptionSectionUtility.h +0 -156
- data/ext/snowcrash/src/HeaderParser.h +0 -289
- data/ext/snowcrash/src/ListBlockUtility.h +0 -273
- data/ext/snowcrash/src/ListUtility.h +0 -95
- data/ext/snowcrash/src/MarkdownBlock.cc +0 -176
- data/ext/snowcrash/src/MarkdownBlock.h +0 -93
- data/ext/snowcrash/src/MarkdownParser.cc +0 -266
- data/ext/snowcrash/src/ParameterDefinitonParser.h +0 -645
- data/ext/snowcrash/src/Parser.cc +0 -71
- data/ext/snowcrash/src/Parser.h +0 -29
- data/ext/snowcrash/src/ParserCore.cc +0 -120
- data/ext/snowcrash/src/ParserCore.h +0 -82
- data/ext/snowcrash/src/SectionUtility.h +0 -142
data/ext/snowcrash/src/Version.h
CHANGED
@@ -15,8 +15,8 @@
|
|
15
15
|
#define SNOWCRASH_VERSION_H
|
16
16
|
|
17
17
|
#define SNOWCRASH_MAJOR_VERSION 0
|
18
|
-
#define SNOWCRASH_MINOR_VERSION
|
19
|
-
#define SNOWCRASH_PATCH_VERSION
|
18
|
+
#define SNOWCRASH_MINOR_VERSION 14
|
19
|
+
#define SNOWCRASH_PATCH_VERSION 0
|
20
20
|
|
21
21
|
#define SNOWCRASH_VERSION_IS_RELEASE 1
|
22
22
|
|
@@ -5,19 +5,19 @@
|
|
5
5
|
// Created by Ali Khoramshahi on 13/6/14.
|
6
6
|
// Copyright (c) 2014 Apiary Inc. All rights reserved.
|
7
7
|
//
|
8
|
+
|
8
9
|
#include "csnowcrash.h"
|
9
10
|
#include "snowcrash.h"
|
10
11
|
|
11
|
-
|
12
|
-
int sc_c_parse(const char* source, sc_blueprint_parser_options option, sc_result_t** result, sc_blueprint_t** blueprint)
|
12
|
+
int sc_c_parse(const char* source, sc_blueprint_parser_options option, sc_report_t** report, sc_blueprint_t** blueprint)
|
13
13
|
{
|
14
|
-
snowcrash::
|
14
|
+
snowcrash::Report* t_report = ::new snowcrash::Report;
|
15
15
|
snowcrash::Blueprint* t_blueprint = ::new snowcrash::Blueprint;
|
16
16
|
|
17
|
-
int ret = snowcrash::parse(source, option, *
|
17
|
+
int ret = snowcrash::parse(source, option, *t_report, *t_blueprint);
|
18
18
|
|
19
19
|
*blueprint = AS_TYPE(sc_blueprint_t, t_blueprint);
|
20
|
-
*
|
20
|
+
*report = AS_TYPE(sc_report_t, t_report);
|
21
21
|
|
22
22
|
return ret;
|
23
23
|
}
|
@@ -22,14 +22,14 @@ extern "C" {
|
|
22
22
|
*
|
23
23
|
* \param source A textual source data to be parsed.
|
24
24
|
* \param options Parser options. Use 0 for no addtional options.
|
25
|
-
* \param
|
25
|
+
* \param report returns the pointer to report.
|
26
26
|
* \param blueprint returns the pointer to blueprint AST.
|
27
27
|
*
|
28
28
|
* \return Error status code. Zero represents success, non-zero a failure.
|
29
29
|
*
|
30
|
-
* \this function will allocate `
|
30
|
+
* \this function will allocate `report` and `blueprint`, for deallocation `sc_blueprint_free` and `sc_report_free` should be called.
|
31
31
|
*/
|
32
|
-
SC_API int sc_c_parse(const char* source, sc_blueprint_parser_options option,
|
32
|
+
SC_API int sc_c_parse(const char* source, sc_blueprint_parser_options option, sc_report_t** report, sc_blueprint_t** blueprint);
|
33
33
|
|
34
34
|
#ifdef __cplusplus
|
35
35
|
}
|
@@ -7,12 +7,82 @@
|
|
7
7
|
//
|
8
8
|
|
9
9
|
#include "snowcrash.h"
|
10
|
+
#include "MarkdownParser.h"
|
11
|
+
#include "BlueprintParser.h"
|
12
|
+
|
13
|
+
const int snowcrash::SourceAnnotation::OK = 0;
|
10
14
|
|
11
15
|
using namespace snowcrash;
|
12
16
|
|
13
|
-
|
17
|
+
/**
|
18
|
+
* \brief Check source for unsupported character \t & \r
|
19
|
+
* \return True if passed (not found), false otherwise
|
20
|
+
*/
|
21
|
+
static bool CheckSource(const mdp::ByteBuffer& source, Report& report)
|
14
22
|
{
|
15
|
-
|
16
|
-
|
17
|
-
|
23
|
+
std::string::size_type pos = source.find("\t");
|
24
|
+
|
25
|
+
if (pos != std::string::npos) {
|
26
|
+
|
27
|
+
mdp::BytesRangeSet rangeSet;
|
28
|
+
rangeSet.push_back(mdp::BytesRange(pos, 1));
|
29
|
+
report.error = Error("the use of tab(s) '\\t' in source data isn't currently supported, please contact makers",
|
30
|
+
BusinessError,
|
31
|
+
mdp::BytesRangeSetToCharactersRangeSet(rangeSet, source));
|
32
|
+
return false;
|
33
|
+
}
|
34
|
+
|
35
|
+
pos = source.find("\r");
|
36
|
+
|
37
|
+
if (pos != std::string::npos) {
|
38
|
+
|
39
|
+
mdp::BytesRangeSet rangeSet;
|
40
|
+
rangeSet.push_back(mdp::BytesRange(pos, 1));
|
41
|
+
report.error = Error("the use of carriage return(s) '\\r' in source data isn't currently supported, please contact makers",
|
42
|
+
BusinessError,
|
43
|
+
mdp::BytesRangeSetToCharactersRangeSet(rangeSet, source));
|
44
|
+
return false;
|
45
|
+
}
|
46
|
+
|
47
|
+
return true;
|
48
|
+
}
|
49
|
+
|
50
|
+
int snowcrash::parse(const mdp::ByteBuffer& source,
|
51
|
+
BlueprintParserOptions options,
|
52
|
+
Report& report,
|
53
|
+
Blueprint& blueprint)
|
54
|
+
{
|
55
|
+
try {
|
56
|
+
|
57
|
+
// Sanity Check
|
58
|
+
if (!CheckSource(source, report))
|
59
|
+
return report.error.code;
|
60
|
+
|
61
|
+
// Do nothing if blueprint is empty
|
62
|
+
if (source.empty())
|
63
|
+
return report.error.code;
|
64
|
+
|
65
|
+
// Parse Markdown
|
66
|
+
mdp::MarkdownParser markdownParser;
|
67
|
+
mdp::MarkdownNode markdownAST;
|
68
|
+
markdownParser.parse(source, markdownAST);
|
69
|
+
|
70
|
+
// Build SectionParserData
|
71
|
+
SectionParserData pd(options, source, blueprint);
|
72
|
+
|
73
|
+
// Parse Blueprint
|
74
|
+
BlueprintParser::parse(markdownAST.children().begin(), markdownAST.children(), pd, report, blueprint);
|
75
|
+
}
|
76
|
+
catch (const std::exception& e) {
|
77
|
+
|
78
|
+
std::stringstream ss;
|
79
|
+
ss << "parser exception: '" << e.what() << "'";
|
80
|
+
report.error = Error(ss.str(), 1);
|
81
|
+
}
|
82
|
+
catch (...) {
|
83
|
+
|
84
|
+
report.error = Error("parser exception has occured", 1);
|
85
|
+
}
|
86
|
+
|
87
|
+
return report.error.code;
|
18
88
|
}
|
@@ -9,7 +9,9 @@
|
|
9
9
|
#ifndef SNOWCRASH_H
|
10
10
|
#define SNOWCRASH_H
|
11
11
|
|
12
|
-
#include "
|
12
|
+
#include "Blueprint.h"
|
13
|
+
#include "SourceAnnotation.h"
|
14
|
+
#include "SectionParser.h"
|
13
15
|
|
14
16
|
/**
|
15
17
|
* API Blueprint Parser Interface
|
@@ -30,12 +32,15 @@ namespace snowcrash {
|
|
30
32
|
* \brief Parse the source data into a blueprint abstract source tree (AST).
|
31
33
|
*
|
32
34
|
* \param source A textual source data to be parsed.
|
33
|
-
* \param options Parser options. Use 0 for no
|
34
|
-
* \param
|
35
|
+
* \param options Parser options. Use 0 for no additional options.
|
36
|
+
* \param report Parsing report.
|
35
37
|
* \param blueprint Parsed blueprint AST.
|
36
38
|
* \return Error status code. Zero represents success, non-zero a failure.
|
37
39
|
*/
|
38
|
-
int parse(const
|
40
|
+
int parse(const mdp::ByteBuffer& source,
|
41
|
+
BlueprintParserOptions options,
|
42
|
+
Report& report,
|
43
|
+
Blueprint& blueprint);
|
39
44
|
}
|
40
45
|
|
41
46
|
#endif
|
@@ -46,7 +46,7 @@ void PrintAnnotation(const std::string& prefix, const snowcrash::SourceAnnotatio
|
|
46
46
|
}
|
47
47
|
|
48
48
|
if (!annotation.location.empty()) {
|
49
|
-
for (
|
49
|
+
for (mdp::CharactersRangeSet::const_iterator it = annotation.location.begin();
|
50
50
|
it != annotation.location.end();
|
51
51
|
++it) {
|
52
52
|
std::cerr << ((it == annotation.location.begin()) ? " :" : ";");
|
@@ -57,20 +57,20 @@ void PrintAnnotation(const std::string& prefix, const snowcrash::SourceAnnotatio
|
|
57
57
|
std::cerr << std::endl;
|
58
58
|
}
|
59
59
|
|
60
|
-
/// \brief Print parser
|
61
|
-
/// \param
|
62
|
-
void
|
60
|
+
/// \brief Print parser report to stderr.
|
61
|
+
/// \param report A parser report to print
|
62
|
+
void PrintReport(const snowcrash::Report& report)
|
63
63
|
{
|
64
64
|
std::cerr << std::endl;
|
65
|
-
|
66
|
-
if (
|
65
|
+
|
66
|
+
if (report.error.code == Error::OK) {
|
67
67
|
std::cerr << "OK.\n";
|
68
68
|
}
|
69
69
|
else {
|
70
|
-
PrintAnnotation("error:",
|
70
|
+
PrintAnnotation("error:", report.error);
|
71
71
|
}
|
72
|
-
|
73
|
-
for (snowcrash::Warnings::const_iterator it =
|
72
|
+
|
73
|
+
for (snowcrash::Warnings::const_iterator it = report.warnings.begin(); it != report.warnings.end(); ++it) {
|
74
74
|
PrintAnnotation("warning:", *it);
|
75
75
|
}
|
76
76
|
}
|
@@ -129,10 +129,10 @@ int main(int argc, const char *argv[])
|
|
129
129
|
|
130
130
|
// Parse
|
131
131
|
snowcrash::BlueprintParserOptions options = 0; // Or snowcrash::RequireBlueprintNameOption
|
132
|
-
snowcrash::
|
132
|
+
snowcrash::Report report;
|
133
133
|
snowcrash::Blueprint blueprint;
|
134
|
-
snowcrash::parse(inputStream.str(), options,
|
135
|
-
|
134
|
+
snowcrash::parse(inputStream.str(), options, report, blueprint);
|
135
|
+
|
136
136
|
// Output
|
137
137
|
if (!argumentParser.exist(ValidateArgument)) {
|
138
138
|
|
@@ -163,8 +163,8 @@ int main(int argc, const char *argv[])
|
|
163
163
|
std::cout << outputStream.rdbuf();
|
164
164
|
}
|
165
165
|
}
|
166
|
-
|
167
|
-
//
|
168
|
-
|
169
|
-
return
|
166
|
+
|
167
|
+
// report
|
168
|
+
PrintReport(report);
|
169
|
+
return report.error.code;
|
170
170
|
}
|
@@ -2,10 +2,11 @@ require 'formula'
|
|
2
2
|
|
3
3
|
class Snowcrash < Formula
|
4
4
|
homepage 'http://apiblueprint.org'
|
5
|
-
head 'https://github.com/apiaryio/snowcrash.git', :tag => 'v0.
|
5
|
+
head 'https://github.com/apiaryio/snowcrash.git', :tag => 'v0.14.0'
|
6
6
|
|
7
7
|
def install
|
8
8
|
system "./configure"
|
9
|
-
system "make", "
|
9
|
+
system "make", "snowcrash"
|
10
|
+
bin.install Dir["bin/snowcrash"]
|
10
11
|
end
|
11
12
|
end
|
data/ext/snowcrash/vcbuild.bat
CHANGED
@@ -36,6 +36,7 @@ if /i "%1"=="noprojgen" set noprojgen=1&goto arg-ok
|
|
36
36
|
if /i "%1"=="nobuild" set nobuild=1&goto arg-ok
|
37
37
|
if /i "%1"=="test" set test=test&goto arg-ok
|
38
38
|
if /i "%1"=="inttest" set inttest=1&goto arg-ok
|
39
|
+
if /i "%1"=="MSVC2013" set GYP_MSVS_VERSION=2013&goto arg-ok
|
39
40
|
if /i "%1"=="MSVC2012" set GYP_MSVS_VERSION=2012&goto arg-ok
|
40
41
|
if /i "%1"=="MSVC2010" set GYP_MSVS_VERSION=2010&goto arg-ok
|
41
42
|
if /i "%1"=="MSVC2008" set GYP_MSVS_VERSION=2008&goto arg-ok
|
@@ -56,7 +57,7 @@ if "%GYP_MSVS_VERSION%"=="" set GYP_MSVS_VERSION=2012
|
|
56
57
|
|
57
58
|
@rem Generate the VS project.
|
58
59
|
SETLOCAL
|
59
|
-
if defined
|
60
|
+
if defined VS120COMNTOOLS call "%VS120COMNTOOLS%\VCVarsQueryRegistry.bat"
|
60
61
|
if defined inttest python configure %debug_arg% --dest-cpu=%target_arch% --include-integration-tests
|
61
62
|
if not defined inttest python configure %debug_arg% --dest-cpu=%target_arch%
|
62
63
|
if errorlevel 1 goto create-msvs-files-failed
|
@@ -70,10 +71,18 @@ ENDLOCAL
|
|
70
71
|
:msbuild
|
71
72
|
@rem Skip project generation if requested.
|
72
73
|
if defined nobuild goto exit
|
74
|
+
if "%GYP_MSVS_VERSION%"=="2012" goto vc-set-2012
|
73
75
|
if "%GYP_MSVS_VERSION%"=="2010" goto vc-set-2010
|
74
76
|
if "%GYP_MSVS_VERSION%"=="2008" goto vc-set-2008
|
75
77
|
|
76
|
-
@rem Look for Visual Studio
|
78
|
+
@rem Look for Visual Studio 2013
|
79
|
+
if not defined VS120COMNTOOLS goto vc-set-2012
|
80
|
+
if not exist "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2012
|
81
|
+
call "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat"
|
82
|
+
if not defined VCINSTALLDIR goto msbuild-not-found
|
83
|
+
goto msbuild-found
|
84
|
+
|
85
|
+
:vc-set-2012
|
77
86
|
if not defined VS110COMNTOOLS goto vc-set-2010
|
78
87
|
if not exist "%VS110COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2010
|
79
88
|
call "%VS110COMNTOOLS%\..\..\vc\vcvarsall.bat"
|
@@ -170,14 +179,14 @@ echo Failed to create vc project files.
|
|
170
179
|
goto exit
|
171
180
|
|
172
181
|
:help
|
173
|
-
echo vcbuild.bat [debug/release] [test] [clean] [noprojgen] [nobuild] [x86/x64] [inttest] [
|
182
|
+
echo vcbuild.bat [debug/release] [test] [clean] [noprojgen] [nobuild] [x86/x64] [inttest] [MSVC2012/MSVC2013]
|
174
183
|
echo Examples:
|
175
184
|
echo vcbuild.bat : builds release build
|
176
185
|
echo vcbuild.bat nobuild : generate MSVS project files only
|
177
186
|
echo vcbuild.bat debug : builds debug build
|
178
187
|
echo vcbuild.bat test : builds debug build and runs tests
|
179
188
|
echo vcbuild.bat inttest : include integration tests
|
180
|
-
echo vcbuild.bat
|
189
|
+
echo vcbuild.bat MSVC2013 : indicate target solution's version, could also define as MSVC2012, MSVC2013
|
181
190
|
goto exit
|
182
191
|
|
183
192
|
:exit
|
data/lib/redsnow.rb
CHANGED
@@ -14,18 +14,18 @@ module RedSnow
|
|
14
14
|
# @return [ParseResult]
|
15
15
|
def self.parse(rawBlueprint, options = 0)
|
16
16
|
blueprint = FFI::MemoryPointer.new :pointer
|
17
|
-
|
18
|
-
ret = RedSnow::Binding.sc_c_parse(rawBlueprint, options,
|
17
|
+
report = FFI::MemoryPointer.new :pointer
|
18
|
+
ret = RedSnow::Binding.sc_c_parse(rawBlueprint, options, report, blueprint)
|
19
19
|
|
20
20
|
blueprint = blueprint.get_pointer(0)
|
21
|
-
|
21
|
+
report = report.get_pointer(0)
|
22
22
|
|
23
|
-
parseResult = ParseResult.new(blueprint,
|
23
|
+
parseResult = ParseResult.new(blueprint, report)
|
24
24
|
|
25
25
|
return parseResult
|
26
26
|
ensure
|
27
27
|
RedSnow::Binding.sc_blueprint_free(blueprint)
|
28
|
-
RedSnow::Binding.
|
28
|
+
RedSnow::Binding.sc_report_free(report)
|
29
29
|
end
|
30
30
|
|
31
31
|
end
|
data/lib/redsnow/binding.rb
CHANGED
@@ -107,7 +107,7 @@ module RedSnow
|
|
107
107
|
attach_function("sc_transaction_example_name", "sc_transaction_example_name", [ :pointer ], :string)
|
108
108
|
attach_function("sc_transaction_example_description", "sc_transaction_example_description", [ :pointer ], :string)
|
109
109
|
|
110
|
-
attach_function("
|
110
|
+
attach_function("sc_report_free", "sc_report_free", [ :pointer ], :void)
|
111
111
|
|
112
112
|
attach_function("sc_location_handler", "sc_location_handler", [ :pointer ], :pointer)
|
113
113
|
attach_function("sc_location_size", "sc_location_size", [ :pointer ], :int)
|
data/lib/redsnow/blueprint.rb
CHANGED
@@ -78,9 +78,11 @@ module RedSnow
|
|
78
78
|
# @param sc_metadata_collection_handle [FFI::Pointer]
|
79
79
|
def initialize(sc_metadata_collection_handle)
|
80
80
|
sc_metadata_collection_size = RedSnow::Binding.sc_metadata_collection_size(sc_metadata_collection_handle)
|
81
|
+
|
81
82
|
if sc_metadata_collection_size > 0
|
82
83
|
metadata_size = sc_metadata_collection_size - 1
|
83
84
|
@collection = Array.new
|
85
|
+
|
84
86
|
for index in 0..metadata_size do
|
85
87
|
sc_metadata_handle = RedSnow::Binding.sc_metadata_handle(sc_metadata_collection_handle, index)
|
86
88
|
@collection << Hash[:name => RedSnow::Binding.sc_metadata_key(sc_metadata_handle), :value => RedSnow::Binding.sc_metadata_value(sc_metadata_handle)]
|
@@ -96,18 +98,20 @@ module RedSnow
|
|
96
98
|
# HTTP 'Content-Type' header
|
97
99
|
CONTENT_TYPE_HEADER_KEY = :'Content-Type'
|
98
100
|
|
99
|
-
|
100
101
|
# @return [String] the value of 'Content-type' header if present or nil
|
101
102
|
def content_type
|
102
103
|
content_type_header = @collection.detect { |header| header.has_key?(CONTENT_TYPE_HEADER_KEY) }
|
103
104
|
return (content_type_header.nil?) ? nil : content_type_header[CONTENT_TYPE_HEADER_KEY]
|
104
105
|
end
|
106
|
+
|
105
107
|
# @param sc_header_collection_handle_payload [FFI::Pointer]
|
106
108
|
def initialize(sc_header_collection_handle_payload)
|
107
109
|
sc_header_collection_size = RedSnow::Binding.sc_header_collection_size(sc_header_collection_handle_payload)
|
110
|
+
|
108
111
|
if sc_header_collection_size > 0
|
109
112
|
headers_size = sc_header_collection_size - 1
|
110
113
|
@collection = Array.new
|
114
|
+
|
111
115
|
for index in 0..headers_size do
|
112
116
|
sc_header_handle = RedSnow::Binding.sc_header_handle(sc_header_collection_handle_payload, index)
|
113
117
|
@collection << Hash[:name => RedSnow::Binding.sc_header_key(sc_header_handle), :value => RedSnow::Binding.sc_header_value(sc_header_handle)]
|
@@ -142,10 +146,13 @@ module RedSnow
|
|
142
146
|
@default_value = RedSnow::Binding.sc_parameter_default_value(sc_parameter_handle)
|
143
147
|
@example_value = RedSnow::Binding.sc_parameter_example_value(sc_parameter_handle)
|
144
148
|
@values = Array.new
|
149
|
+
|
145
150
|
sc_value_collection_handle = RedSnow::Binding.sc_value_collection_handle(sc_parameter_handle)
|
146
151
|
sc_value_collection_size = RedSnow::Binding.sc_value_collection_size(sc_value_collection_handle)
|
152
|
+
|
147
153
|
if sc_value_collection_size > 0
|
148
154
|
values_size = sc_value_collection_size - 1
|
155
|
+
|
149
156
|
for valueIndex in 0..values_size do
|
150
157
|
sc_value_handle = RedSnow::Binding.sc_value_handle(sc_value_collection_handle, valueIndex)
|
151
158
|
value = RedSnow::Binding.sc_value_string(sc_value_handle)
|
@@ -163,12 +170,15 @@ module RedSnow
|
|
163
170
|
class Parameters < BlueprintNode
|
164
171
|
|
165
172
|
attr_accessor :collection
|
173
|
+
|
166
174
|
# @param sc_parameter_collection_handle [FFI::Pointer]
|
167
175
|
def initialize(sc_parameter_collection_handle)
|
168
176
|
sc_parameter_collection_size = RedSnow::Binding.sc_parameter_collection_size(sc_parameter_collection_handle)
|
169
177
|
@collection = Array.new
|
178
|
+
|
170
179
|
if sc_parameter_collection_size > 0
|
171
180
|
parameters_size = sc_parameter_collection_size - 1
|
181
|
+
|
172
182
|
for index in 0..parameters_size do
|
173
183
|
sc_parameter_handle = RedSnow::Binding.sc_parameter_handle(sc_parameter_collection_handle, index)
|
174
184
|
parameter = Parameter.new(sc_parameter_handle)
|
@@ -193,6 +203,7 @@ module RedSnow
|
|
193
203
|
attr_accessor :headers
|
194
204
|
attr_accessor :body
|
195
205
|
attr_accessor :schema
|
206
|
+
|
196
207
|
# @param sc_payload_handle_resource [FFI::Pointer]
|
197
208
|
def initialize(sc_payload_handle_resource)
|
198
209
|
@name = RedSnow::Binding.sc_payload_name(sc_payload_handle_resource)
|
@@ -214,6 +225,7 @@ module RedSnow
|
|
214
225
|
|
215
226
|
attr_accessor :requests
|
216
227
|
attr_accessor :responses
|
228
|
+
|
217
229
|
# @param sc_transaction_example_handle [FFI::Pointer]
|
218
230
|
def initialize(sc_transaction_example_handle)
|
219
231
|
@name = RedSnow::Binding.sc_transaction_example_name(sc_transaction_example_handle)
|
@@ -222,25 +234,29 @@ module RedSnow
|
|
222
234
|
@requests = Array.new
|
223
235
|
sc_payload_collection_handle_requests = RedSnow::Binding.sc_payload_collection_handle_requests(sc_transaction_example_handle)
|
224
236
|
sc_payload_collection_size_requests = RedSnow::Binding.sc_payload_collection_size(sc_payload_collection_handle_requests)
|
237
|
+
|
225
238
|
if sc_payload_collection_size_requests > 0
|
226
239
|
requests_size = sc_payload_collection_size_requests - 1
|
240
|
+
|
227
241
|
for index in 0..requests_size do
|
228
242
|
request = Payload.new(RedSnow::Binding.sc_payload_handle(sc_payload_collection_handle_requests, index))
|
229
243
|
@requests << request
|
230
244
|
end
|
231
245
|
end
|
246
|
+
|
232
247
|
# BP Resource Actions Examples Responses
|
233
248
|
@responses = Array.new
|
234
249
|
sc_payload_collection_handle_responses = RedSnow::Binding.sc_payload_collection_handle_responses(sc_transaction_example_handle)
|
235
250
|
sc_payload_collection_size_responses = RedSnow::Binding.sc_payload_collection_size(sc_payload_collection_handle_responses)
|
251
|
+
|
236
252
|
if sc_payload_collection_size_responses > 0
|
237
253
|
responses_size = sc_payload_collection_size_responses - 1
|
254
|
+
|
238
255
|
for index in 0..responses_size do
|
239
256
|
response = Payload.new(RedSnow::Binding.sc_payload_handle(sc_payload_collection_handle_responses, index))
|
240
257
|
@responses << response
|
241
258
|
end
|
242
259
|
end
|
243
|
-
|
244
260
|
end
|
245
261
|
|
246
262
|
end
|
@@ -256,6 +272,7 @@ module RedSnow
|
|
256
272
|
attr_accessor :method
|
257
273
|
attr_accessor :parameters
|
258
274
|
attr_accessor :examples
|
275
|
+
|
259
276
|
# @param sc_action_handle [FFI::Pointer]
|
260
277
|
def initialize(sc_action_handle)
|
261
278
|
@name = RedSnow::Binding.sc_action_name(sc_action_handle)
|
@@ -268,8 +285,10 @@ module RedSnow
|
|
268
285
|
@examples = Array.new
|
269
286
|
sc_transaction_example_collection_handle = RedSnow::Binding.sc_transaction_example_collection_handle(sc_action_handle)
|
270
287
|
sc_transaction_example_collection_size = RedSnow::Binding.sc_transaction_example_collection_size(sc_transaction_example_collection_handle)
|
288
|
+
|
271
289
|
if sc_transaction_example_collection_size > 0
|
272
290
|
examples_size = sc_transaction_example_collection_size - 1
|
291
|
+
|
273
292
|
for index in 0..examples_size do
|
274
293
|
example = TransactionExample.new(RedSnow::Binding.sc_transaction_example_handle(sc_transaction_example_collection_handle, index))
|
275
294
|
@examples << example
|
@@ -292,6 +311,7 @@ module RedSnow
|
|
292
311
|
attr_accessor :model
|
293
312
|
attr_accessor :parameters
|
294
313
|
attr_accessor :actions
|
314
|
+
|
295
315
|
# @param sc_resource_handle [FFI::Pointer]
|
296
316
|
def initialize(sc_resource_handle)
|
297
317
|
@name = RedSnow::Binding.sc_resource_name(sc_resource_handle)
|
@@ -304,12 +324,15 @@ module RedSnow
|
|
304
324
|
@actions = Array.new
|
305
325
|
sc_action_collection_handle = RedSnow::Binding.sc_action_collection_handle(sc_resource_handle)
|
306
326
|
sc_action_collection_size = RedSnow::Binding.sc_action_collection_size(sc_action_collection_handle)
|
327
|
+
|
307
328
|
if sc_action_collection_size > 0
|
308
329
|
action_size = sc_action_collection_size - 1
|
330
|
+
|
309
331
|
for index in 0..action_size do
|
310
332
|
@actions << Action.new(RedSnow::Binding.sc_action_handle(sc_action_collection_handle, index))
|
311
333
|
end
|
312
334
|
end
|
335
|
+
|
313
336
|
@parameters = Parameters.new(RedSnow::Binding.sc_parameter_collection_handle_resource(sc_resource_handle))
|
314
337
|
end
|
315
338
|
|
@@ -322,6 +345,7 @@ module RedSnow
|
|
322
345
|
class ResourceGroup < NamedBlueprintNode
|
323
346
|
|
324
347
|
attr_accessor :resources
|
348
|
+
|
325
349
|
# @param sc_resource_groups_handle [FFI::Pointer]
|
326
350
|
def initialize(sc_resource_groups_handle)
|
327
351
|
@name = RedSnow::Binding.sc_resource_groups_name(sc_resource_groups_handle)
|
@@ -330,8 +354,10 @@ module RedSnow
|
|
330
354
|
@resources = Array.new
|
331
355
|
sc_resource_collection_handle = RedSnow::Binding.sc_resource_collection_handle(sc_resource_groups_handle)
|
332
356
|
sc_resource_collection_size = RedSnow::Binding.sc_resource_collection_size(sc_resource_collection_handle)
|
357
|
+
|
333
358
|
if sc_resource_collection_size > 0
|
334
359
|
resource_size = sc_resource_collection_size - 1
|
360
|
+
|
335
361
|
for index in 0..resource_size do
|
336
362
|
sc_resource_handle = RedSnow::Binding.sc_resource_handle(sc_resource_collection_handle, index)
|
337
363
|
@resources << Resource.new(sc_resource_handle)
|
@@ -351,10 +377,13 @@ module RedSnow
|
|
351
377
|
|
352
378
|
attr_accessor :metadata
|
353
379
|
attr_accessor :resource_groups
|
380
|
+
|
354
381
|
# Version key
|
355
382
|
VERSION_KEY = :_version
|
383
|
+
|
356
384
|
# Supported version of Api Blueprint
|
357
385
|
SUPPORTED_VERSIONS = ["2.0"]
|
386
|
+
|
358
387
|
# @param handle [FFI:Pointer]
|
359
388
|
def initialize(handle)
|
360
389
|
# BP name, desc
|
@@ -369,8 +398,10 @@ module RedSnow
|
|
369
398
|
sc_resource_groups_collection_handle = RedSnow::Binding.sc_resource_groups_collection_handle(handle)
|
370
399
|
sc_resource_groups_collection_size = RedSnow::Binding.sc_resource_groups_collection_size(sc_resource_groups_collection_handle)
|
371
400
|
@resource_groups = Array.new
|
401
|
+
|
372
402
|
if sc_resource_groups_collection_size > 0
|
373
403
|
group_size = sc_resource_groups_collection_size - 1
|
404
|
+
|
374
405
|
for index in 0..group_size do
|
375
406
|
sc_resource_groups_handle = RedSnow::Binding.sc_resource_groups_handle(sc_resource_groups_collection_handle, index)
|
376
407
|
@resource_groups << ResourceGroup.new(sc_resource_groups_handle)
|