Skip to content

Instantly share code, notes, and snippets.

@frankie-loves-jesus
Last active August 29, 2015 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save frankie-loves-jesus/9853685 to your computer and use it in GitHub Desktop.
Save frankie-loves-jesus/9853685 to your computer and use it in GitHub Desktop.

:paragraph not behaving as expected

This user input:

Hello,

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

should (as with simple_format) become:

<p>Hello,</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>

but instead becomes:

<p>Hello, Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
module ApplicationHelper
require 'kramdown'
require 'rinku'
include Twitter::Autolink
def sanitize_user_textarea(text)
# Format the text w/ custom Kramdown setup and autolink w/ Rinku and Twitter Text
# Corresponds to `makeLinksTargetBlank` in `all.js`
raw(Rinku.auto_link(auto_link(Kramdown::Document.new(text, {:input => 'CustomKramdown'}).to_html)))
end
end
# config/initializers/custom_kramdown.rb
require 'kramdown/parser/kramdown'
module Kramdown
module Parser
class CustomKramdown < Kramdown::Parser::Kramdown
# Delete selected Kramdown parsers
# https://github.com/gettalong/kramdown/blob/master/lib/kramdown/parser/kramdown.rb#L75
def initialize(source, options)
super
# Not deleted: `:paragraph`
[
:blank_line,
:codeblock,
:codeblock_fenced,
:blockquote,
:atx_header,
:horizontal_rule,
:list,
:definition_list,
:block_html,
:setext_header,
:table,
:footnote_definition,
:link_definition,
:abbrev_definition,
:block_extensions,
:block_math,
:eob_marker
].each do |parser|
@block_parsers.delete(parser)
end
# Not deleted: `:link`
[
:emphasis,
:codespan,
:autolink,
:span_html,
:footnote_marker,
:smart_quotes,
:inline_math,
:span_extensions,
:html_entity,
:typographic_syms,
:line_break,
:escaped_chars
].each do |parser|
@span_parsers.delete(parser)
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment