Class: Rage::OpenAPI::Parsers::Ext::Alba
- Inherits:
-
Object
- Object
- Rage::OpenAPI::Parsers::Ext::Alba
show all
- Defined in:
- lib/rage/openapi/parsers/ext/alba.rb
Defined Under Namespace
Classes: Visitor, VisitorContext
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(namespace: Object, root: Rage::OpenAPI::Nodes::Root.new) ⇒ Alba
Returns a new instance of Alba.
6
7
8
9
10
|
# File 'lib/rage/openapi/parsers/ext/alba.rb', line 6
def initialize(namespace: Object, root: Rage::OpenAPI::Nodes::Root.new, **)
@namespace = namespace
@root = root
@parsing_stack = Set.new
end
|
Instance Attribute Details
#namespace ⇒ Object
Returns the value of attribute namespace.
4
5
6
|
# File 'lib/rage/openapi/parsers/ext/alba.rb', line 4
def namespace
@namespace
end
|
Instance Method Details
#__parse(klass_str) ⇒ Object
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/rage/openapi/parsers/ext/alba.rb', line 46
def __parse(klass_str)
is_collection, klass_str = Rage::OpenAPI.__try_parse_collection(klass_str)
if @parsing_stack.include?(klass_str)
return Visitor.new(self, is_collection)
end
@parsing_stack.add(klass_str)
klass = @namespace.const_get(klass_str)
source_path, _ = Object.const_source_location(klass.name)
ast = Prism.parse_file(source_path)
visitor = Visitor.new(self, is_collection)
ast.value.accept(visitor)
@parsing_stack.delete(klass_str)
visitor
end
|
#__parse_nested(klass_str) ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/rage/openapi/parsers/ext/alba.rb', line 32
def __parse_nested(klass_str)
is_collection, raw_klass_str = Rage::OpenAPI.__try_parse_collection(klass_str)
if @parsing_stack.include?(raw_klass_str)
@root.schema_registry[raw_klass_str] ||= nil
ref = { "$ref" => "#/components/schemas/#{raw_klass_str}" }
return is_collection ? { "type" => "array", "items" => ref } : ref
end
__parse(klass_str).tap { |visitor|
visitor.root_key = visitor.root_key_for_collection = visitor.root_key_proc = visitor.key_transformer = nil
}.build_schema
end
|
#known_definition?(str) ⇒ Boolean
12
13
14
15
16
17
|
# File 'lib/rage/openapi/parsers/ext/alba.rb', line 12
def known_definition?(str)
_, str = Rage::OpenAPI.__try_parse_collection(str)
defined?(Alba::Resource) && @namespace.const_get(str).ancestors.include?(Alba::Resource)
rescue NameError
false
end
|
#parse(klass_str) ⇒ Object
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/rage/openapi/parsers/ext/alba.rb', line 19
def parse(klass_str)
_, raw_klass_str = Rage::OpenAPI.__try_parse_collection(klass_str)
visitor = __parse(klass_str)
if @root.schema_registry.key?(raw_klass_str)
clean = { "type" => "object" }
clean["properties"] = visitor.schema if visitor.schema.any?
@root.schema_registry[raw_klass_str] = clean
end
visitor.build_schema
end
|