Module: Textus::Manifest::Entry::Validators::IndexFilename
- Defined in:
- lib/textus/manifest/entry/validators/index_filename.rb
Class Method Summary collapse
Class Method Details
.call(entry) ⇒ Object
6 7 8 9 10 11 |
# File 'lib/textus/manifest/entry/validators/index_filename.rb', line 6 def self.call(entry) return if entry.index_filename.nil? check_shape!(entry) check_extension!(entry) end |
.check_extension!(entry) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/textus/manifest/entry/validators/index_filename.rb', line 25 def self.check_extension!(entry) ext = File.extname(entry.index_filename) inferred = Textus::Entry.infer_from_extension(ext) if inferred.nil? raise UsageError.new( "entry '#{entry.key}': index_filename #{entry.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) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/textus/manifest/entry/validators/index_filename.rb', line 13 def self.check_shape!(entry) raise UsageError.new("entry '#{entry.key}': index_filename requires nested: true") unless entry.nested unless entry.index_filename.is_a?(String) && !entry.index_filename.empty? raise UsageError.new("entry '#{entry.key}': index_filename must be a non-empty string") end return unless entry.index_filename.include?("/") || File.basename(entry.index_filename) != entry.index_filename raise UsageError.new("entry '#{entry.key}': index_filename must be a bare basename (no slashes)") end |