Class: Textus::Format::Base
- Inherits:
-
Object
- Object
- Textus::Format::Base
show all
- Defined in:
- lib/textus/format/base.rb
Class Method Summary
collapse
-
.enforce_name_match!(path, meta) ⇒ Object
-
.extensions ⇒ Object
-
.format_name ⇒ Object
-
.nested_glob ⇒ Object
-
.parse(_raw, path: nil) ⇒ Object
-
.rewrite_name(path, basename) ⇒ Object
rubocop:disable Naming/PredicateMethod.
-
.serialize(meta: {}, body: "", content: nil) ⇒ Object
-
.serialize_for_put(meta:, body:, content:, path:) ⇒ Object
-
.validate_against(schema, parsed) ⇒ Object
-
.validate_path_extension(path, nested) ⇒ Object
-
.validate_raw_entry!(_parsed, _lane) ⇒ Object
Class Method Details
.enforce_name_match!(path, meta) ⇒ Object
41
42
43
44
45
46
47
48
49
|
# File 'lib/textus/format/base.rb', line 41
def self.enforce_name_match!(path, meta)
return unless meta.is_a?(Hash) && meta["name"]
ext = extensions.first
basename = File.basename(path, ext)
return if meta["name"] == basename
raise BadFrontmatter.new(path, "name '#{meta["name"]}' does not match basename '#{basename}'")
end
|
.extensions ⇒ Object
16
17
18
|
# File 'lib/textus/format/base.rb', line 16
def self.extensions
raise NotImplementedError.new("#{name}.extensions not implemented")
end
|
62
63
64
|
# File 'lib/textus/format/base.rb', line 62
def self.format_name
name.split("::").last.downcase
end
|
.nested_glob ⇒ Object
24
25
26
|
# File 'lib/textus/format/base.rb', line 24
def self.nested_glob
raise NotImplementedError.new("#{name}.nested_glob not implemented")
end
|
.parse(_raw, path: nil) ⇒ Object
4
5
6
7
|
# File 'lib/textus/format/base.rb', line 4
def self.parse(_raw, path: nil)
_ = path
raise NotImplementedError.new("#{name}.parse not implemented")
end
|
.rewrite_name(path, basename) ⇒ Object
rubocop:disable Naming/PredicateMethod
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/textus/format/base.rb', line 51
def self.rewrite_name(path, basename) raw = File.binread(path)
parsed = parse(raw, path: path)
meta = parsed["_meta"] || {}
return false unless meta.is_a?(Hash) && meta["name"].is_a?(String) && meta["name"] != basename
new_meta = meta.merge("name" => basename)
File.binwrite(path, serialize(meta: new_meta, body: parsed["body"] || "", content: parsed["content"]))
true
end
|
.serialize(meta: {}, body: "", content: nil) ⇒ Object
9
10
11
12
13
14
|
# File 'lib/textus/format/base.rb', line 9
def self.serialize(meta: {}, body: "", content: nil)
_ = meta
_ = body
_ = content
raise NotImplementedError.new("#{name}.serialize not implemented")
end
|
.serialize_for_put(meta:, body:, content:, path:) ⇒ Object
68
69
70
71
72
73
74
|
# File 'lib/textus/format/base.rb', line 68
def self.serialize_for_put(meta:, body:, content:, path:)
_ = meta
_ = body
_ = content
_ = path
raise NotImplementedError.new("#{name}.serialize_for_put not implemented")
end
|
.validate_against(schema, parsed) ⇒ Object
20
21
22
|
# File 'lib/textus/format/base.rb', line 20
def self.validate_against(schema, parsed)
schema.validate!(parsed["_meta"] || {})
end
|
.validate_path_extension(path, nested) ⇒ Object
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/textus/format/base.rb', line 28
def self.validate_path_extension(path, nested)
ext = File.extname(path)
if nested
return if ext == ""
raise UsageError.new("#{format_name} nested path must not have an extension")
end
return if extensions.include?(ext)
raise UsageError.new("#{format_name} format requires '#{extensions.join("' or '")}' path (got #{ext.inspect})")
end
|
.validate_raw_entry!(_parsed, _lane) ⇒ Object
66
|
# File 'lib/textus/format/base.rb', line 66
def self.validate_raw_entry!(_parsed, _lane); end
|