Class: SimpleFAQ::Formatter

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_faq.rb

Constant Summary collapse

REGEXES =
{
  section_title: /(\{section-title\}([\s|\S|\n|\r]*?)\{\/section-title\})/i,
  intro: /\A([\s|\S]*?){/i,
  qa: /(\{q\}([\s\S]*?)\{\/q\}[\r\n|\n|\s]*?\{a\}([\s\S]*?)\{\/a\})/i,
  vimeo: /(\{\s*?vimeo\s*?:\s*?([0-9]*?)\s*?\})/i,
  has_video: /({[\s]*?vimeo\s*?:\s*?\d{5,10}\s*?})/i
}
MARKDOWN =
Redcarpet::Markdown.new(Redcarpet::Render::HTML,
no_intra_emphasis: true, tables: true,
fenced_code_blocks: true, autolink: true,
strikethrough: true, highlight: true, quote: true)
FORMATTING =
{
  q: "<h3 class=\"faq--question\" data-qa=\"{i}\">{q}</h3>",
  q_with_video: "<h3 class=\"faq--question\" data-qa=\"{i}\">{q}<span class=\"with-video\"></span></h3>",
  a: "<div class=\"faq--answer answer-{i} hidden\">{a}</div>",
  vimeo: '<iframe src="//player.vimeo.com/video/{stream_id}?title=0&amp;byline=0&amp;portrait=0&amp;badge=0" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>',
  section_list: '<ul class="faq--section--list">{section-list}</ul>',
  title_anchor: "<h2 class=\"faq--section--title-anchor\"><a name=\"section-{i}\"></a>{title}</h2>",
  title_link: "<li class=\"faq--section--title-link\"><a href=\"#section-{i}\">{title}</a></li>",
  body_wrap: %Q{<div class="faq">{body}</div>}
}

Instance Method Summary collapse

Constructor Details

#initialize(body) ⇒ Formatter

Returns a new instance of Formatter.



33
34
35
36
37
38
39
40
41
# File 'lib/simple_faq.rb', line 33

def initialize(body)
  @body = body.strip.gsub("\r", "")
  @section_list = ""
  format_section_titles
  format_qa_pairs
  format_intro
  format_section_list
  @body.gsub!(/(\n){1,}/, "\n")
end

Instance Method Details

#htmlObject



43
44
45
# File 'lib/simple_faq.rb', line 43

def html
  FORMATTING[:body_wrap].sub("{body}", @body)
end