Sha256: 920be758e39f8beb29e4b76a07f54b6a69c6d24c0ff63021271edfe1e4b69600

Contents?: true

Size: 996 Bytes

Versions: 5

Compression:

Stored size: 996 Bytes

Contents

require 'redcarpet'

module PushType
  class MarkdownField < PushType::FieldType

    DEFAULT_EXTENSIONS = {
      autolink:             true,
      fenced_code_blocks:   true,
      no_intra_emphasis:    true,
      space_after_headers:  true,
      strikethrough:        true,
      tables:               true,
      underline:            true
    }

    def form_helper
      @opts[:form_helper] || :text_area
    end

    def markdown
      @markdown ||= Redcarpet::Markdown.new(renderer, extensions)
    end

    def renderer
      ( @opts[:renderer] || Redcarpet::Render::HTML ).new render_options
    end

    def render_options
      @opts[:render_options] || {}
    end

    def extensions
      DEFAULT_EXTENSIONS.merge(@opts[:extensions] || {})
    end

    initialized_on_node do |object, field|
      object.presenter_class.class_eval do

        define_method field.name.to_sym do
          fields[field.name.to_sym].markdown.render super()
        end

      end
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
push_type_core-0.5.0.alpha.2 app/fields/push_type/markdown_field.rb
push_type_core-0.5.0.alpha.1 app/fields/push_type/markdown_field.rb
push_type_core-0.4.0 app/fields/push_type/markdown_field.rb
push_type_core-0.4.0.beta.3 app/fields/push_type/markdown_field.rb
push_type_core-0.3.3 app/fields/push_type/markdown_field.rb