Sha256: 816b8f7c6472616fd7f191575657ab202c0dcc745835a546fdda61cb1f2b71b4

Contents?: true

Size: 987 Bytes

Versions: 2

Compression:

Stored size: 987 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 Stevenson::Error.new "Type '#{type}' is not a valid output type.", e
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
stevenson-2.2.2 lib/stevenson/output_filter.rb
stevenson-2.2.1 lib/stevenson/output_filter.rb