class ReVIEW::MARKDOWNBuilder

Public Instance Methods

blank() click to toggle source
# File lib/review/markdownbuilder.rb, line 34
def blank
  unless @blank_seen
    @output.puts
  end
  @blank_seen = true
end
captionblock(type, lines, caption, _specialstyle = nil) click to toggle source
# File lib/review/markdownbuilder.rb, line 155
def captionblock(type, lines, caption, _specialstyle = nil)
  puts %Q(<div class="#{type}">)
  puts %Q(<p class="caption">#{compile_inline(caption)}</p>) if caption.present?
  blocked_lines = split_paragraph(lines)
  puts blocked_lines.join("\n\n")
  puts '</div>'
end
cmd(lines, caption = nil) click to toggle source
# File lib/review/markdownbuilder.rb, line 292
def cmd(lines, caption = nil)
  if caption.present?
    puts caption
    blank
  end
  puts '```shell-session'
  lines.each do |line|
    puts detab(line)
  end
  puts '```'
end
comment(lines, comment = nil) click to toggle source
# File lib/review/markdownbuilder.rb, line 398
def comment(lines, comment = nil)
  return unless @book.config['draft']

  lines ||= []
  unless comment.blank?
    lines.unshift(comment)
  end
  str = lines.join('<br />')
  puts %Q(<div class="red">#{escape(str)}</div>)
end
compile_href(url, label) click to toggle source
# File lib/review/markdownbuilder.rb, line 185
def compile_href(url, label)
  if label.blank?
    label = url
  end
  "[#{label}](#{url})"
end
compile_kw(word, alt) click to toggle source
# File lib/review/markdownbuilder.rb, line 388
def compile_kw(word, alt)
  %Q(<b class="kw">) +
    if alt
      escape_html(word + " (#{alt.strip})")
    else
      escape_html(word)
    end +
    "</b><!-- IDX:#{escape_comment(escape_html(word))} -->"
end
compile_ruby(base, ruby) click to toggle source
# File lib/review/markdownbuilder.rb, line 380
def compile_ruby(base, ruby)
  if @book.htmlversion == 5
    %Q(<ruby>#{escape(base)}<rp>#{I18n.t('ruby_prefix')}</rp><rt>#{escape(ruby)}</rt><rp>#{I18n.t('ruby_postfix')}</rp></ruby>)
  else
    %Q(<ruby><rb>#{escape(base)}</rb><rp>#{I18n.t('ruby_prefix')}</rp><rt>#{ruby}</rt><rp>#{I18n.t('ruby_postfix')}</rp></ruby>)
  end
end
dd(lines) click to toggle source
# File lib/review/markdownbuilder.rb, line 132
def dd(lines)
  puts "<dd>#{join_lines_to_paragraph(lines)}</dd>"
end
dl_begin() click to toggle source
# File lib/review/markdownbuilder.rb, line 124
def dl_begin
  puts '<dl>'
end
dl_end() click to toggle source
# File lib/review/markdownbuilder.rb, line 136
def dl_end
  puts '</dl>'
end
dt(line) click to toggle source
# File lib/review/markdownbuilder.rb, line 128
def dt(line)
  puts "<dt>#{line}</dt>"
end
emlist(lines, caption = nil, lang = nil) click to toggle source
# File lib/review/markdownbuilder.rb, line 140
def emlist(lines, caption = nil, lang = nil)
  blank
  if caption.present?
    puts caption
    blank
  end
  lang ||= ''
  puts "```#{lang}"
  lines.each do |line|
    puts detab(line)
  end
  puts '```'
  blank
end
endnote_item(id) click to toggle source
# File lib/review/markdownbuilder.rb, line 368
def endnote_item(id)
  puts "#{I18n.t('html_endnote_textmark', @chapter.endnote(id).number)}#{compile_inline(@chapter.endnote(id).content)}"
end
extname() click to toggle source
# File lib/review/markdownbuilder.rb, line 16
def extname
  '.md'
end
flushright(lines) click to toggle source
# File lib/review/markdownbuilder.rb, line 426
def flushright(lines)
  puts %Q(<div class="flushright">)
  puts split_paragraph(lines).join("\n")
  puts %Q(</div>)
end
footnote(id, str) click to toggle source
# File lib/review/markdownbuilder.rb, line 355
def footnote(id, str)
  puts "[^#{id}]: #{compile_inline(str)}"
  blank
end
headline(level, _label, caption) click to toggle source
# File lib/review/markdownbuilder.rb, line 41
def headline(level, _label, caption)
  blank
  prefix = '#' * level
  puts "#{prefix} #{caption}"
  blank
end
hr() click to toggle source
# File lib/review/markdownbuilder.rb, line 181
def hr
  puts '----'
end
image_dummy(_id, _caption, lines) click to toggle source
# File lib/review/markdownbuilder.rb, line 242
def image_dummy(_id, _caption, lines)
  puts lines.join
end
image_ext() click to toggle source
# File lib/review/markdownbuilder.rb, line 288
def image_ext
  'jpg'
end
image_image(id, caption, _metric) click to toggle source
# File lib/review/markdownbuilder.rb, line 236
def image_image(id, caption, _metric)
  blank
  puts "![#{compile_inline(caption)}](#{@chapter.image(id).path.sub(%r{\A\./}, '')})"
  blank
end
indepimage(_lines, id, caption = '', _metric = nil) click to toggle source
# File lib/review/markdownbuilder.rb, line 278
def indepimage(_lines, id, caption = '', _metric = nil)
  blank
  puts "![#{compile_inline(caption)}](#{@chapter.image(id).path.sub(%r{\A\./}, '')})"
  blank
end
inline_b(str) click to toggle source
# File lib/review/markdownbuilder.rb, line 200
def inline_b(str)
  "**#{str.gsub('*', '\*')}**"
end
inline_br(_str) click to toggle source
# File lib/review/markdownbuilder.rb, line 372
def inline_br(_str)
  "\n"
end
inline_code(str) click to toggle source
# File lib/review/markdownbuilder.rb, line 208
def inline_code(str)
  "`#{str}`"
end
inline_comment(str) click to toggle source
# File lib/review/markdownbuilder.rb, line 418
def inline_comment(str)
  if @book.config['draft']
    %Q(<span class="red">#{escape(str)}</span>)
  else
    ''
  end
end
inline_del(str) click to toggle source
# File lib/review/markdownbuilder.rb, line 232
def inline_del(str)
  "~~#{str}~~"
end
inline_dtp(str) click to toggle source
# File lib/review/markdownbuilder.rb, line 252
def inline_dtp(str)
  "<!-- DTP:#{str} -->"
end
inline_em(str) click to toggle source
# File lib/review/markdownbuilder.rb, line 196
def inline_em(str)
  "*#{str.gsub('*', '\*')}*"
end
inline_endnote(id) click to toggle source
# File lib/review/markdownbuilder.rb, line 364
def inline_endnote(id)
  "<sup>#{I18n.t('html_endnote_refmark', @chapter.endnote(id).number)}</sup>"
end
inline_fn(id) click to toggle source
# File lib/review/markdownbuilder.rb, line 360
def inline_fn(id)
  "[^#{id}]"
end
inline_hd_chap(chap, id) click to toggle source
# File lib/review/markdownbuilder.rb, line 256
def inline_hd_chap(chap, id)
  n = chap.headline_index.number(id)
  str = if n.present? && chap.number && over_secnolevel?(n)
          I18n.t('hd_quote', [n, compile_inline(chap.headline(id).caption)])
        else
          I18n.t('hd_quote_without_number', compile_inline(chap.headline(id).caption))
        end
  if @book.config['chapterlink']
    if @chapter == chap
      anchor = 'h' + n.tr('.', '-')
      %Q(<a href="##{anchor}">#{str}</a>)
    else
      warn 'MARKDOWNBuilder does not support links to other chapters', location: location
      str
    end
  else
    str
  end
rescue KeyError
  app_error "unknown headline: #{id}"
end
inline_i(str) click to toggle source
# File lib/review/markdownbuilder.rb, line 192
def inline_i(str)
  "*#{str.gsub('*', '\*')}*"
end
inline_icon(id) click to toggle source
# File lib/review/markdownbuilder.rb, line 409
def inline_icon(id)
  begin
    "![](#{@chapter.image(id).path.sub(%r{\A\./}, '')})"
  rescue StandardError
    warn "image not bound: #{id}", location: location
    %Q(<pre>missing image: #{id}</pre>)
  end
end
inline_img(id) click to toggle source
# File lib/review/markdownbuilder.rb, line 246
def inline_img(id)
  "#{I18n.t('image')}#{@chapter.image(id).number}"
rescue KeyError
  app_error "unknown image: #{id}"
end
inline_ins(str) click to toggle source
# File lib/review/markdownbuilder.rb, line 228
def inline_ins(str)
  "<ins>#{str}</ins>"
end
inline_strong(str) click to toggle source
# File lib/review/markdownbuilder.rb, line 204
def inline_strong(str)
  "**#{str.gsub('*', '\*')}**"
end
inline_sub(str) click to toggle source
# File lib/review/markdownbuilder.rb, line 212
def inline_sub(str)
  "<sub>#{str}</sub>"
end
inline_sup(str) click to toggle source
# File lib/review/markdownbuilder.rb, line 216
def inline_sup(str)
  "<sup>#{str}</sup>"
end
inline_tt(str) click to toggle source
# File lib/review/markdownbuilder.rb, line 220
def inline_tt(str)
  "`#{str}`"
end
inline_u(str) click to toggle source
# File lib/review/markdownbuilder.rb, line 224
def inline_u(str)
  "<u>#{str}</u>"
end
list_body(_id, lines, lang) click to toggle source
# File lib/review/markdownbuilder.rb, line 77
def list_body(_id, lines, lang)
  lang ||= ''
  puts "```#{lang}"
  lines.each do |line|
    puts detab(line)
  end
  puts '```'
end
list_header(id, caption, _lang) click to toggle source
# File lib/review/markdownbuilder.rb, line 69
def list_header(id, caption, _lang)
  if get_chap.nil?
    print %Q(リスト#{@chapter.list(id).number} #{compile_inline(caption)}\n\n)
  else
    print %Q(リスト#{get_chap}.#{@chapter.list(id).number} #{compile_inline(caption)}\n\n)
  end
end
listnum_body(lines, lang) click to toggle source
# File lib/review/markdownbuilder.rb, line 86
def listnum_body(lines, lang)
  lang ||= ''
  puts "```#{lang}"
  lines.each_with_index do |line, i|
    puts((i + 1).to_s.rjust(2) + ": #{detab(line)}")
  end
  puts '```'
end
nofunc_text(str) click to toggle source
# File lib/review/markdownbuilder.rb, line 376
def nofunc_text(str)
  str
end
noindent() click to toggle source
# File lib/review/markdownbuilder.rb, line 65
def noindent
  @noindent = true
end
ol_begin() click to toggle source
# File lib/review/markdownbuilder.rb, line 112
def ol_begin
  blank
end
ol_end() click to toggle source
# File lib/review/markdownbuilder.rb, line 120
def ol_end
  blank
end
ol_item(lines, num) click to toggle source
# File lib/review/markdownbuilder.rb, line 116
def ol_item(lines, num)
  puts "#{num}. #{join_lines_to_paragraph(lines)}"
end
pagebreak() click to toggle source
# File lib/review/markdownbuilder.rb, line 284
def pagebreak
  puts '{pagebreak}'
end
paragraph(lines) click to toggle source
# File lib/review/markdownbuilder.rb, line 54
def paragraph(lines)
  if @noindent
    puts %Q(<p class="noindent">#{join_lines_to_paragraph(lines)}</p>)
    puts "\n"
    @noindent = nil
  else
    puts join_lines_to_paragraph(lines)
    puts "\n"
  end
end
puts(str) click to toggle source
Calls superclass method ReVIEW::Builder#puts
# File lib/review/markdownbuilder.rb, line 29
def puts(str)
  @blank_seen = false
  super
end
quote(lines) click to toggle source
# File lib/review/markdownbuilder.rb, line 48
def quote(lines)
  blank
  puts split_paragraph(lines).map { |line| "> #{line}" }.join("\n> \n")
  blank
end
table_begin(ncols) click to toggle source
# File lib/review/markdownbuilder.rb, line 332
def table_begin(ncols)
end
table_border(ncols) click to toggle source
# File lib/review/markdownbuilder.rb, line 339
def table_border(ncols)
  puts((0..ncols).map { '|' }.join(':--'))
end
table_end() click to toggle source
# File lib/review/markdownbuilder.rb, line 351
def table_end
  blank
end
table_header(id, caption) click to toggle source
# File lib/review/markdownbuilder.rb, line 321
def table_header(id, caption)
  if id.nil?
    puts compile_inline(caption)
  elsif get_chap
    puts %Q(#{I18n.t('table')}#{I18n.t('format_number_header', [get_chap, @chapter.table(id).number])}#{I18n.t('caption_prefix')}#{compile_inline(caption)})
  else
    puts %Q(#{I18n.t('table')}#{I18n.t('format_number_header_without_chapter', [@chapter.table(id).number])}#{I18n.t('caption_prefix')}#{compile_inline(caption)})
  end
  blank
end
table_rows(sepidx, rows) click to toggle source
# File lib/review/markdownbuilder.rb, line 304
def table_rows(sepidx, rows)
  if sepidx
    sepidx.times do
      tr(rows.shift.map { |s| th(s) })
    end
    table_border(rows.first.size)
    rows.each do |cols|
      tr(cols.map { |s| td(s) })
    end
  else
    rows.each do |cols|
      h, *cs = *cols
      tr([th(h)] + cs.map { |s| td(s) })
    end
  end
end
td(str) click to toggle source
# File lib/review/markdownbuilder.rb, line 347
def td(str)
  str
end
th(str) click to toggle source
# File lib/review/markdownbuilder.rb, line 343
def th(str)
  str
end
tr(rows) click to toggle source
# File lib/review/markdownbuilder.rb, line 335
def tr(rows)
  puts "|#{rows.join('|')}|"
end
ul_begin() click to toggle source
# File lib/review/markdownbuilder.rb, line 95
def ul_begin
  blank if @ul_indent == 0
  @ul_indent += 1
end
ul_end() click to toggle source
# File lib/review/markdownbuilder.rb, line 107
def ul_end
  @ul_indent -= 1
  blank if @ul_indent == 0
end
ul_item_begin(lines) click to toggle source
# File lib/review/markdownbuilder.rb, line 100
def ul_item_begin(lines)
  puts ('  ' * (@ul_indent - 1)) + '* ' + join_lines_to_paragraph(lines)
end
ul_item_end() click to toggle source
# File lib/review/markdownbuilder.rb, line 104
def ul_item_end
end

Private Instance Methods

builder_init_file() click to toggle source
Calls superclass method ReVIEW::Builder#builder_init_file
# File lib/review/markdownbuilder.rb, line 20
def builder_init_file
  super
  @noindent = nil
  @blank_seen = nil
  @ul_indent = 0
  @chapter.book.image_types = %w[.png .jpg .jpeg .gif .svg]
end