6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/textus/protocol/manifest/entry/parser.rb', line 6
def self.call(raw, root: nil)
key = raw["key"] or raise UsageError.new("manifest entry missing key")
lane = raw["lane"] or raise UsageError.new("manifest entry '#{key}' missing lane")
naming = raw["naming"]
if naming && !Textus::Protocol::V4::NAMING_PATTERNS.key?(naming)
known_aliases = Textus::Protocol::V4::NAMING_PATTERNS.keys.join(", ")
raise BadManifest.new(
"entry '#{key}': unknown naming alias '#{naming}' (known: #{known_aliases})",
)
end
kind = infer_kind(key, raw, root:)
format = resolve_format(key, kind, root, raw["format"])
path = derive_path(key, kind, format)
common = {
raw: raw,
key: key, path: path, lane: lane,
format: format, naming: naming,
schema: raw["schema"]
}
klass = Entry::REGISTRY[kind]
raise BadManifest.new("entry '#{key}': unknown inferred kind: #{kind.inspect}") unless klass
klass.from_raw(common, raw)
end
|