class ReVIEW::HTMLBuilder

Public Instance Methods

best(lines, caption = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 310
def best(lines, caption = nil)
  captionblock('best', lines, caption)
end
bibpaper(lines, id, caption) click to toggle source
# File lib/review/htmlbuilder.rb, line 1074
def bibpaper(lines, id, caption)
  puts %Q(<div class="bibpaper">)
  bibpaper_header(id, caption)
  bibpaper_bibpaper(id, caption, lines) unless lines.empty?
  puts '</div>'
end
bibpaper_bibpaper(_id, _caption, lines) click to toggle source
# File lib/review/htmlbuilder.rb, line 1088
def bibpaper_bibpaper(_id, _caption, lines)
  print split_paragraph(lines).join
end
bibpaper_header(id, caption) click to toggle source
# File lib/review/htmlbuilder.rb, line 1081
def bibpaper_header(id, caption)
  print %Q(<a id="bib-#{normalize_id(id)}">)
  print "[#{@chapter.bibpaper(id).number}]"
  print '</a>'
  puts " #{compile_inline(caption)}"
end
blankline() click to toggle source
# File lib/review/htmlbuilder.rb, line 891
def blankline
  puts '<p><br /></p>'
end
box(lines, caption = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 342
def box(lines, caption = nil)
  captionstr = nil
  if caption.present?
    captionstr = %Q(<p class="caption">#{compile_inline(caption)}</p>)
  end
  puts %Q(<div class="syntax">)

  if caption_top?('list') && caption.present?
    puts captionstr
  end

  print %Q(<pre class="syntax">)
  lines.each do |line|
    puts detab(line)
  end
  puts '</pre>'

  if !caption_top?('list') && caption.present?
    puts captionstr
  end
  puts '</div>'
end
bpo(lines) click to toggle source
# File lib/review/htmlbuilder.rb, line 899
def bpo(lines)
  puts '<bpo>'
  lines.each do |line|
    puts detab(line)
  end
  puts '</bpo>'
end
captionblock(type, lines, caption) click to toggle source
# File lib/review/htmlbuilder.rb, line 283
def captionblock(type, lines, caption)
  check_nested_minicolumn
  puts %Q(<div class="#{type}">)
  if caption.present?
    puts %Q(<p class="caption">#{compile_inline(caption)}</p>)
  end
  blocked_lines = split_paragraph(lines)
  puts blocked_lines.join("\n")
  puts '</div>'
end
caution(lines, caption = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 322
def caution(lines, caption = nil)
  captionblock('caution', lines, caption)
end
centering(lines) click to toggle source
# File lib/review/htmlbuilder.rb, line 1330
def centering(lines)
  puts split_paragraph(lines).join("\n").gsub('<p>', %Q(<p class="center">))
end
close_sections() click to toggle source
# File lib/review/htmlbuilder.rb, line 109
def close_sections
  "</section>\n" * @section_stack.size
end
cmd(lines, caption = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 577
def cmd(lines, caption = nil)
  puts %Q(<div class="cmd-code">)
  if caption_top?('list') && caption.present?
    puts %Q(<p class="caption">#{compile_inline(caption)}</p>)
  end

  print %Q(<pre class="cmd">)
  body = lines.inject('') { |i, j| i + detab(j) + "\n" }
  lexer = 'shell-session'
  puts highlight(body: body, lexer: lexer, format: 'html')
  puts '</pre>'

  if !caption_top?('list') && caption.present?
    puts %Q(<p class="caption">#{compile_inline(caption)}</p>)
  end

  puts '</div>'
end
column_begin(level, label, caption) click to toggle source
# File lib/review/htmlbuilder.rb, line 236
def column_begin(level, label, caption)
  puts %Q(<div class="column">)

  @column += 1
  puts if level > 1
  a_id = %Q(<a id="column-#{@column}"></a>)

  if caption.empty?
    puts a_id if label
  elsif label
    puts %Q(<h#{level} id="#{normalize_id(label)}">#{a_id}#{compile_inline(caption)}</h#{level}>)
  else
    puts %Q(<h#{level}>#{a_id}#{compile_inline(caption)}</h#{level}>)
  end
end
column_end(_level) click to toggle source
# File lib/review/htmlbuilder.rb, line 252
def column_end(_level)
  puts '</div>'
end
comment(lines, comment = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 808
def comment(lines, comment = nil)
  return unless @book.config['draft']

  lines ||= []
  lines.unshift(escape(comment)) unless comment.blank?
  str = lines.join('<br />')
  puts %Q(<div class="draft-comment">#{str}</div>)
end
compile_href(url, label) click to toggle source
# File lib/review/htmlbuilder.rb, line 1318
def compile_href(url, label)
  if @book.config['externallink']
    %Q(<a href="#{escape(url)}" class="link">#{label.nil? ? escape(url) : escape(label)}</a>)
  else
    label.nil? ? escape(url) : I18n.t('external_link', [escape(label), escape(url)])
  end
end
compile_kw(word, alt) click to toggle source
# File lib/review/htmlbuilder.rb, line 977
def compile_kw(word, alt)
  %Q(<b class="kw">) +
    if alt
      escape(word + " (#{alt.strip})")
    else
      escape(word)
    end +
    "</b><!-- IDX:#{escape_comment(escape(word))} -->"
end
compile_ruby(base, ruby) click to toggle source
# File lib/review/htmlbuilder.rb, line 969
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/htmlbuilder.rb, line 428
def dd(lines)
  puts "<dd>#{join_lines_to_paragraph(lines)}</dd>"
end
dl_begin() click to toggle source
# File lib/review/htmlbuilder.rb, line 420
def dl_begin
  puts '<dl>'
end
dl_end() click to toggle source
# File lib/review/htmlbuilder.rb, line 432
def dl_end
  puts '</dl>'
end
doorquote(lines, ref) click to toggle source
# File lib/review/htmlbuilder.rb, line 610
def doorquote(lines, ref)
  blocked_lines = split_paragraph(lines)
  puts %Q(<blockquote style="text-align:right;">)
  puts blocked_lines.join("\n")
  puts %Q(<p>#{ref}より</p>)
  puts '</blockquote>'
end
dt(line) click to toggle source
# File lib/review/htmlbuilder.rb, line 424
def dt(line)
  puts "<dt>#{line}</dt>"
end
emlist(lines, caption = nil, lang = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 527
def emlist(lines, caption = nil, lang = nil)
  puts %Q(<div class="emlist-code">)
  if caption_top?('list') && caption.present?
    puts %Q(<p class="caption">#{compile_inline(caption)}</p>)
  end
  class_names = ['emlist']
  class_names.push("language-#{lang}") unless lang.blank?
  class_names.push('highlight') if highlight?
  print %Q(<pre class="#{class_names.join(' ')}">)
  body = lines.inject('') { |i, j| i + detab(j) + "\n" }
  lexer = lang
  puts highlight(body: body, lexer: lexer, format: 'html')
  puts '</pre>'
  if !caption_top?('list') && caption.present?
    puts %Q(<p class="caption">#{compile_inline(caption)}</p>)
  end
  puts '</div>'
end
emlistnum(lines, caption = nil, lang = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 546
def emlistnum(lines, caption = nil, lang = nil)
  puts %Q(<div class="emlistnum-code">)
  if caption_top?('list') && caption.present?
    puts %Q(<p class="caption">#{compile_inline(caption)}</p>)
  end

  body = lines.inject('') { |i, j| i + detab(j) + "\n" }
  lexer = lang
  first_line_number = line_num
  hs = highlight(body: body, lexer: lexer, format: 'html', linenum: true,
                 options: { linenostart: first_line_number })
  if highlight?
    puts hs
  else
    class_names = ['emlist']
    class_names.push("language-#{lang}") unless lang.blank?
    class_names.push('highlight') if highlight?
    print %Q(<pre class="#{class_names.join(' ')}">)
    hs.split("\n").each_with_index do |line, i|
      puts detab((i + first_line_number).to_s.rjust(2) + ': ' + line)
    end
    puts '</pre>'
  end

  if !caption_top?('list') && caption.present?
    puts %Q(<p class="caption">#{compile_inline(caption)}</p>)
  end

  puts '</div>'
end
emtable(lines, caption = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 804
def emtable(lines, caption = nil)
  table(lines, nil, caption)
end
endnote_begin() click to toggle source
# File lib/review/htmlbuilder.rb, line 830
def endnote_begin
  puts %Q(<div class="endnotes">)
end
endnote_end() click to toggle source
# File lib/review/htmlbuilder.rb, line 834
def endnote_end
  puts %Q(</div>)
end
endnote_item(id) click to toggle source
# File lib/review/htmlbuilder.rb, line 838
def endnote_item(id)
  back = ''
  if @book.config['epubmaker'] && @book.config['epubmaker']['back_footnote']
    back = %Q(<a href="#endnoteb-#{normalize_id(id)}">#{I18n.t('html_footnote_backmark')}</a>)
  end
  puts %Q(<div class="endnote" id="endnote-#{normalize_id(id)}"><p class="endnote">#{back}#{I18n.t('html_endnote_textmark', @chapter.endnote(id).number)}#{compile_inline(@chapter.endnote(id).content)}</p></div>)
end
extname() click to toggle source
# File lib/review/htmlbuilder.rb, line 40
def extname
  ".#{@book.config['htmlext']}"
end
flushright(lines) click to toggle source
# File lib/review/htmlbuilder.rb, line 1326
def flushright(lines)
  puts split_paragraph(lines).join("\n").gsub('<p>', %Q(<p class="flushright">))
end
footnote(id, str) click to toggle source
# File lib/review/htmlbuilder.rb, line 817
def footnote(id, str)
  if @book.config['epubversion'].to_i == 3
    back = ''
    if @book.config['epubmaker'] && @book.config['epubmaker']['back_footnote']
      back = %Q(<a href="#fnb-#{normalize_id(id)}">#{I18n.t('html_footnote_backmark')}</a>)
    end
    # XXX: back link must be located at first of p for Kindle.
    puts %Q(<div class="footnote" epub:type="footnote" id="fn-#{normalize_id(id)}"><p class="footnote">#{back}#{I18n.t('html_footnote_textmark', @chapter.footnote(id).number)}#{compile_inline(str)}</p></div>)
  else
    puts %Q(<div class="footnote" id="fn-#{normalize_id(id)}"><p class="footnote">[<a href="#fnb-#{normalize_id(id)}">*#{@chapter.footnote(id).number}</a>] #{compile_inline(str)}</p></div>)
  end
end
handle_metric(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 680
def handle_metric(str)
  if str =~ /\Ascale=([\d.]+)\Z/
    return { 'class' => sprintf('width-%03dper', ($1.to_f * 100).round) }
  end

  k, v = str.split('=', 2)
  { k => v.sub(/\A["']/, '').sub(/["']\Z/, '') }
end
headline(level, label, caption) click to toggle source
# File lib/review/htmlbuilder.rb, line 165
def headline(level, label, caption)
  if use_section?
    print open_section(level)
  end
  prefix, anchor = headline_prefix(level)
  if prefix
    prefix = %Q(<span class="secno">#{prefix}</span>)
  end
  puts '' if level > 1
  a_id = ''
  if anchor
    a_id = %Q(<a id="h#{anchor}"></a>)
  end

  if caption.empty?
    puts a_id if label
  elsif label
    puts %Q(<h#{level} id="#{normalize_id(label)}">#{a_id}#{prefix}#{compile_inline(caption)}</h#{level}>)
  else
    puts %Q(<h#{level}>#{a_id}#{prefix}#{compile_inline(caption)}</h#{level}>)
  end
end
hr() click to toggle source
# File lib/review/htmlbuilder.rb, line 883
def hr
  puts '<hr />'
end
image_dummy(id, caption, lines) click to toggle source
# File lib/review/htmlbuilder.rb, line 711
def image_dummy(id, caption, lines)
  warn "image not bound: #{id}", location: location
  puts %Q(<div id="#{normalize_id(id)}" class="image">)
  image_header(id, caption) if caption_top?('image')
  puts %Q(<pre class="dummyimage">)
  lines.each do |line|
    puts detab(line)
  end
  puts '</pre>'
  image_header(id, caption) unless caption_top?('image')
  puts '</div>'
end
image_ext() click to toggle source
# File lib/review/htmlbuilder.rb, line 1334
def image_ext
  'png'
end
image_header(id, caption) click to toggle source
# File lib/review/htmlbuilder.rb, line 724
def image_header(id, caption)
  puts %Q(<p class="caption">)
  if get_chap
    puts %Q(#{I18n.t('image')}#{I18n.t('format_number_header', [get_chap, @chapter.image(id).number])}#{I18n.t('caption_prefix')}#{compile_inline(caption)})
  else
    puts %Q(#{I18n.t('image')}#{I18n.t('format_number_header_without_chapter', [@chapter.image(id).number])}#{I18n.t('caption_prefix')}#{compile_inline(caption)})
  end
  puts '</p>'
end
image_image(id, caption, metric) click to toggle source
# File lib/review/htmlbuilder.rb, line 702
def image_image(id, caption, metric)
  metrics = parse_metric('html', metric)
  puts %Q(<div id="#{normalize_id(id)}" class="image">)
  image_header(id, caption) if caption_top?('image')
  puts %Q(<img src="#{@chapter.image(id).path.sub(%r{\A\./}, '')}" alt="#{escape(compile_inline(caption))}"#{metrics} />)
  image_header(id, caption) unless caption_top?('image')
  puts '</div>'
end
imgtable(lines, id, caption = nil, metric = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 774
def imgtable(lines, id, caption = nil, metric = nil)
  unless @chapter.image_bound?(id)
    warn "image not bound: #{id}", location: location
    image_dummy(id, caption, lines)
    return
  end

  puts %Q(<div id="#{normalize_id(id)}" class="imgtable image">)
  begin
    if caption_top?('table') && caption.present?
      table_header(id, caption)
    end

    imgtable_image(id, caption, metric)

    if !caption_top?('table') && caption.present?
      table_header(id, caption)
    end
  rescue KeyError
    app_error "no such table: #{id}"
  end

  puts '</div>'
end
imgtable_image(id, caption, metric) click to toggle source
# File lib/review/htmlbuilder.rb, line 799
def imgtable_image(id, caption, metric)
  metrics = parse_metric('html', metric)
  puts %Q(<img src="#{@chapter.image(id).path.sub(%r{\A\./}, '')}" alt="#{escape(compile_inline(caption))}"#{metrics} />)
end
important(lines, caption = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 314
def important(lines, caption = nil)
  captionblock('important', lines, caption)
end
indepimage(lines, id, caption = '', metric = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 846
    def indepimage(lines, id, caption = '', metric = nil)
      metrics = parse_metric('html', metric)
      caption = '' unless caption.present?
      caption_str = nil
      if caption.present?
        caption_str = <<-EOS
<p class="caption">
#{I18n.t('numberless_image')}#{I18n.t('caption_prefix')}#{compile_inline(caption)}
</p>
EOS
      end

      puts %Q(<div id="#{normalize_id(id)}" class="image">)
      if caption_top?('image') && caption.present?
        puts caption_str
      end
      begin
        puts %Q(<img src="#{@chapter.image(id).path.sub(%r{\A\./}, '')}" alt="#{escape(compile_inline(caption))}"#{metrics} />)
      rescue StandardError
        warn "image not bound: #{id}", location: location
        if lines
          puts %Q(<pre class="dummyimage">)
          lines.each do |line|
            puts detab(line)
          end
          puts '</pre>'
        end
      end

      if !caption_top?('image') && caption.present?
        puts caption_str
      end
      puts '</div>'
    end
Also aliased as: numberlessimage
info(lines, caption = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 302
def info(lines, caption = nil)
  captionblock('info', lines, caption)
end
inline_abbr(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1200
def inline_abbr(str)
  inline_asis(str, 'abbr')
end
inline_acronym(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1204
def inline_acronym(str)
  inline_asis(str, 'acronym')
end
inline_ami(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 995
def inline_ami(str)
  %Q(<span class="ami">#{escape(str)}</span>)
end
inline_asis(str, tag) click to toggle source
# File lib/review/htmlbuilder.rb, line 1196
def inline_asis(str, tag)
  %Q(<#{tag}>#{escape(str)}</#{tag}>)
end
inline_b(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 991
def inline_b(str)
  %Q(<b>#{escape(str)}</b>)
end
inline_balloon(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1306
def inline_balloon(str)
  %Q(<span class="balloon">#{escape_html(str)}</span>)
end
inline_bib(id) click to toggle source
# File lib/review/htmlbuilder.rb, line 1092
def inline_bib(id)
  %Q(<a href="#{@book.bib_file.gsub(/\.re\Z/, ".#{@book.config['htmlext']}")}#bib-#{normalize_id(id)}">[#{@chapter.bibpaper(id).number}]</a>)
rescue KeyError
  app_error "unknown bib: #{id}"
end
inline_big(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1236
def inline_big(str)
  inline_asis(str, 'big')
end
inline_bou(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 999
def inline_bou(str)
  %Q(<span class="bou">#{escape(str)}</span>)
end
inline_br(_str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1039
def inline_br(_str)
  '<br />'
end
inline_chap(id) click to toggle source
# File lib/review/htmlbuilder.rb, line 932
def inline_chap(id)
  if @book.config['chapterlink']
    %Q(<a href="./#{id}#{extname}">#{@book.chapter_index.number(id)}</a>)
  else
    @book.chapter_index.number(id)
  end
rescue KeyError
  app_error "unknown chapter: #{id}"
end
inline_chapref(id) click to toggle source
Calls superclass method ReVIEW::Builder#inline_chapref
# File lib/review/htmlbuilder.rb, line 921
def inline_chapref(id)
  title = super
  if @book.config['chapterlink']
    %Q(<a href="./#{id}#{extname}">#{title}</a>)
  else
    title
  end
rescue KeyError
  app_error "unknown chapter: #{id}"
end
inline_cite(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1208
def inline_cite(str)
  inline_asis(str, 'cite')
end
inline_code(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1023
def inline_code(str)
  if @book.htmlversion == 5
    %Q(<code class="inline-code tt">#{escape(str)}</code>)
  else
    %Q(<tt class="inline-code">#{escape(str)}</tt>)
  end
end
inline_column_chap(chapter, id) click to toggle source
# File lib/review/htmlbuilder.rb, line 1146
def inline_column_chap(chapter, id)
  if @book.config['chapterlink']
    %Q(<a href="#{chapter.id}#{extname}##{column_label(id, chapter)}" class="columnref">#{I18n.t('column', compile_inline(chapter.column(id).caption))}</a>)
  else
    I18n.t('column', compile_inline(chapter.column(id).caption))
  end
rescue KeyError
  app_error "unknown column: #{id}"
end
inline_comment(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1289
def inline_comment(str)
  if @book.config['draft']
    %Q(<span class="draft-comment">#{escape(str)}</span>)
  else
    ''
  end
end
inline_del(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1260
def inline_del(str)
  inline_asis(str, 'del')
end
inline_dfn(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1212
def inline_dfn(str)
  inline_asis(str, 'dfn')
end
inline_dtp(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1019
def inline_dtp(str)
  "<?dtp #{str} ?>"
end
inline_em(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1216
def inline_em(str)
  inline_asis(str, 'em')
end
inline_endnote(id) click to toggle source
# File lib/review/htmlbuilder.rb, line 963
def inline_endnote(id)
  %Q(<a id="endnoteb-#{normalize_id(id)}" href="#endnote-#{normalize_id(id)}" class="noteref" epub:type="noteref">#{I18n.t('html_endnote_refmark', @chapter.endnote(id).number)}</a>)
rescue KeyError
  app_error "unknown endnote: #{id}"
end
inline_eq(id) click to toggle source
Calls superclass method ReVIEW::Builder#inline_eq
# File lib/review/htmlbuilder.rb, line 1186
def inline_eq(id)
  str = super(id)
  chapter, id = extract_chapter_id(id)
  if @book.config['chapterlink']
    %Q(<span class="eqref"><a href="./#{chapter.id}#{extname}##{normalize_id(id)}">#{str}</a></span>)
  else
    %Q(<span class="eqref">#{str}</span>)
  end
end
inline_fn(id) click to toggle source
# File lib/review/htmlbuilder.rb, line 953
def inline_fn(id)
  if @book.config['epubversion'].to_i == 3
    %Q(<a id="fnb-#{normalize_id(id)}" href="#fn-#{normalize_id(id)}" class="noteref" epub:type="noteref">#{I18n.t('html_footnote_refmark', @chapter.footnote(id).number)}</a>)
  else
    %Q(<a id="fnb-#{normalize_id(id)}" href="#fn-#{normalize_id(id)}" class="noteref">*#{@chapter.footnote(id).number}</a>)
  end
rescue KeyError
  app_error "unknown footnote: #{id}"
end
inline_hd_chap(chap, id) click to toggle source
# File lib/review/htmlbuilder.rb, line 1098
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']
    anchor = 'h' + n.tr('.', '-')
    %Q(<a href="#{chap.id}#{extname}##{anchor}">#{str}</a>)
  else
    str
  end
rescue KeyError
  app_error "unknown headline: #{id}"
end
inline_hidx(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1035
def inline_hidx(str)
  %Q(<!-- IDX:#{escape_comment(escape(str))} -->)
end
inline_i(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 987
def inline_i(str)
  %Q(<i>#{escape(str)}</i>)
end
inline_icon(id) click to toggle source
# File lib/review/htmlbuilder.rb, line 1276
def inline_icon(id)
  begin
    %Q(<img src="#{@chapter.image(id).path.sub(%r{\A\./}, '')}" alt="[#{id}]" />)
  rescue StandardError
    warn "image not bound: #{id}", location: location
    %Q(<pre>missing image: #{id}</pre>)
  end
end
inline_idx(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1031
def inline_idx(str)
  %Q(#{escape(str)}<!-- IDX:#{escape_comment(escape(str))} -->)
end
inline_img(id) click to toggle source
Calls superclass method ReVIEW::Builder#inline_img
# File lib/review/htmlbuilder.rb, line 1176
def inline_img(id)
  str = super(id)
  chapter, id = extract_chapter_id(id)
  if @book.config['chapterlink']
    %Q(<span class="imgref"><a href="./#{chapter.id}#{extname}##{normalize_id(id)}">#{str}</a></span>)
  else
    %Q(<span class="imgref">#{str}</span>)
  end
end
inline_ins(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1264
def inline_ins(str)
  inline_asis(str, 'ins')
end
inline_kbd(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1220
def inline_kbd(str)
  inline_asis(str, 'kbd')
end
inline_labelref(idref) click to toggle source
# File lib/review/htmlbuilder.rb, line 911
def inline_labelref(idref)
  %Q(<a target='#{escape(idref)}'>「#{I18n.t('label_marker')}#{escape(idref)}」</a>)
end
Also aliased as: inline_ref
inline_list(id) click to toggle source
Calls superclass method ReVIEW::Builder#inline_list
# File lib/review/htmlbuilder.rb, line 1156
def inline_list(id)
  str = super(id)
  chapter, id = extract_chapter_id(id)
  if @book.config['chapterlink']
    %Q(<span class="listref"><a href="./#{chapter.id}#{extname}##{normalize_id(id)}">#{str}</a></span>)
  else
    %Q(<span class="listref">#{str}</span>)
  end
end
inline_m(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1043
def inline_m(str)
  if @book.config['math_format'] == 'mathml'
    begin
      require 'math_ml'
      require 'math_ml/symbol/character_reference'
    rescue LoadError
      app_error 'not found math_ml'
    end
    parser = MathML::LaTeX::Parser.new(symbol: MathML::Symbol::CharacterReference)
    %Q(<span class="equation">#{parser.parse(str, nil)}</span>)
  elsif @book.config['math_format'] == 'mathjax'
    %Q(<span class="equation">\\( #{str.gsub('<', '\lt{}').gsub('>', '\gt{}').gsub('&', '&amp;')} \\)</span>)
  elsif @book.config['math_format'] == 'imgmath'
    math_str = '$' + str + '$'
    key = Digest::SHA256.hexdigest(str)
    if @book.config.check_version('2', exception: false)
      img_path = @img_math.make_math_image(math_str, key)
      %Q(<span class="equation"><img src="#{img_path}" /></span>)
    else
      img_path = @img_math.defer_math_image(math_str, key)
      %Q(<span class="equation"><img src="#{img_path}" class="math_gen_#{key}" alt="#{escape(str)}" /></span>)
    end
  else
    %Q(<span class="equation">#{escape(str)}</span>)
  end
end
inline_pageref(id) click to toggle source
# File lib/review/htmlbuilder.rb, line 917
def inline_pageref(id)
  app_error "pageref op is unsupported on this builder: #{id}"
end
inline_raw(str) click to toggle source
Calls superclass method ReVIEW::Builder#inline_raw
# File lib/review/htmlbuilder.rb, line 1310
def inline_raw(str) # rubocop:disable Lint/UselessMethodDefinition
  super(str)
end
inline_recipe(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1272
def inline_recipe(str)
  %Q(<span class="recipe">「#{escape(str)}」</span>)
end
inline_ref(idref)
Alias for: inline_labelref
inline_samp(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1224
def inline_samp(str)
  inline_asis(str, 'samp')
end
inline_sec(id) click to toggle source
Calls superclass method ReVIEW::Builder#inline_sec
# File lib/review/htmlbuilder.rb, line 1115
def inline_sec(id)
  if @book.config['chapterlink']
    chap, id2 = extract_chapter_id(id)
    n = chap.headline_index.number(id2)
    anchor = 'h' + n.tr('.', '-')
    %Q(<a href="#{chap.id}#{extname}##{anchor}">#{super(id)}</a>)
  else
    super(id)
  end
rescue KeyError
  app_error "unknown headline: #{id}"
end
inline_sectitle(id) click to toggle source
Calls superclass method ReVIEW::Builder#inline_sectitle
# File lib/review/htmlbuilder.rb, line 1128
def inline_sectitle(id)
  if @book.config['chapterlink']
    chap, id2 = extract_chapter_id(id)
    anchor = 'h' + chap.headline_index.number(id2).tr('.', '-')
    %Q(<a href="#{chap.id}#{extname}##{anchor}">#{super(id)}</a>)
  else
    super(id)
  end
rescue KeyError
  app_error "unknown headline: #{id}"
end
inline_small(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1240
def inline_small(str)
  inline_asis(str, 'small')
end
inline_strong(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1228
def inline_strong(str)
  inline_asis(str, 'strong')
end
inline_sub(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1244
def inline_sub(str)
  inline_asis(str, 'sub')
end
inline_sup(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1248
def inline_sup(str)
  inline_asis(str, 'sup')
end
inline_table(id) click to toggle source
Calls superclass method ReVIEW::Builder#inline_table
# File lib/review/htmlbuilder.rb, line 1166
def inline_table(id)
  str = super(id)
  chapter, id = extract_chapter_id(id)
  if @book.config['chapterlink']
    %Q(<span class="tableref"><a href="./#{chapter.id}#{extname}##{normalize_id(id)}">#{str}</a></span>)
  else
    %Q(<span class="tableref">#{str}</span>)
  end
end
inline_tcy(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1297
def inline_tcy(str)
  # 縦中横用のtcy、uprightのCSSスタイルについては電書協ガイドラインを参照
  style = 'tcy'
  if str.size == 1 && str.match(/[[:ascii:]]/)
    style = 'upright'
  end
  %Q(<span class="#{style}">#{escape(str)}</span>)
end
inline_title(id) click to toggle source
Calls superclass method ReVIEW::Builder#inline_title
# File lib/review/htmlbuilder.rb, line 942
def inline_title(id)
  title = super
  if @book.config['chapterlink']
    %Q(<a href="./#{id}#{extname}">#{title}</a>)
  else
    title
  end
rescue KeyError
  app_error "unknown chapter: #{id}"
end
inline_tt(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1252
def inline_tt(str)
  if @book.htmlversion == 5
    %Q(<code class="tt">#{escape(str)}</code>)
  else
    %Q(<tt>#{escape(str)}</tt>)
  end
end
inline_ttb(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1011
def inline_ttb(str)
  if @book.htmlversion == 5
    %Q(<code class="tt"><b>#{escape(str)}</b></code>)
  else
    %Q(<tt><b>#{escape(str)}</b></tt>)
  end
end
inline_tti(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1003
def inline_tti(str)
  if @book.htmlversion == 5
    %Q(<code class="tt"><i>#{escape(str)}</i></code>)
  else
    %Q(<tt><i>#{escape(str)}</i></tt>)
  end
end
inline_u(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1268
def inline_u(str)
  %Q(<u>#{escape(str)}</u>)
end
inline_uchar(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1285
def inline_uchar(str)
  %Q(&#x#{str};)
end
inline_var(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1232
def inline_var(str)
  inline_asis(str, 'var')
end
label(id) click to toggle source
# File lib/review/htmlbuilder.rb, line 887
def label(id)
  puts %Q(<a id="#{normalize_id(id)}"></a>)
end
layoutfile() click to toggle source
# File lib/review/htmlbuilder.rb, line 62
def layoutfile
  if @book.config.maker == 'webmaker'
    htmldir = 'web/html'
    localfilename = 'layout-web.html.erb'
  else
    htmldir = 'html'
    localfilename = 'layout.html.erb'
  end
  htmlfilename = if @book.htmlversion == 5
                   File.join(htmldir, 'layout-html5.html.erb')
                 else
                   File.join(htmldir, 'layout-xhtml1.html.erb')
                 end

  layout_file = File.join(@book.basedir, 'layouts', localfilename)
  if !File.exist?(layout_file) && File.exist?(File.join(@book.basedir, 'layouts', 'layout.erb'))
    raise ReVIEW::ConfigError, 'layout.erb is obsoleted. Please use layout.html.erb.'
  end

  if File.exist?(layout_file)
    if ENV['REVIEW_SAFE_MODE'].to_i & 4 > 0
      warn %Q(user's layout is prohibited in safe mode. ignored.), location: location
      layout_file = File.expand_path(htmlfilename, ReVIEW::Template::TEMPLATE_DIR)
    end
  else
    layout_file = File.expand_path(htmlfilename, ReVIEW::Template::TEMPLATE_DIR)
  end
  layout_file
end
lead(lines)
Alias for: read
list(lines, id, caption, lang = nil) click to toggle source
Calls superclass method ReVIEW::Builder#list
# File lib/review/htmlbuilder.rb, line 456
def list(lines, id, caption, lang = nil)
  puts %Q(<div id="#{normalize_id(id)}" class="caption-code">)
  super(lines, id, caption, lang)
  puts '</div>'
end
list_body(_id, lines, lang) click to toggle source
# File lib/review/htmlbuilder.rb, line 470
def list_body(_id, lines, lang)
  class_names = ['list']
  lexer = lang
  class_names.push("language-#{lexer}") unless lexer.blank?
  class_names.push('highlight') if highlight?
  print %Q(<pre class="#{class_names.join(' ')}">)
  body = lines.inject('') { |i, j| i + detab(j) + "\n" }
  puts highlight(body: body, lexer: lexer, format: 'html')
  puts '</pre>'
end
list_header(id, caption, _lang) click to toggle source
# File lib/review/htmlbuilder.rb, line 462
def list_header(id, caption, _lang)
  if get_chap
    puts %Q(<p class="caption">#{I18n.t('list')}#{I18n.t('format_number_header', [get_chap, @chapter.list(id).number])}#{I18n.t('caption_prefix')}#{compile_inline(caption)}</p>)
  else
    puts %Q(<p class="caption">#{I18n.t('list')}#{I18n.t('format_number_header_without_chapter', [@chapter.list(id).number])}#{I18n.t('caption_prefix')}#{compile_inline(caption)}</p>)
  end
end
listnum(lines, id, caption, lang = nil) click to toggle source
Calls superclass method ReVIEW::Builder#listnum
# File lib/review/htmlbuilder.rb, line 501
def listnum(lines, id, caption, lang = nil)
  puts %Q(<div id="#{normalize_id(id)}" class="code">)
  super(lines, id, caption, lang)
  puts '</div>'
end
listnum_body(lines, lang) click to toggle source
# File lib/review/htmlbuilder.rb, line 507
def listnum_body(lines, lang)
  body = lines.inject('') { |i, j| i + detab(j) + "\n" }
  lexer = lang
  first_line_number = line_num
  hs = highlight(body: body, lexer: lexer, format: 'html', linenum: true,
                 options: { linenostart: first_line_number })

  if highlight?
    puts hs
  else
    class_names = ['list']
    class_names.push("language-#{lang}") unless lang.blank?
    print %Q(<pre class="#{class_names.join(' ')}">)
    hs.split("\n").each_with_index do |line, i|
      puts detab((i + first_line_number).to_s.rjust(2) + ': ' + line)
    end
    puts '</pre>'
  end
end
memo(lines, caption = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 294
def memo(lines, caption = nil)
  captionblock('memo', lines, caption)
end
nodisp_begin(level, label, caption) click to toggle source
# File lib/review/htmlbuilder.rb, line 220
def nodisp_begin(level, label, caption)
  @nonum_counter += 1
  puts '' if level > 1
  return unless caption.present?

  if label
    puts %Q(<a id="#{normalize_id(label)}" /><h#{level} id="#{normalize_id(label)}" hidden="true">#{compile_inline(caption)}</h#{level}>)
  else
    id = normalize_id("#{@chapter.name}_nonum#{@nonum_counter}")
    puts %Q(<a id="#{id}" /><h#{level} id="#{id}" hidden="true">#{compile_inline(caption)}</h#{level}>)
  end
end
nodisp_end(level) click to toggle source
# File lib/review/htmlbuilder.rb, line 233
def nodisp_end(level)
end
nofunc_text(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1314
def nofunc_text(str)
  escape(str)
end
noindent() click to toggle source
# File lib/review/htmlbuilder.rb, line 907
def noindent
  @noindent = true
end
nonum_begin(level, label, caption) click to toggle source
# File lib/review/htmlbuilder.rb, line 188
def nonum_begin(level, label, caption)
  @nonum_counter += 1
  puts if level > 1
  return unless caption.present?

  if label
    puts %Q(<h#{level} id="#{normalize_id(label)}">#{compile_inline(caption)}</h#{level}>)
  else
    id = normalize_id("#{@chapter.name}_nonum#{@nonum_counter}")
    puts %Q(<h#{level} id="#{id}">#{compile_inline(caption)}</h#{level}>)
  end
end
nonum_end(level) click to toggle source
# File lib/review/htmlbuilder.rb, line 201
def nonum_end(level)
end
note(lines, caption = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 365
def note(lines, caption = nil)
  captionblock('note', lines, caption)
end
notice(lines, caption = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 326
def notice(lines, caption = nil)
  captionblock('notice', lines, caption)
end
notoc_begin(level, label, caption) click to toggle source
# File lib/review/htmlbuilder.rb, line 204
def notoc_begin(level, label, caption)
  @nonum_counter += 1
  puts if level > 1
  return unless caption.present?

  if label
    puts %Q(<h#{level} id="#{normalize_id(label)}" notoc="true">#{compile_inline(caption)}</h#{level}>)
  else
    id = normalize_id("#{@chapter.name}_nonum#{@nonum_counter}")
    puts %Q(<h#{level} id="#{id}" notoc="true">#{compile_inline(caption)}</h#{level}>)
  end
end
notoc_end(level) click to toggle source
# File lib/review/htmlbuilder.rb, line 217
def notoc_end(level)
end
numberlessimage(lines, id, caption = '', metric = nil)
Alias for: indepimage
ol_begin() click to toggle source
# File lib/review/htmlbuilder.rb, line 403
def ol_begin
  if @ol_num
    puts %Q(<ol start="#{@ol_num}">) # it's OK in HTML5, but not OK in XHTML1.1
    @ol_num = nil
  else
    puts '<ol>'
  end
end
ol_end() click to toggle source
# File lib/review/htmlbuilder.rb, line 416
def ol_end
  puts '</ol>'
end
ol_item(lines, _num) click to toggle source
# File lib/review/htmlbuilder.rb, line 412
def ol_item(lines, _num)
  puts "<li>#{join_lines_to_paragraph(lines)}</li>"
end
olnum(num) click to toggle source
# File lib/review/htmlbuilder.rb, line 1338
def olnum(num)
  @ol_num = num.to_i
end
open_section(level) click to toggle source
# File lib/review/htmlbuilder.rb, line 96
def open_section(level)
  result = []

  while @section_stack.size > 0 && level <= @section_stack[-1]
    result << '</section>'
    @section_stack.pop
  end
  @section_stack.push(level)
  result << %Q(<section class="level#{level}">)

  return result.join("\n")
end
pagebreak() click to toggle source
# File lib/review/htmlbuilder.rb, line 895
def pagebreak
  puts %Q(<br class="pagebreak" />)
end
paragraph(lines) click to toggle source
# File lib/review/htmlbuilder.rb, line 436
def paragraph(lines)
  if @noindent
    puts %Q(<p class="noindent">#{join_lines_to_paragraph(lines)}</p>)
    @noindent = nil
  else
    puts "<p>#{join_lines_to_paragraph(lines)}</p>"
  end
end
parasep() click to toggle source
# File lib/review/htmlbuilder.rb, line 445
def parasep
  puts '<br />'
end
planning(lines, caption = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 306
def planning(lines, caption = nil)
  captionblock('planning', lines, caption)
end
point(lines, caption = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 334
def point(lines, caption = nil)
  captionblock('point', lines, caption)
end
post_paragraph() click to toggle source
# File lib/review/htmlbuilder.rb, line 36
def post_paragraph
  '</p>'
end
pre_paragraph() click to toggle source
# File lib/review/htmlbuilder.rb, line 32
def pre_paragraph
  '<p>'
end
quote(lines) click to toggle source
# File lib/review/htmlbuilder.rb, line 605
def quote(lines)
  blocked_lines = split_paragraph(lines)
  puts %Q(<blockquote>#{blocked_lines.join("\n")}</blockquote>)
end
read(lines) click to toggle source
# File lib/review/htmlbuilder.rb, line 449
def read(lines)
  blocked_lines = split_paragraph(lines)
  puts %Q(<div class="lead">\n#{blocked_lines.join("\n")}\n</div>)
end
Also aliased as: lead
ref_begin(level, label, caption) click to toggle source
# File lib/review/htmlbuilder.rb, line 265
def ref_begin(level, label, caption)
  print %Q(<div class="reference">)
  headline(level, label, caption)
end
ref_end(_level) click to toggle source
# File lib/review/htmlbuilder.rb, line 270
def ref_end(_level)
  puts '</div>'
end
result() click to toggle source
# File lib/review/htmlbuilder.rb, line 113
def result
  check_printendnotes

  # flush all `</section>`
  if use_section?
    print close_sections
  end

  # default XHTML header/footer
  @title = strip_html(compile_inline(@chapter.title))
  @body = solve_nest(@output.string)
  @language = @book.config['language']
  @stylesheets = @book.config['stylesheet']
  @next = @chapter.next_chapter
  @prev = @chapter.prev_chapter
  @next_title = @next ? compile_inline(@next.title) : ''
  @prev_title = @prev ? compile_inline(@prev.title) : ''

  if @book.config.maker == 'webmaker'
    @toc = ReVIEW::WEBTOCPrinter.book_to_string(@book)
  end

  if @book.config['math_format'] == 'mathjax'
    @javascripts.push(%Q(<script>MathJax = { tex: { inlineMath: [['\\\\(', '\\\\)']] }, svg: { fontCache: 'global' } };</script>))
    @javascripts.push(%Q(<script type="text/javascript" id="MathJax-script" async="true" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>))
  end

  ReVIEW::Template.load(layoutfile).result(binding)
end
result_metric(array) click to toggle source
# File lib/review/htmlbuilder.rb, line 689
def result_metric(array)
  attrs = {}
  array.each do |item|
    k = item.keys[0]
    if attrs[k]
      attrs[k] << item[k]
    else
      attrs[k] = [item[k]]
    end
  end
  ' ' + attrs.map { |k, v| %Q(#{k}="#{v.join(' ')}") }.join(' ')
end
security(lines, caption = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 318
def security(lines, caption = nil)
  captionblock('security', lines, caption)
end
shoot(lines, caption = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 338
def shoot(lines, caption = nil)
  captionblock('shoot', lines, caption)
end
solve_nest(s) click to toggle source
# File lib/review/htmlbuilder.rb, line 143
def solve_nest(s)
  check_nest
  s.gsub("</dd>\n</dl>\n\x01→dl←\x01", '').
    gsub("\x01→/dl←\x01", "</dd>\n</dl>←END\x01").
    gsub("</li>\n</ul>\n\x01→ul←\x01", '').
    gsub("\x01→/ul←\x01", "</li>\n</ul>←END\x01").
    gsub("</li>\n</ol>\n\x01→ol←\x01", '').
    gsub("\x01→/ol←\x01", "</li>\n</ol>←END\x01").
    gsub("</dl>←END\x01\n<dl>", '').
    gsub("</ul>←END\x01\n<ul>", '').
    gsub("</ol>←END\x01\n<ol>", '').
    gsub("←END\x01", '')
end
source(lines, caption = nil, lang = nil) click to toggle source
Calls superclass method ReVIEW::Builder#source
# File lib/review/htmlbuilder.rb, line 481
def source(lines, caption = nil, lang = nil)
  puts %Q(<div class="source-code">)
  super(lines, caption, lang)
  puts '</div>'
end
source_body(lines, lang) click to toggle source
# File lib/review/htmlbuilder.rb, line 493
def source_body(lines, lang)
  print %Q(<pre class="source">)
  body = lines.inject('') { |i, j| i + detab(j) + "\n" }
  lexer = lang
  puts highlight(body: body, lexer: lexer, format: 'html')
  puts '</pre>'
end
source_header(caption) click to toggle source
# File lib/review/htmlbuilder.rb, line 487
def source_header(caption)
  if caption.present?
    puts %Q(<p class="caption">#{compile_inline(caption)}</p>)
  end
end
sup_begin(level, label, caption) click to toggle source
# File lib/review/htmlbuilder.rb, line 274
def sup_begin(level, label, caption)
  print %Q(<div class="supplement">)
  headline(level, label, caption)
end
sup_end(_level) click to toggle source
# File lib/review/htmlbuilder.rb, line 279
def sup_end(_level)
  puts '</div>'
end
table(lines, id = nil, caption = nil) click to toggle source
Calls superclass method ReVIEW::Builder#table
# File lib/review/htmlbuilder.rb, line 734
def table(lines, id = nil, caption = nil)
  if id
    puts %Q(<div id="#{normalize_id(id)}" class="table">)
  else
    puts %Q(<div class="table">)
  end
  super(lines, id, caption)
  puts '</div>'
end
table_begin(_ncols) click to toggle source
# File lib/review/htmlbuilder.rb, line 754
def table_begin(_ncols)
  puts '<table>'
end
table_end() click to toggle source
# File lib/review/htmlbuilder.rb, line 770
def table_end
  puts '</table>'
end
table_header(id, caption) click to toggle source
# File lib/review/htmlbuilder.rb, line 744
def table_header(id, caption)
  if id.nil?
    puts %Q(<p class="caption">#{compile_inline(caption)}</p>)
  elsif get_chap
    puts %Q(<p class="caption">#{I18n.t('table')}#{I18n.t('format_number_header', [get_chap, @chapter.table(id).number])}#{I18n.t('caption_prefix')}#{compile_inline(caption)}</p>)
  else
    puts %Q(<p class="caption">#{I18n.t('table')}#{I18n.t('format_number_header_without_chapter', [@chapter.table(id).number])}#{I18n.t('caption_prefix')}#{compile_inline(caption)}</p>)
  end
end
talk(lines) click to toggle source
# File lib/review/htmlbuilder.rb, line 618
def talk(lines)
  puts %Q(<div class="talk">)
  blocked_lines = split_paragraph(lines)
  puts blocked_lines.join("\n")
  puts '</div>'
end
td(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 766
def td(str)
  "<td>#{str}</td>"
end
texequation(lines, id = nil, caption = '') click to toggle source
# File lib/review/htmlbuilder.rb, line 625
def texequation(lines, id = nil, caption = '')
  if id
    puts %Q(<div id="#{normalize_id(id)}" class="caption-equation">)
    texequation_header(id, caption) if caption_top?('equation')
  end

  texequation_body(lines)

  if id
    texequation_header(id, caption) unless caption_top?('equation')
    puts '</div>'
  end
end
texequation_body(lines) click to toggle source
# File lib/review/htmlbuilder.rb, line 647
def texequation_body(lines)
  puts %Q(<div class="equation">)
  if @book.config['math_format'] == 'mathml'
    begin
      require 'math_ml'
      require 'math_ml/symbol/character_reference'
    rescue LoadError
      app_error 'not found math_ml'
    end
    p = MathML::LaTeX::Parser.new(symbol: MathML::Symbol::CharacterReference)
    print p.parse(lines.join("\n") + "\n", true)
  elsif @book.config['math_format'] == 'mathjax'
    puts "$$#{lines.join("\n").gsub('<', '\lt{}').gsub('>', '\gt{}').gsub('&', '&amp;')}$$"
  elsif @book.config['math_format'] == 'imgmath'
    fontsize = @book.config['imgmath_options']['fontsize'].to_f
    lineheight = @book.config['imgmath_options']['lineheight'].to_f
    math_str = "\\begin{equation*}\n\\fontsize{#{fontsize}}{#{lineheight}}\\selectfont\n#{lines.join("\n")}\n\\end{equation*}\n"
    key = Digest::SHA256.hexdigest(math_str)
    if @book.config.check_version('2', exception: false)
      img_path = @img_math.make_math_image(math_str, key)
      puts %Q(<img src="#{img_path}" />)
    else
      img_path = @img_math.defer_math_image(math_str, key)
      puts %Q(<img src="#{img_path}" class="math_gen_#{key}" alt="#{escape(lines.join(' '))}" />)
    end
  else
    print '<pre>'
    puts escape(lines.join("\n"))
    puts '</pre>'
  end
  puts '</div>'
end
texequation_header(id, caption) click to toggle source
# File lib/review/htmlbuilder.rb, line 639
def texequation_header(id, caption)
  if get_chap
    puts %Q(<p class="caption">#{I18n.t('equation')}#{I18n.t('format_number_header', [get_chap, @chapter.equation(id).number])}#{I18n.t('caption_prefix')}#{compile_inline(caption)}</p>)
  else
    puts %Q(<p class="caption">#{I18n.t('equation')}#{I18n.t('format_number_header_without_chapter', [@chapter.equation(id).number])}#{I18n.t('caption_prefix')}#{compile_inline(caption)}</p>)
  end
end
text(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 1070
def text(str)
  str
end
th(str) click to toggle source
# File lib/review/htmlbuilder.rb, line 762
def th(str)
  "<th>#{str}</th>"
end
tip(lines, caption = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 298
def tip(lines, caption = nil)
  captionblock('tip', lines, caption)
end
tr(rows) click to toggle source
# File lib/review/htmlbuilder.rb, line 758
def tr(rows)
  puts "<tr>#{rows.join}</tr>"
end
ul_begin() click to toggle source
# File lib/review/htmlbuilder.rb, line 387
def ul_begin
  puts '<ul>'
end
ul_end() click to toggle source
# File lib/review/htmlbuilder.rb, line 399
def ul_end
  puts '</ul>'
end
ul_item_begin(lines) click to toggle source
# File lib/review/htmlbuilder.rb, line 391
def ul_item_begin(lines)
  print "<li>#{join_lines_to_paragraph(lines)}"
end
ul_item_end() click to toggle source
# File lib/review/htmlbuilder.rb, line 395
def ul_item_end
  puts '</li>'
end
use_section?() click to toggle source
# File lib/review/htmlbuilder.rb, line 92
def use_section?
  @use_section
end
warning(lines, caption = nil) click to toggle source
# File lib/review/htmlbuilder.rb, line 330
def warning(lines, caption = nil)
  captionblock('warning', lines, caption)
end
xcolumn_begin(level, label, caption) click to toggle source
# File lib/review/htmlbuilder.rb, line 256
def xcolumn_begin(level, label, caption)
  puts %Q(<div class="xcolumn">)
  headline(level, label, caption)
end
xcolumn_end(_level) click to toggle source
# File lib/review/htmlbuilder.rb, line 261
def xcolumn_end(_level)
  puts '</div>'
end
xmlns_ops_prefix() click to toggle source
# File lib/review/htmlbuilder.rb, line 157
def xmlns_ops_prefix
  if @book.config['epubversion'].to_i == 3
    'epub'
  else
    'ops'
  end
end

Private Instance Methods

builder_init_file() click to toggle source
Calls superclass method ReVIEW::Builder#builder_init_file
# File lib/review/htmlbuilder.rb, line 44
def builder_init_file
  super
  @noindent = nil
  @ol_num = nil
  @chapter.book.image_types = %w[.png .jpg .jpeg .gif .svg]
  @column = 0
  @nonum_counter = 0
  @first_line_num = nil
  @body_ext = nil
  @toc = nil
  @javascripts = []
  @section_stack = []

  maker = @book.config.maker || 'epubmaker' # for review-compile
  @use_section = @book.config[maker] && @book.config[maker]['use_section']
end
column_label(id, chapter = @chapter) click to toggle source
# File lib/review/htmlbuilder.rb, line 1140
def column_label(id, chapter = @chapter)
  num = chapter.column(id).number
  "column-#{num}"
end
quotedlist(lines, css_class) click to toggle source
# File lib/review/htmlbuilder.rb, line 596
def quotedlist(lines, css_class)
  print %Q(<blockquote><pre class="#{css_class}">)
  lines.each do |line|
    puts detab(line)
  end
  puts '</pre></blockquote>'
end