Sha256: 037b2fbcd18341851a32af943a6bd69695d42d9b494922738ba800781d53f674

Contents?: true

Size: 932 Bytes

Versions: 1

Compression:

Stored size: 932 Bytes

Contents

require 'temple'

module I18n::Tasks::Scanners
  # A base class for {Temple}-based scanners.
  #
  # @abstract
  # @since 0.9.0
  class TempleScanner < FileScanner
    def initialize(gem_name:, suggested_gem_version:, class_name:, requires:, **args)
      super(args)
      @gem_name     = gem_name
      @suggested_gem_version  = suggested_gem_version
      @class_name   = class_name
      @requires     = requires
      @parser_class = nil
    end

    protected

    # @return [Class<Temple::Parser>]
    def parser_class
      @parser_class ||= begin
        begin
          Array(@requires).each { |dependency| require dependency }
        rescue LoadError => e
          raise ::I18n::Tasks::CommandError.new(
                    e, "#{e.message}: Please add `gem '#{@gem_name}', '#{@suggested_gem_version}'` to the Gemfile.")
        end
        ActiveSupport::Inflector.constantize(@class_name)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
i18n-tasks-0.9.0.rc2 lib/i18n/tasks/scanners/temple_scanner.rb