Sha256: e06ae81a88647d7eb066f3c3847aae0e6566ecbf1efd66d52e3ad61b5d1cf30e

Contents?: true

Size: 1.37 KB

Versions: 123

Compression:

Stored size: 1.37 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'
require 'eac_ruby_utils/templates/variable_providers'

module EacRubyUtils
  module Templates
    class File
      VARIABLE_DELIMITER = ::Regexp.quote('%%')
      VARIABLE_PATTERN = /#{VARIABLE_DELIMITER}([a-z0-9\._]*)#{VARIABLE_DELIMITER}/i.freeze

      enable_simple_cache
      common_constructor :path do
        self.path = path.to_pathname
      end

      # +variables_provider+ A [Hash] or object which responds to +read_entry(entry_name)+.
      def apply(variables_source)
        variables_provider = ::EacRubyUtils::Templates::VariableProviders.build(variables_source)
        variables.inject(content) do |a, e|
          a.gsub(variable_pattern(e), variables_provider.variable_value(e).to_s)
        end
      end

      def apply_to_file(variables_source, output_file_path)
        output_file_path.to_pathname.write(apply(variables_source))
      end

      private

      def variables_uncached
        content.scan(VARIABLE_PATTERN).map(&:first).map do |name|
          sanitize_variable_name(name)
        end.to_set
      end

      def content_uncached
        path.read
      end

      def sanitize_variable_name(variable_name)
        variable_name.to_s.downcase
      end

      def variable_pattern(name)
        /#{VARIABLE_DELIMITER}#{::Regexp.quote(name)}#{VARIABLE_DELIMITER}/i
      end
    end
  end
end

Version data entries

123 entries across 123 versions & 3 rubygems

Version Path
avm-tools-0.98.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/file.rb
avm-tools-0.97.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/file.rb
avm-tools-0.96.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/file.rb
eac_ruby_utils-0.63.0 lib/eac_ruby_utils/templates/file.rb
avm-tools-0.95.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/file.rb
eac_ruby_utils-0.62.1 lib/eac_ruby_utils/templates/file.rb
avm-tools-0.94.3 vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/file.rb
eac_ruby_utils-0.62.0 lib/eac_ruby_utils/templates/file.rb
eac_ruby_utils-0.61.0 lib/eac_ruby_utils/templates/file.rb
avm-tools-0.94.2 vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/file.rb
eac_ruby_utils-0.60.0 lib/eac_ruby_utils/templates/file.rb
avm-tools-0.94.1 vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/file.rb
eac_ruby_utils-0.59.0 lib/eac_ruby_utils/templates/file.rb
ehbrs-tools-0.20.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/file.rb
avm-tools-0.94.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/file.rb
avm-tools-0.93.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/file.rb
avm-tools-0.92.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/file.rb
avm-tools-0.91.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/file.rb
avm-tools-0.90.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/file.rb
avm-tools-0.89.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/file.rb