Module: Textus::Meta
- Defined in:
- lib/textus/meta.rb
Constant Summary collapse
- NO_META_FORMATS =
%w[text].freeze
- FIELDS =
{ "uid" => { inject: lambda { |, content, | m = .is_a?(Hash) ? .dup : {} existing = .is_a?(Hash) ? ["uid"] : nil m["uid"] = existing || Textus::Value::Uid.mint unless m["uid"].is_a?(String) && !m["uid"].empty? [m, content] }, }, "sources" => { inject: lambda { |, content, | m = .is_a?(Hash) ? .dup : {} existing = .is_a?(Hash) ? ["sources"] : nil if m.key?("sources") raise Textus::BadContent.new(nil, "_meta.sources must be an array") unless m["sources"].is_a?(Array) m["sources"] = m["sources"].map { |s| validate_source_shape!(s) } elsif existing.is_a?(Array) && !existing.empty? m["sources"] = existing end [m, content] }, }, }.freeze
Class Method Summary collapse
- .inject_all(meta, content, existing_meta = {}, format: nil) ⇒ Object
- .validate_source_shape!(src) ⇒ Object
Class Method Details
.inject_all(meta, content, existing_meta = {}, format: nil) ⇒ Object
36 37 38 39 40 41 42 43 44 |
# File 'lib/textus/meta.rb', line 36 def self.inject_all(, content, = {}, format: nil) return [, content] if NO_META_FORMATS.include?(format) FIELDS.each_value do |field| , content = field[:inject].call(, content, ) end [, content] end |
.validate_source_shape!(src) ⇒ Object
46 47 48 49 50 51 52 |
# File 'lib/textus/meta.rb', line 46 def self.validate_source_shape!(src) raise Textus::BadContent.new(nil, "each source must be a string") unless src.is_a?(String) raise Textus::BadContent.new(nil, "each source must start with 'raw.', got #{src.inspect}") unless src.match?(/\Araw\./) src end |