Sha256: c7ef3bfcd1ca599a0c221e053ae6a2066b562e2d424450f1a023f7004932475c

Contents?: true

Size: 1.56 KB

Versions: 97

Compression:

Stored size: 1.56 KB

Contents

# frozen_string_literal: true

require 'avm/files/info'
require 'ostruct'

module Avm
  module Files
    class Formatter
      module Formats
        class Base
          def apply(files)
            old_content = Hash[files.map { |f| [f, File.read(f)] }]
            ::Avm::Files::Formatter::Utf8Assert.assert_files(files) { internal_apply(files) }
            files.map { |f| build_file_result(f, old_content[f]) }
          end

          def name
            self.class.name.demodulize
          end

          def match?(file)
            match_by_filename?(file) || match_by_type?(file)
          end

          def valid_basenames
            constant_or_array('VALID_BASENAMES')
          end

          def valid_types
            constant_or_array('VALID_TYPES')
          end

          private

          def constant_or_array(name)
            return [] unless self.class.const_defined?(name)

            self.class.const_get(name)
          end

          def build_file_result(file, old_content)
            ::OpenStruct.new(file: file, format: self.class,
                             changed: (old_content != File.read(file)))
          end

          def match_by_filename?(file)
            valid_basenames.any? do |valid_basename|
              file.basename.fnmatch?(valid_basename)
            end
          end

          def match_by_type?(file)
            info = ::Avm::Files::Info.new(file)
            return unless info.content_type.type == 'text'

            valid_types.include?(info.content_type.subtype)
          end
        end
      end
    end
  end
end

Version data entries

97 entries across 97 versions & 2 rubygems

Version Path
avm-tools-0.106.0 vendor/avm/lib/avm/files/formatter/formats/base.rb
avm-0.3.2 lib/avm/files/formatter/formats/base.rb
avm-0.3.1 lib/avm/files/formatter/formats/base.rb
avm-tools-0.105.0 vendor/avm/lib/avm/files/formatter/formats/base.rb
avm-0.3.0 lib/avm/files/formatter/formats/base.rb
avm-tools-0.104.0 vendor/avm/lib/avm/files/formatter/formats/base.rb
avm-tools-0.103.1 lib/avm/files/formatter/formats/base.rb
avm-tools-0.103.0 lib/avm/files/formatter/formats/base.rb
avm-tools-0.102.2 lib/avm/files/formatter/formats/base.rb
avm-tools-0.102.1 lib/avm/files/formatter/formats/base.rb
avm-tools-0.102.0 lib/avm/files/formatter/formats/base.rb
avm-tools-0.101.0 lib/avm/files/formatter/formats/base.rb
avm-tools-0.100.0 lib/avm/files/formatter/formats/base.rb
avm-tools-0.99.1 lib/avm/files/formatter/formats/base.rb
avm-tools-0.99.0 lib/avm/files/formatter/formats/base.rb
avm-tools-0.98.0 lib/avm/files/formatter/formats/base.rb
avm-tools-0.97.0 lib/avm/files/formatter/formats/base.rb
avm-tools-0.96.0 lib/avm/files/formatter/formats/base.rb
avm-tools-0.95.0 lib/avm/files/formatter/formats/base.rb
avm-tools-0.94.3 lib/avm/files/formatter/formats/base.rb