Sha256: 8863105f4c28ca63e01fd10f9fe76c3beae7520eb4d2b1d9a39c2c09fd055d51

Contents?: true

Size: 872 Bytes

Versions: 4

Compression:

Stored size: 872 Bytes

Contents

require 'redcarpet'

module PushType
  class MarkdownField < PushType::FieldType

    options form_helper: :text_area, renderer: Redcarpet::Render::HTML, render_options: {}, extensions: {
      autolink:             true,
      fenced_code_blocks:   true,
      no_intra_emphasis:    true,
      space_after_headers:  true,
      strikethrough:        true,
      tables:               true,
      underline:            true
    }

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

    def renderer
      @opts[:renderer].new @opts[:render_options]
    end

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

        define_method field.name.to_sym do
          raw = super()
          fields[field.json_key].markdown.render raw unless raw.nil?
        end

      end
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
push_type_core-0.5.3 app/fields/push_type/markdown_field.rb
push_type_core-0.5.2 app/fields/push_type/markdown_field.rb
push_type_core-0.5.1 app/fields/push_type/markdown_field.rb
push_type_core-0.5.0 app/fields/push_type/markdown_field.rb