Sha256: 0b6697f1d397618c4e5a10b1a0b9299cf9528a8de8f5e18ac8a02ae09521a748

Contents?: true

Size: 1.14 KB

Versions: 4

Compression:

Stored size: 1.14 KB

Contents

module MarkdownPreview 
  # The base module we include into ActionController::Base
  module Base
    # When this module is included, extend it with the available class methods
    def self.included(base)
      base.extend(ClassMethods)
    end

    module ClassMethods
      # The controller declaration to enable markdown_preview certain actions.
      # Takes options hash, raw_options string, and any normal params you
      # can send to a before_filter (only, except etc)
      def uses_markdown_preview(options = {})
        configuration = MarkdownPreview::Configuration.new(options.delete(:options), options.delete(:raw_options))
        
        # Set instance vars in the current class
        proc = Proc.new do |c|
          configurations = c.instance_variable_get(:@markdown_preview_configurations) || []
          configurations << configuration
          c.instance_variable_set(:@markdown_preview_configurations, configurations)
          c.instance_variable_set(:@uses_markdown_preview, true)
        end

        # Run the above proc before each page load this method is declared in
        before_filter(proc, options)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
markdown_preview-0.1.5 lib/markdown_preview/base.rb
markdown_preview-0.1.4 lib/markdown_preview/base.rb
markdown_preview-0.1.3 lib/markdown_preview/base.rb
markdown_preview-0.1.2 lib/markdown_preview/base.rb