Sha256: 49f5fc3ced69d26aaf151b265bd15c8c146592adba8dee957ac352bbe9a9081d

Contents?: true

Size: 1.09 KB

Versions: 17

Compression:

Stored size: 1.09 KB

Contents

require 'redcarpet'

module PushType
  class MarkdownField < PushType::FieldType

    options form_helper:    :text_area,
            html_options:   { :'v-code-mirror' => true, :'code-mirror-mode' => 'markdown' },
            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 compiled_value
      markdown.render value unless value.nil?
    end

    private

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

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

    on_instance do |object, field|
      object.presenter_class.class_eval do
        define_method(field.name) { fields[field.name].compiled_value } unless method_defined?(field.name)
      end
    end

  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
push_type_core-0.12.1 app/fields/push_type/markdown_field.rb
push_type_core-0.12.0 app/fields/push_type/markdown_field.rb
push_type_core-0.12.0.beta.1 app/fields/push_type/markdown_field.rb
push_type_core-0.11.2 app/fields/push_type/markdown_field.rb
push_type_core-0.11.1 app/fields/push_type/markdown_field.rb
push_type_core-0.11.0.beta.2 app/fields/push_type/markdown_field.rb
push_type_core-0.11.0.beta.1 app/fields/push_type/markdown_field.rb
push_type_core-0.10.4 app/fields/push_type/markdown_field.rb
push_type_core-0.10.3 app/fields/push_type/markdown_field.rb
push_type_core-0.10.2 app/fields/push_type/markdown_field.rb
push_type_core-0.10.1 app/fields/push_type/markdown_field.rb
push_type_core-0.10.0 app/fields/push_type/markdown_field.rb
push_type_core-0.10.0.beta.5 app/fields/push_type/markdown_field.rb
push_type_core-0.10.0.beta.3 app/fields/push_type/markdown_field.rb
push_type_core-0.9.5 app/fields/push_type/markdown_field.rb
push_type_core-0.9.3 app/fields/push_type/markdown_field.rb
push_type_core-0.9.2 app/fields/push_type/markdown_field.rb