Sha256: b183147c7d0d32bceb685d8498603364880125df64d7619fde38b095e262a274

Contents?: true

Size: 1.44 KB

Versions: 24

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'
require 'eac_templates/variables/providers'

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

      class << self
        # @param path [Pathname]
        # @return [EacTemplates::Variables::Content]
        def from_file(path)
          new(path.to_pathname.read)
        end
      end

      enable_simple_cache
      common_constructor :content

      # +variables_provider+ A [Hash] or object which responds to +read_entry(entry_name)+.
      def apply(variables_source)
        variables_provider = ::EacTemplates::Variables::Providers.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 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

24 entries across 24 versions & 2 rubygems

Version Path
eac_tools-0.76.0 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.75.2 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.75.1 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.75.0 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.74.1 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.74.0 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.73.0 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.72.0 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.70.1 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.70.0 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.69.1 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.69.0 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.68.0 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.67.1 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.67.0 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.66.0 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.65.1 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.65.0 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.64.0 sub/eac_templates/lib/eac_templates/variables/content.rb
eac_tools-0.63.0 sub/eac_templates/lib/eac_templates/variables/content.rb