Module: Pray::PackageSpecParser::ParserHelpers
Instance Method Summary
collapse
apply_target_statement, infer_source_kind, keyword_array, keyword_bool, keyword_string, package_constraint, package_exports, parse_call, parse_group_header, parse_keyword_segment, parse_local_decl, parse_package_decl, parse_render_policy, parse_source, parse_target_header, source_kind_and_url, string_from_literal, string_from_value
Instance Method Details
#array_of_strings(value) ⇒ Object
134
135
136
137
138
139
140
|
# File 'lib/pray/package_spec.rb', line 134
def array_of_strings(value)
array = Literal.parse_literal(value)
values = array.as_array
raise Error.parse("prayspec", "expected array") unless values
values.map { |entry| string_from_value(entry) }
end
|
#map_string(map, key) ⇒ Object
123
124
125
|
# File 'lib/pray/package_spec.rb', line 123
def map_string(map, key)
map[key]&.as_string
end
|
#map_string_array(map, key) ⇒ Object
127
128
129
130
131
132
|
# File 'lib/pray/package_spec.rb', line 127
def map_string_array(map, key)
values = map[key]&.as_array
return [] unless values
values.filter_map(&:as_string)
end
|
#parse_dependency(rest, optional) ⇒ Object
63
64
65
66
67
68
69
70
71
72
|
# File 'lib/pray/package_spec.rb', line 63
def parse_dependency(rest, optional)
values, keywords = parse_call(rest)
name = string_from_value(values.first)
constraint = values[1] ? string_from_value(values[1]) : "*"
PackageDependency.new(
name: name,
constraint: constraint,
optional: keywords["optional"]&.as_bool || optional
)
end
|
#parse_exports(value) ⇒ Object
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
# File 'lib/pray/package_spec.rb', line 74
def parse_exports(value)
map = Literal.parse_literal_map(value)
exports = {}
map.each do |name, literal|
entry = literal.as_map
raise Error.parse("prayspec", "export #{name} must be a map") unless entry
exports[name] = PackageExport.new(
kind: map_string(entry, "type") || "fragment",
path: map_string(entry, "path") || raise(Error.parse("prayspec", "export #{name} missing path")),
summary: map_string(entry, "summary"),
only: map_string_array(entry, "only"),
except: map_string_array(entry, "except"),
default_path: map_string(entry, "default_path")
)
end
exports
end
|
#parse_skills(value) ⇒ Object
93
94
95
96
97
98
99
100
101
102
103
104
|
# File 'lib/pray/package_spec.rb', line 93
def parse_skills(value)
map = Literal.parse_literal_map(value)
map.transform_values do |literal|
entry = literal.as_map
raise Error.parse("prayspec", "skill must be a map") unless entry
PackageSkill.new(
path: map_string(entry, "path") || raise(Error.parse("prayspec", "skill missing path")),
summary: map_string(entry, "summary")
)
end
end
|
#parse_string_map(value) ⇒ Object
119
120
121
|
# File 'lib/pray/package_spec.rb', line 119
def parse_string_map(value)
Literal.parse_literal_map(value).transform_values { |literal| string_from_value(literal) }
end
|
#parse_templates(value) ⇒ Object
106
107
108
109
110
111
112
113
114
115
116
117
|
# File 'lib/pray/package_spec.rb', line 106
def parse_templates(value)
map = Literal.parse_literal_map(value)
map.transform_values do |literal|
entry = literal.as_map
raise Error.parse("prayspec", "template must be a map") unless entry
PackageTemplate.new(
path: map_string(entry, "path") || raise(Error.parse("prayspec", "template missing path")),
summary: map_string(entry, "summary")
)
end
end
|
#string_from_literal(value) ⇒ Object
149
150
151
|
# File 'lib/pray/package_spec.rb', line 149
def string_from_literal(value)
string_from_value(Literal.parse_literal(value))
end
|
#string_from_value(value) ⇒ Object
142
143
144
145
146
147
|
# File 'lib/pray/package_spec.rb', line 142
def string_from_value(value)
text = value.as_string
raise Error.parse("prayspec", "expected string-like literal, found #{value.inspect}") unless text
text
end
|