Sha256: d71ba9be7079aa1cda8f0ed800412f7c919e1ea8e225a37706fe9727933a1a89

Contents?: true

Size: 980 Bytes

Versions: 3

Compression:

Stored size: 980 Bytes

Contents

module Stevenson
  module OutputFilter
    autoload :Jekyll, 'stevenson/output_filters/jekyll'
    autoload :Zip, 'stevenson/output_filters/zip'

    autoload :Generator, 'stevenson/output_filter/generator'

    class Base
      attr_reader :directory

      def self.included(filter)
        filter.extend ClassMethods

        Stevenson.output_filters[filter.filter_name] = filter
      end

      module ClassMethods
        def filter_name
          name.gsub(/^.*::/, '').downcase.to_sym
        end
      end

      def initialize(directory)
        @directory = directory
      end

      def output
        raise NotImplementedError
      end
    end

    def self.generate!(template, options)
      Generator.new(options).generate!(template)
    end

    def self.filter_for(type)
      Stevenson.output_filters[type] || const_get(type.to_s.capitalize)
    rescue NameError => e
      raise NameError.new "Type '#{type}' is not a valid output type.", e
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
stevenson-2.2.0 lib/stevenson/output_filter.rb
stevenson-2.1.0 lib/stevenson/output_filter.rb
stevenson-2.0.0 lib/stevenson/output_filter.rb