diff options
author | Achilleas Pipinellis <axil@gitlab.com> | 2017-09-29 17:45:06 +0300 |
---|---|---|
committer | Achilleas Pipinellis <axil@gitlab.com> | 2017-09-29 17:45:06 +0300 |
commit | 9a6f57eb2fddb8b8781885250919c00d577b1872 (patch) | |
tree | 503ab1b3504b6019d9abac90003fd5f83c8af504 /lib | |
parent | b05f96107bc713c7d701f0d7f57e93a0f7d0dc1f (diff) |
Move redcarpet renderer to its own lib helper file
Diffstat (limited to 'lib')
-rw-r--r-- | lib/helpers/redcarpet_render.rb | 26 | ||||
-rw-r--r-- | lib/helpers_.rb | 25 |
2 files changed, 27 insertions, 24 deletions
diff --git a/lib/helpers/redcarpet_render.rb b/lib/helpers/redcarpet_render.rb new file mode 100644 index 00000000..fe59d31e --- /dev/null +++ b/lib/helpers/redcarpet_render.rb @@ -0,0 +1,26 @@ +require 'redcarpet' +require 'rouge' +require 'rouge/plugins/redcarpet' + +module Nanoc::Helpers + module RedcarpetRender + class HTML < Redcarpet::Render::HTML + include Rouge::Plugins::Redcarpet + + def header(text, header_level) + # https://github.com/cookpad/garage/blob/c817733e382c734eedba743e9103cd8a124f24eb/lib/garage/docs/anchor_building.rb#L24 + anchor = text.gsub(/\s+/, '-').gsub(/<\/?[^>]*>/, '').downcase + # https://github.com/rails/rails/blob/e491b2c06329afb3c989261a2865d2a93c8b84b8/activesupport/lib/active_support/inflector/transliterate.rb#L86 + anchor.gsub!(/[^a-z0-9\-_]+/i, '-') + anchor.squeeze!('-') # replace multiple dashes with one + anchor.gsub!(/^-|-$/, '') # remove any first or last dashes + + %(<h#{header_level} id='#{anchor}'>#{text} <a class='anchor' href='##{anchor}' title='Permalink'></a></h#{header_level}>) + end + + def image(link, title, alt_text) + %(<a target="_blank" href="#{link}"><img src="#{link}" title="#{title}" alt="#{alt_text}"/></a>) + end + end + end +end diff --git a/lib/helpers_.rb b/lib/helpers_.rb index e23e00da..de9ec533 100644 --- a/lib/helpers_.rb +++ b/lib/helpers_.rb @@ -3,27 +3,4 @@ include Nanoc::Helpers::XMLSitemap include Nanoc::Helpers::Rendering include Nanoc::Helpers::ChildParentBetter include Nanoc::Helpers::EditOnGitLab - -require 'redcarpet' -require 'rouge' -require 'rouge/plugins/redcarpet' - -class HTML < Redcarpet::Render::HTML - include Rouge::Plugins::Redcarpet - - - def header(text, header_level) - # https://github.com/cookpad/garage/blob/c817733e382c734eedba743e9103cd8a124f24eb/lib/garage/docs/anchor_building.rb#L24 - anchor = text.gsub(/\s+/, '-').gsub(/<\/?[^>]*>/, '').downcase - # https://github.com/rails/rails/blob/e491b2c06329afb3c989261a2865d2a93c8b84b8/activesupport/lib/active_support/inflector/transliterate.rb#L86 - anchor.gsub!(/[^a-z0-9\-_]+/i, '-') - anchor.squeeze!('-') # replace multiple dashes with one - anchor.gsub!(/^-|-$/, '') # remove any first or last dashes - - %(<h#{header_level} id='#{anchor}'>#{text} <a class='anchor' href='##{anchor}' title='Permalink'></a></h#{header_level}>) - end - - def image(link, title, alt_text) - %(<a target="_blank" href="#{link}"><img src="#{link}" title="#{title}" alt="#{alt_text}"/></a>) - end -end +include Nanoc::Helpers::RedcarpetRender |