best(lines, caption = nil)
click to toggle source
def best(lines, caption = nil)
captionblock("best", lines, caption)
end
bibpaper(lines, id, caption)
click to toggle source
def bibpaper(lines, id, caption)
puts %Q[<div class="bibpaper">]
bibpaper_header id, caption
unless lines.empty?
bibpaper_bibpaper id, caption, lines
end
puts "</div>"
end
bibpaper_bibpaper(id, caption, lines)
click to toggle source
def bibpaper_bibpaper(id, caption, lines)
print split_paragraph(lines).join("")
end
box(lines, caption = nil)
click to toggle source
def box(lines, caption = nil)
puts %Q[<div class="syntax">]
puts %Q[<p class="caption">#{compile_inline(caption)}</p>] unless caption.nil?
print %Q[<pre class="syntax">]
lines.each {|line| puts detab(line) }
puts '</pre>'
puts '</div>'
end
bpo(lines)
click to toggle source
def bpo(lines)
puts "<bpo>"
lines.each do |line|
puts detab(line)
end
puts "</bpo>"
end
captionblock(type, lines, caption)
click to toggle source
def captionblock(type, lines, caption)
puts %Q[<div class="#{type}">]
unless caption.nil?
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
def caution(lines, caption = nil)
captionblock("caution", lines, caption)
end
centering(lines)
click to toggle source
def centering(lines)
puts split_paragraph(lines).join("\n").gsub("<p>", "<p class=\"center\">")
end
cmd(lines, caption = nil)
click to toggle source
def cmd(lines, caption = nil)
puts %Q[<div class="cmd-code">]
if 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>'
puts '</div>'
end
column_begin(level, label, caption)
click to toggle source
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 unless label.nil?
else
if label.nil?
puts %Q[<h#{level}>#{a_id}#{compile_inline(caption)}</h#{level}>]
else
puts %Q[<h#{level} id="#{normalize_id(label)}">#{a_id}#{compile_inline(caption)}</h#{level}>]
end
end
end
column_end(level)
click to toggle source
def column_end(level)
puts '</div>'
end
compile_href(url, label)
click to toggle source
def compile_href(url, label)
if @book.config["externallink"]
%Q(<a href="#{escape_html(url)}" class="link">#{label.nil? ? escape_html(url) : escape_html(label)}</a>)
else
label.nil? ? escape_html(url) : I18n.t('external_link', [escape_html(label), escape_html(url)])
end
end
compile_kw(word, alt)
click to toggle source
def compile_kw(word, alt)
%Q[<b class="kw">] +
if alt
then 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
def compile_ruby(base, ruby)
if @book.htmlversion == 5
%Q[<ruby>#{escape_html(base)}<rp>#{I18n.t("ruby_prefix")}</rp><rt>#{escape_html(ruby)}</rt><rp>#{I18n.t("ruby_postfix")}</rp></ruby>]
else
%Q[<ruby><rb>#{escape_html(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
def dd(lines)
puts "<dd>#{lines.join}</dd>"
end
dl_begin()
click to toggle source
def dl_begin
puts '<dl>'
end
dl_end()
click to toggle source
def dl_end
puts '</dl>'
end
doorquote(lines, ref)
click to toggle source
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 %Q[</blockquote>]
end
dt(line)
click to toggle source
def dt(line)
puts "<dt>#{line}</dt>"
end
emlist(lines, caption = nil, lang = nil)
click to toggle source
def emlist(lines, caption = nil, lang = nil)
puts %Q[<div class="emlist-code">]
if caption.present?
puts %Q(<p class="caption">#{compile_inline(caption)}</p>)
end
class_names = ["emlist"]
class_names.push("language-#{lang}") unless lang.blank?
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>'
puts '</div>'
end
emlistnum(lines, caption = nil, lang = nil)
click to toggle source
def emlistnum(lines, caption = nil, lang = nil)
puts %Q[<div class="emlistnum-code">]
if caption.present?
puts %Q(<p class="caption">#{compile_inline(caption)}</p>)
end
if highlight?
body = lines.inject(''){|i, j| i + detab(j) + "\n"}
lexer = lang
puts highlight(:body => body, :lexer => lexer, :format => 'html',
:options => {:linenos => 'inline', :nowrap => false})
else
class_names = ["emlist"]
class_names.push("language-#{lang}") unless lang.blank?
print %Q[<pre class="#{class_names.join(" ")}">]
lines.each_with_index do |line, i|
puts detab((i+1).to_s.rjust(2) + ": " + line)
end
puts '</pre>'
end
puts '</div>'
end
error(msg)
click to toggle source
def error(msg)
if @no_error
@errors.push [@location.filename, @location.lineno, msg]
puts "----ERROR: #{escape_html(msg)}----"
else
$stderr.puts "#{@location}: error: #{msg}"
end
end
error_messages()
click to toggle source
def error_messages
return '' if @errors.empty?
"<h2>Syntax Errors</h2>\n" +
"<ul>\n" +
@errors.map {|file, line, msg|
"<li>#{escape_html(file)}:#{line}: #{escape_html(msg.to_s)}</li>\n"
}.join('') +
"</ul>\n"
end
extname()
click to toggle source
def extname
".#{@book.config["htmlext"]}"
end
flushright(lines)
click to toggle source
def flushright(lines)
puts split_paragraph(lines).join("\n").gsub("<p>", "<p class=\"flushright\">")
end
handle_metric(str)
click to toggle source
def handle_metric(str)
if str =~ /\Ascale=([\d.]+)\Z/
return {'class' => sprintf("width-%03dper", ($1.to_f * 100).round)}
else
k, v = str.split('=', 2)
return {k => v.sub(/\A["']/, '').sub(/["']\Z/, '')}
end
end
headline(level, label, caption)
click to toggle source
def headline(level, label, caption)
prefix, anchor = headline_prefix(level)
unless prefix.nil?
prefix = %Q[<span class="secno">#{prefix}</span>]
end
puts '' if level > 1
a_id = ""
unless anchor.nil?
a_id = %Q[<a id="h#{anchor}"></a>]
end
if caption.empty?
puts a_id unless label.nil?
else
if label.nil?
puts %Q[<h#{level}>#{a_id}#{prefix}#{compile_inline(caption)}</h#{level}>]
else
puts %Q[<h#{level} id="#{normalize_id(label)}">#{a_id}#{prefix}#{compile_inline(caption)}</h#{level}>]
end
end
end
hr()
click to toggle source
image_dummy(id, caption, lines)
click to toggle source
def image_dummy(id, caption, lines)
puts %Q[<div id="#{normalize_id(id)}" class="image">]
puts %Q[<pre class="dummyimage">]
lines.each do |line|
puts detab(line)
end
puts %Q[</pre>]
image_header id, caption
puts %Q[</div>]
warn "no such image: #{id}"
end
image_ext()
click to toggle source
image_image(id, caption, metric)
click to toggle source
def image_image(id, caption, metric)
metrics = parse_metric("html", metric)
puts %Q[<div id="#{normalize_id(id)}" class="image">]
puts %Q[<img src="#{@chapter.image(id).path.sub(/\A\.\//, "")}" alt="#{escape_html(compile_inline(caption))}"#{metrics} />]
image_header id, caption
puts %Q[</div>]
end
imgtable(lines, id, caption = nil, metric = nil)
click to toggle source
def imgtable(lines, id, caption = nil, metric = nil)
if !@chapter.image(id).bound?
warn "image not bound: #{id}"
image_dummy id, caption, lines
return
end
puts %Q[<div id="#{normalize_id(id)}" class="imgtable image">]
begin
table_header id, caption unless caption.nil?
rescue KeyError
error "no such table: #{id}"
end
imgtable_image(id, caption, metric)
puts %Q[</div>]
end
imgtable_image(id, caption, metric)
click to toggle source
def imgtable_image(id, caption, metric)
metrics = parse_metric("html", metric)
puts %Q[<img src="#{@chapter.image(id).path.sub(/\A\.\//, "")}" alt="#{escape_html(compile_inline(caption))}"#{metrics} />]
end
important(lines, caption = nil)
click to toggle source
def important(lines, caption = nil)
captionblock("important", lines, caption)
end
indepimage(id, caption="", metric=nil)
click to toggle source
def indepimage(id, caption="", metric=nil)
metrics = parse_metric("html", metric)
caption = "" if caption.nil?
puts %Q[<div id="#{normalize_id(id)}" class="image">]
begin
puts %Q[<img src="#{@chapter.image(id).path.sub(/\A\.\//, "")}" alt="#{escape_html(compile_inline(caption))}"#{metrics} />]
rescue
puts %Q[<pre>missing image: #{id}</pre>]
end
unless caption.empty?
puts %Q[<p class="caption">]
puts %Q[#{I18n.t("numberless_image")}#{I18n.t("caption_prefix")}#{compile_inline(caption)}]
puts %Q[</p>]
end
puts %Q[</div>]
end
info(lines, caption = nil)
click to toggle source
def info(lines, caption = nil)
captionblock("info", lines, caption)
end
inline_abbr(str)
click to toggle source
def inline_abbr(str)
inline_asis(str, "abbr")
end
inline_acronym(str)
click to toggle source
def inline_acronym(str)
inline_asis(str, "acronym")
end
inline_ami(str)
click to toggle source
def inline_ami(str)
%Q(<span class="ami">#{escape_html(str)}</span>)
end
inline_asis(str, tag)
click to toggle source
def inline_asis(str, tag)
%Q(<#{tag}>#{escape_html(str)}</#{tag}>)
end
inline_b(str)
click to toggle source
def inline_b(str)
%Q(<b>#{escape_html(str)}</b>)
end
inline_bib(id)
click to toggle source
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>)
end
inline_big(str)
click to toggle source
def inline_big(str)
inline_asis(str, "big")
end
inline_bou(str)
click to toggle source
def inline_bou(str)
%Q(<span class="bou">#{escape_html(str)}</span>)
end
inline_br(str)
click to toggle source
def inline_br(str)
%Q(<br />)
end
inline_chap(id)
click to toggle source
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
error "unknown chapter: #{id}"
nofunc_text("[UnknownChapter:#{id}]")
end
inline_chapref(id)
click to toggle source
def inline_chapref(id)
title = super
if @book.config["chapterlink"]
%Q(<a href="./#{id}#{extname}">#{title}</a>)
else
title
end
rescue KeyError
error "unknown chapter: #{id}"
nofunc_text("[UnknownChapter:#{id}]")
end
inline_cite(str)
click to toggle source
def inline_cite(str)
inline_asis(str, "cite")
end
inline_code(str)
click to toggle source
def inline_code(str)
if @book.htmlversion == 5
%Q(<code class="inline-code tt">#{escape_html(str)}</code>)
else
%Q(<tt class="inline-code">#{escape_html(str)}</tt>)
end
end
inline_column_chap(chapter, id)
click to toggle source
def inline_column_chap(chapter, id)
if @book.config["chapterlink"]
%Q(<a href="\##{column_label(id)}" class="columnref">#{I18n.t("column", escape_html(chapter.column(id).caption))}</a>)
else
I18n.t("column", escape_html(chapter.column(id).caption))
end
end
inline_del(str)
click to toggle source
def inline_del(str)
inline_asis(str, "del")
end
inline_dfn(str)
click to toggle source
def inline_dfn(str)
inline_asis(str, "dfn")
end
inline_dtp(str)
click to toggle source
def inline_dtp(str)
"<?dtp #{str} ?>"
end
inline_em(str)
click to toggle source
def inline_em(str)
inline_asis(str, "em")
end
inline_fn(id)
click to toggle source
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">*#{@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
end
inline_hd_chap(chap, id)
click to toggle source
def inline_hd_chap(chap, id)
n = chap.headline_index.number(id)
if chap.number and @book.config["secnolevel"] >= n.split('.').size
str = I18n.t("chapter_quote", "#{n} #{compile_inline(chap.headline(id).caption)}")
else
str = I18n.t("chapter_quote", compile_inline(chap.headline(id).caption))
end
if @book.config["chapterlink"]
anchor = "h"+n.gsub(/\./, "-")
%Q(<a href="#{chap.id}#{extname}##{anchor}">#{str}</a>)
else
str
end
end
inline_hidx(str)
click to toggle source
def inline_hidx(str)
%Q(<!-- IDX:#{escape_comment(escape_html(str))} -->)
end
inline_i(str)
click to toggle source
def inline_i(str)
%Q(<i>#{escape_html(str)}</i>)
end
inline_icon(id)
click to toggle source
def inline_icon(id)
begin
%Q[<img src="#{@chapter.image(id).path.sub(/\A\.\//, "")}" alt="[#{id}]" />]
rescue
%Q[<pre>missing image: #{id}</pre>]
end
end
inline_idx(str)
click to toggle source
def inline_idx(str)
%Q(#{escape_html(str)}<!-- IDX:#{escape_comment(escape_html(str))} -->)
end
inline_img(id)
click to toggle source
def inline_img(id)
chapter, id = extract_chapter_id(id)
str = nil
if get_chap(chapter).nil?
str = "#{I18n.t("image")}#{I18n.t("format_number_without_chapter", [chapter.image(id).number])}"
else
str = "#{I18n.t("image")}#{I18n.t("format_number", [get_chap(chapter), chapter.image(id).number])}"
end
if @book.config["chapterlink"]
%Q(<a href="./#{chapter.id}#{extname}##{normalize_id(id)}">#{str}</a>)
else
str
end
rescue KeyError
error "unknown image: #{id}"
nofunc_text("[UnknownImage:#{id}]")
end
inline_ins(str)
click to toggle source
def inline_ins(str)
inline_asis(str, "ins")
end
inline_kbd(str)
click to toggle source
def inline_kbd(str)
inline_asis(str, "kbd")
end
inline_labelref(idref)
click to toggle source
def inline_labelref(idref)
%Q[<a target='#{escape_html(idref)}'>「#{I18n.t("label_marker")}#{escape_html(idref)}」</a>]
end
inline_list(id)
click to toggle source
def inline_list(id)
chapter, id = extract_chapter_id(id)
if get_chap(chapter).nil?
"#{I18n.t("list")}#{I18n.t("format_number_without_header", [chapter.list(id).number])}"
else
"#{I18n.t("list")}#{I18n.t("format_number", [get_chap(chapter), chapter.list(id).number])}"
end
rescue KeyError
error "unknown list: #{id}"
nofunc_text("[UnknownList:#{id}]")
end
inline_m(str)
click to toggle source
def inline_m(str)
if @book.config["mathml"]
require 'math_ml'
require 'math_ml/symbol/character_reference'
parser = MathML::LaTeX::Parser.new(:symbol => MathML::Symbol::CharacterReference)
%Q[<span class="equation">#{parser.parse(str, nil)}</span>]
else
%Q[<span class="equation">#{escape_html(str)}</span>]
end
end
inline_raw(str)
click to toggle source
def inline_raw(str)
super(str)
end
inline_recipe(str)
click to toggle source
def inline_recipe(str)
%Q(<span class="recipe">「#{escape_html(str)}」</span>)
end
inline_samp(str)
click to toggle source
def inline_samp(str)
inline_asis(str, "samp")
end
inline_small(str)
click to toggle source
def inline_small(str)
inline_asis(str, "small")
end
inline_strong(str)
click to toggle source
def inline_strong(str)
inline_asis(str, "strong")
end
inline_sub(str)
click to toggle source
def inline_sub(str)
inline_asis(str, "sub")
end
inline_sup(str)
click to toggle source
def inline_sup(str)
inline_asis(str, "sup")
end
inline_table(id)
click to toggle source
def inline_table(id)
chapter, id = extract_chapter_id(id)
str = nil
if get_chap(chapter).nil?
str = "#{I18n.t("table")}#{I18n.t("format_number_without_chapter", [chapter.table(id).number])}"
else
str = "#{I18n.t("table")}#{I18n.t("format_number", [get_chap(chapter), chapter.table(id).number])}"
end
if @book.config["chapterlink"]
%Q(<a href="./#{chapter.id}#{extname}##{id}">#{str}</a>)
else
str
end
rescue KeyError
error "unknown table: #{id}"
nofunc_text("[UnknownTable:#{id}]")
end
inline_tcy(str)
click to toggle source
def inline_tcy(str)
style = "tcy"
style = "upright" if str.size == 1 && str.match(/[[:ascii:]]/)
%Q[<span class="#{style}">#{escape_html(str)}</span>]
end
inline_title(id)
click to toggle source
def inline_title(id)
title = super
if @book.config["chapterlink"]
%Q(<a href="./#{id}#{extname}">#{title}</a>)
else
title
end
rescue KeyError
error "unknown chapter: #{id}"
nofunc_text("[UnknownChapter:#{id}]")
end
inline_tt(str)
click to toggle source
def inline_tt(str)
if @book.htmlversion == 5
%Q(<code class="tt">#{escape_html(str)}</code>)
else
%Q(<tt>#{escape_html(str)}</tt>)
end
end
inline_ttb(str)
click to toggle source
def inline_ttb(str)
if @book.htmlversion == 5
%Q(<code class="tt"><b>#{escape_html(str)}</b></code>)
else
%Q(<tt><b>#{escape_html(str)}</b></tt>)
end
end
inline_tti(str)
click to toggle source
def inline_tti(str)
if @book.htmlversion == 5
%Q(<code class="tt"><i>#{escape_html(str)}</i></code>)
else
%Q(<tt><i>#{escape_html(str)}</i></tt>)
end
end
inline_u(str)
click to toggle source
def inline_u(str)
%Q(<u>#{escape_html(str)}</u>)
end
inline_uchar(str)
click to toggle source
def inline_uchar(str)
%Q(&#x#{str};)
end
inline_var(str)
click to toggle source
def inline_var(str)
inline_asis(str, "var")
end
label(id)
click to toggle source
def label(id)
puts %Q(<a id="#{normalize_id(id)}"></a>)
end
linebreak()
click to toggle source
def linebreak
puts "<br />"
end
list(lines, id, caption, lang = nil)
click to toggle source
def list(lines, id, caption, lang = nil)
puts %Q[<div class="caption-code">]
begin
list_header id, caption, lang
rescue KeyError
error "no such list: #{id}"
end
list_body id, lines, lang
puts '</div>'
end
list_body(id, lines, lang)
click to toggle source
def list_body(id, lines, lang)
id ||= ''
class_names = ["list"]
lexer = lang || File.extname(id).gsub(/\./, '')
class_names.push("language-#{lexer}") unless lexer.blank?
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
listnum(lines, id, caption, lang = nil)
click to toggle source
def listnum(lines, id, caption, lang = nil)
puts %Q[<div class="code">]
begin
list_header id, caption, lang
rescue KeyError
error "no such list: #{id}"
end
listnum_body lines, lang
puts '</div>'
end
listnum_body(lines, lang)
click to toggle source
def listnum_body(lines, lang)
if highlight?
body = lines.inject(''){|i, j| i + detab(j) + "\n"}
lexer = lang
puts highlight(:body => body, :lexer => lexer, :format => 'html',
:options => {:linenos => 'inline', :nowrap => false})
else
class_names = ["list"]
class_names.push("language-#{lang}") unless lang.blank?
print %Q[<pre class="#{class_names.join(" ")}">]
lines.each_with_index do |line, i|
puts detab((i+1).to_s.rjust(2) + ": " + line)
end
puts '</pre>'
end
end
memo(lines, caption = nil)
click to toggle source
def memo(lines, caption = nil)
captionblock("memo", lines, caption)
end
messages()
click to toggle source
def messages
error_messages() + warning_messages()
end
nodisp_begin(level, label, caption)
click to toggle source
def nodisp_begin(level, label, caption)
@nonum_counter += 1
puts '' if level > 1
unless caption.empty?
if label.nil?
id = normalize_id("#{@chapter.name}_nonum#{@nonum_counter}")
puts %Q[<a id="#{id}" /><h#{level} id="#{id}" hidden="true">#{compile_inline(caption)}</h#{level}>]
else
puts %Q[<a id="#{normalize_id(label)}" /><h#{level} id="#{normalize_id(label)}" hidden="true">#{compile_inline(caption)}</h#{level}>]
end
end
end
nodisp_end(level)
click to toggle source
def nodisp_end(level)
end
nofunc_text(str)
click to toggle source
def nofunc_text(str)
escape_html(str)
end
noindent()
click to toggle source
def noindent
@noindent = true
end
nonum_begin(level, label, caption)
click to toggle source
def nonum_begin(level, label, caption)
@nonum_counter += 1
puts '' if level > 1
unless caption.empty?
if label.nil?
id = normalize_id("#{@chapter.name}_nonum#{@nonum_counter}")
puts %Q[<h#{level} id="#{id}">#{compile_inline(caption)}</h#{level}>]
else
puts %Q[<h#{level} id="#{normalize_id(label)}">#{compile_inline(caption)}</h#{level}>]
end
end
end
nonum_end(level)
click to toggle source
note(lines, caption = nil)
click to toggle source
def note(lines, caption = nil)
captionblock("note", lines, caption)
end
notice(lines, caption = nil)
click to toggle source
def notice(lines, caption = nil)
captionblock("notice", lines, caption)
end
notoc_begin(level, label, caption)
click to toggle source
def notoc_begin(level, label, caption)
@nonum_counter += 1
puts '' if level > 1
unless caption.empty?
if label.nil?
id = normalize_id("#{@chapter.name}_nonum#{@nonum_counter}")
puts %Q[<h#{level} id="#{id}" notoc="true">#{compile_inline(caption)}</h#{level}>]
else
puts %Q[<h#{level} id="#{normalize_id(label)}" notoc="true">#{compile_inline(caption)}</h#{level}>]
end
end
end
notoc_end(level)
click to toggle source
numberlessimage(id, caption="", metric=nil)
ol_begin()
click to toggle source
def ol_begin
if @ol_num
puts "<ol start=\"#{@ol_num}\">"
@ol_num = nil
else
puts '<ol>'
end
end
ol_end()
click to toggle source
def ol_end
puts '</ol>'
end
ol_item(lines, num)
click to toggle source
def ol_item(lines, num)
puts "<li>#{lines.join}</li>"
end
olnum(num)
click to toggle source
def olnum(num)
@ol_num = num.to_i
end
pagebreak()
click to toggle source
def pagebreak
puts %Q(<br class="pagebreak" />)
end
paragraph(lines)
click to toggle source
def paragraph(lines)
if @noindent.nil?
puts "<p>#{lines.join}</p>"
else
puts %Q[<p class="noindent">#{lines.join}</p>]
@noindent = nil
end
end
parasep()
click to toggle source
def parasep
puts '<br />'
end
planning(lines, caption = nil)
click to toggle source
def planning(lines, caption = nil)
captionblock("planning", lines, caption)
end
point(lines, caption = nil)
click to toggle source
def point(lines, caption = nil)
captionblock("point", lines, caption)
end
post_paragraph()
click to toggle source
def post_paragraph
'</p>'
end
pre_paragraph()
click to toggle source
def pre_paragraph
'<p>'
end
quote(lines)
click to toggle source
def quote(lines)
blocked_lines = split_paragraph(lines)
puts "<blockquote>#{blocked_lines.join("\n")}</blockquote>"
end
read(lines)
click to toggle source
def read(lines)
blocked_lines = split_paragraph(lines)
puts %Q[<div class="lead">\n#{blocked_lines.join("\n")}\n</div>]
end
ref_begin(level, label, caption)
click to toggle source
def ref_begin(level, label, caption)
print %Q[<div class="reference">]
headline(level, label, caption)
end
ref_end(level)
click to toggle source
def ref_end(level)
puts '</div>'
end
result()
click to toggle source
def result
if @book.config.maker == "webmaker"
htmldir = "web/html"
localfilename = "layout-web.html.erb"
else
htmldir = "html"
localfilename = "layout.html.erb"
end
if @book.htmlversion == 5
htmlfilename = File.join(htmldir, "layout-html5.html.erb")
else
htmlfilename = 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 "user's layout is prohibited in safe mode. ignored."
layout_file = File.expand_path(htmlfilename, ReVIEW::Template::TEMPLATE_DIR)
end
else
layout_file = File.expand_path(htmlfilename, ReVIEW::Template::TEMPLATE_DIR)
end
@error_messages = error_messages
@warning_messages = warning_messages
@title = strip_html(compile_inline(@chapter.title))
@body = @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
tmpl = ReVIEW::Template.load(layout_file)
tmpl.result(binding)
end
result_metric(array)
click to toggle source
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
def security(lines, caption = nil)
captionblock("security", lines, caption)
end
shoot(lines, caption = nil)
click to toggle source
def shoot(lines, caption = nil)
captionblock("shoot", lines, caption)
end
source(lines, caption = nil, lang = nil)
click to toggle source
def source(lines, caption = nil, lang = nil)
puts %Q[<div class="source-code">]
source_header caption
source_body caption, lines, lang
puts '</div>'
end
source_body(id, lines, lang)
click to toggle source
def source_body(id, lines, lang)
id ||= ''
print %Q[<pre class="source">]
body = lines.inject(''){|i, j| i + detab(j) + "\n"}
lexer = lang || File.extname(id).gsub(/\./, '')
puts highlight(:body => body, :lexer => lexer, :format => 'html')
puts '</pre>'
end
sup_begin(level, label, caption)
click to toggle source
def sup_begin(level, label, caption)
print %Q[<div class="supplement">]
headline(level, label, caption)
end
sup_end(level)
click to toggle source
def sup_end(level)
puts '</div>'
end
table(lines, id = nil, caption = nil)
click to toggle source
def table(lines, id = nil, caption = nil)
rows = []
sepidx = nil
lines.each_with_index do |line, idx|
if /\A[\=\-]{12}/ =~ line
sepidx ||= idx
next
end
rows.push line.strip.split(/\t+/).map {|s| s.sub(/\A\./, '') }
end
rows = adjust_n_cols(rows)
if id
puts %Q[<div id="#{normalize_id(id)}" class="table">]
else
puts %Q[<div class="table">]
end
begin
table_header id, caption unless caption.nil?
rescue KeyError
error "no such table: #{id}"
end
table_begin rows.first.size
return if rows.empty?
if sepidx
sepidx.times do
tr rows.shift.map {|s| th(s) }
end
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
table_end
puts %Q[</div>]
end
table_begin(ncols)
click to toggle source
def table_begin(ncols)
puts '<table>'
end
table_end()
click to toggle source
def table_end
puts '</table>'
end
talk(lines)
click to toggle source
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
def td(str)
"<td>#{str}</td>"
end
texequation(lines)
click to toggle source
def texequation(lines)
puts %Q[<div class="equation">]
if @book.config["mathml"]
require 'math_ml'
require 'math_ml/symbol/character_reference'
p = MathML::LaTeX::Parser.new(:symbol=>MathML::Symbol::CharacterReference)
puts p.parse(unescape_html(lines.join("\n")), true)
else
print '<pre>'
puts "#{lines.join("\n")}"
puts '</pre>'
end
puts '</div>'
end
text(str)
click to toggle source
th(str)
click to toggle source
def th(str)
"<th>#{str}</th>"
end
tip(lines, caption = nil)
click to toggle source
def tip(lines, caption = nil)
captionblock("tip", lines, caption)
end
tr(rows)
click to toggle source
def tr(rows)
puts "<tr>#{rows.join}</tr>"
end
tsize(str)
click to toggle source
ul_begin()
click to toggle source
def ul_begin
puts '<ul>'
end
ul_end()
click to toggle source
def ul_end
puts '</ul>'
end
ul_item(lines)
click to toggle source
def ul_item(lines)
puts "<li>#{lines.join}</li>"
end
ul_item_begin(lines)
click to toggle source
def ul_item_begin(lines)
print "<li>#{lines.join}"
end
ul_item_end()
click to toggle source
def ul_item_end
puts "</li>"
end
warn(msg)
click to toggle source
def warn(msg)
if @no_error
@warns.push [@location.filename, @location.lineno, msg]
puts "----WARNING: #{escape_html(msg)}----"
else
$stderr.puts "#{@location}: warning: #{msg}"
end
end
warning(lines, caption = nil)
click to toggle source
def warning(lines, caption = nil)
captionblock("warning", lines, caption)
end
warning_messages()
click to toggle source
def warning_messages
return '' if @warns.empty?
"<h2>Warnings</h2>\n" +
"<ul>\n" +
@warns.map {|file, line, msg|
"<li>#{escape_html(file)}:#{line}: #{escape_html(msg)}</li>\n"
}.join('') +
"</ul>\n"
end
xcolumn_begin(level, label, caption)
click to toggle source
def xcolumn_begin(level, label, caption)
puts %Q[<div class="xcolumn">]
headline(level, label, caption)
end
xcolumn_end(level)
click to toggle source
def xcolumn_end(level)
puts '</div>'
end
xmlns_ops_prefix()
click to toggle source
def xmlns_ops_prefix
if @book.config["epubversion"].to_i == 3
"epub"
else
"ops"
end
end