Class: SwaggerYard::TypeParser
- Inherits:
-
Object
- Object
- SwaggerYard::TypeParser
show all
- Defined in:
- lib/swagger_yard/type_parser.rb
Defined Under Namespace
Classes: Parser, Transform
Instance Method Summary
collapse
Constructor Details
#initialize(model_path = Type::MODEL_PATH) ⇒ TypeParser
Returns a new instance of TypeParser.
150
151
152
153
154
|
# File 'lib/swagger_yard/type_parser.rb', line 150
def initialize(model_path = Type::MODEL_PATH)
@parser = Parser.new
@xform = Transform.new
@model_path = model_path
end
|
Instance Method Details
#json_schema(str) ⇒ Object
160
161
162
163
164
165
166
|
# File 'lib/swagger_yard/type_parser.rb', line 160
def json_schema(str)
@xform.apply(parse(str),
model_path: @model_path,
resolve_uri: ->(name, prefix) { resolve_uri(name, prefix) })
rescue Parslet::ParseFailed => e
raise InvalidTypeError, "'#{str}': #{e.message}"
end
|
#parse(str) ⇒ Object
156
157
158
|
# File 'lib/swagger_yard/type_parser.rb', line 156
def parse(str)
@parser.parse(str)
end
|
#resolve_uri(name, prefix) ⇒ Object
168
169
170
171
172
173
174
175
176
|
# File 'lib/swagger_yard/type_parser.rb', line 168
def resolve_uri(name, prefix)
unless url = SwaggerYard.config.external_schema[prefix]
raise UndefinedSchemaError, "unknown prefix #{prefix} for #{name}"
end
uri, fragment = url.split '#'
fragment = fragment ? "##{fragment}" : @model_path
fragment += '/' unless fragment.end_with?('/')
[uri, fragment]
end
|