Module: Textus::Manifest::Entry::Validators::IndexFilename
- Defined in:
- lib/textus/manifest/entry/validators/index_filename.rb
Class Method Summary collapse
- .call(entry) ⇒ Object
- .check_extension!(entry, index_filename) ⇒ Object
- .check_shape!(entry, index_filename) ⇒ Object
Class Method Details
.call(entry) ⇒ Object
6 7 8 9 10 11 12 13 |
# File 'lib/textus/manifest/entry/validators/index_filename.rb', line 6 def self.call(entry) # Use raw to detect misuse on non-nested entries (typed attr stubs nil on Base). index_filename = entry.nested? ? entry.index_filename : entry.raw["index_filename"] return if index_filename.nil? check_shape!(entry, index_filename) check_extension!(entry, index_filename) end |
.check_extension!(entry, index_filename) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/textus/manifest/entry/validators/index_filename.rb', line 27 def self.check_extension!(entry, index_filename) ext = File.extname(index_filename) inferred = Textus::Entry.infer_from_extension(ext) if inferred.nil? raise UsageError.new( "entry '#{entry.key}': index_filename #{index_filename.inspect} has unknown extension #{ext.inspect}", ) end return if inferred == entry.format raise UsageError.new( "entry '#{entry.key}': index_filename extension #{ext.inspect} implies format #{inferred.inspect}, " \ "but entry format is #{entry.format.inspect}", ) end |
.check_shape!(entry, index_filename) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/textus/manifest/entry/validators/index_filename.rb', line 15 def self.check_shape!(entry, index_filename) raise UsageError.new("entry '#{entry.key}': index_filename requires nested: true") unless entry.nested? unless index_filename.is_a?(String) && !index_filename.empty? raise UsageError.new("entry '#{entry.key}': index_filename must be a non-empty string") end return unless index_filename.include?("/") || File.basename(index_filename) != index_filename raise UsageError.new("entry '#{entry.key}': index_filename must be a bare basename (no slashes)") end |