class ReVIEW::HTMLBuilder
Public Instance Methods
best(lines, caption = nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 284 def best(lines, caption = nil) captionblock("best", lines, caption) end
bibpaper(lines, id, caption)
click to toggle source
# File lib/review/htmlbuilder.rb, line 931 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
# File lib/review/htmlbuilder.rb, line 947 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 940 def bibpaper_header(id, caption) print %Q(<a id="bib-#{normalize_id(id)}">) print "[#{@chapter.bibpaper(id).number}]" print %Q(</a>) puts " #{compile_inline(caption)}" end
box(lines, caption = nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 316 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
# File lib/review/htmlbuilder.rb, line 782 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 258 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
# File lib/review/htmlbuilder.rb, line 296 def caution(lines, caption = nil) captionblock("caution", lines, caption) end
centering(lines)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1165 def centering(lines) puts split_paragraph(lines).join("\n").gsub("<p>", "<p class=\"center\">") end
cmd(lines, caption = nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 525 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
# File lib/review/htmlbuilder.rb, line 208 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 # headline(level, label, caption) end
column_end(level)
click to toggle source
# File lib/review/htmlbuilder.rb, line 227 def column_end(level) puts '</div>' end
comment(lines, comment = nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 729 def comment(lines, comment = nil) lines ||= [] lines.unshift comment unless comment.blank? if @book.config["draft"] str = lines.join("<br />") puts %Q(<div class="draft-comment">#{escape_html(str)}</div>) end end
compile_href(url, label)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1153 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
# File lib/review/htmlbuilder.rb, line 851 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
# File lib/review/htmlbuilder.rb, line 843 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
# File lib/review/htmlbuilder.rb, line 370 def dd(lines) puts "<dd>#{lines.join}</dd>" end
dl_begin()
click to toggle source
# File lib/review/htmlbuilder.rb, line 362 def dl_begin puts '<dl>' end
dl_end()
click to toggle source
# File lib/review/htmlbuilder.rb, line 374 def dl_end puts '</dl>' end
doorquote(lines, ref)
click to toggle source
# File lib/review/htmlbuilder.rb, line 552 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
# File lib/review/htmlbuilder.rb, line 366 def dt(line) puts "<dt>#{line}</dt>" end
emlist(lines, caption = nil, lang = nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 482 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? 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>' puts '</div>' end
emlistnum(lines, caption = nil, lang = nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 498 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 first_line_number = get_line_num puts highlight(:body => body, :lexer => lexer, :format => 'html', :linenum => true, :options => {:linenostart => first_line_number}) 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(" ")}">] first_line_num = get_line_num lines.each_with_index do |line, i| puts detab((i+first_line_num).to_s.rjust(2) + ": " + line) end puts '</pre>' end puts '</div>' end
error(msg)
click to toggle source
# File lib/review/htmlbuilder.rb, line 130 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
extname()
click to toggle source
# File lib/review/htmlbuilder.rb, line 39 def extname ".#{@book.config["htmlext"]}" end
flushright(lines)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1161 def flushright(lines) puts split_paragraph(lines).join("\n").gsub("<p>", "<p class=\"flushright\">") end
footnote(id, str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 738 def footnote(id, str) if @book.config["epubversion"].to_i == 3 puts %Q(<div class="footnote" epub:type="footnote" id="fn-#{normalize_id(id)}"><p class="footnote">[*#{@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 582 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
# File lib/review/htmlbuilder.rb, line 139 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
# File lib/review/htmlbuilder.rb, line 766 def hr puts "<hr />" end
image_dummy(id, caption, lines)
click to toggle source
# File lib/review/htmlbuilder.rb, line 612 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
# File lib/review/htmlbuilder.rb, line 1169 def image_ext "png" end
image_header(id, caption)
click to toggle source
# File lib/review/htmlbuilder.rb, line 624 def image_header(id, caption) puts %Q[<p class="caption">] if get_chap.nil? puts %Q[#{I18n.t("image")}#{I18n.t("format_number_header_without_chapter", [@chapter.image(id).number])}#{I18n.t("caption_prefix")}#{compile_inline(caption)}] else puts %Q[#{I18n.t("image")}#{I18n.t("format_number_header", [get_chap, @chapter.image(id).number])}#{I18n.t("caption_prefix")}#{compile_inline(caption)}] end puts %Q[</p>] end
image_image(id, caption, metric)
click to toggle source
# File lib/review/htmlbuilder.rb, line 604 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
# File lib/review/htmlbuilder.rb, line 705 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
# File lib/review/htmlbuilder.rb, line 724 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
# File lib/review/htmlbuilder.rb, line 288 def important(lines, caption = nil) captionblock("important", lines, caption) end
indepimage(id, caption="", metric=nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 746 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
Also aliased as: numberlessimage
info(lines, caption = nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 276 def info(lines, caption = nil) captionblock("info", lines, caption) end
inline_abbr(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1042 def inline_abbr(str) inline_asis(str, "abbr") end
inline_acronym(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1046 def inline_acronym(str) inline_asis(str, "acronym") end
inline_ami(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 868 def inline_ami(str) %Q(<span class="ami">#{escape_html(str)}</span>) end
inline_asis(str, tag)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1038 def inline_asis(str, tag) %Q(<#{tag}>#{escape_html(str)}</#{tag}>) end
inline_b(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 864 def inline_b(str) %Q(<b>#{escape_html(str)}</b>) end
inline_bib(id)
click to toggle source
# File lib/review/htmlbuilder.rb, line 951 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
# File lib/review/htmlbuilder.rb, line 1078 def inline_big(str) inline_asis(str, "big") end
inline_bou(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 872 def inline_bou(str) %Q(<span class="bou">#{escape_html(str)}</span>) end
inline_br(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 912 def inline_br(str) %Q(<br />) end
inline_chap(id)
click to toggle source
# File lib/review/htmlbuilder.rb, line 812 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
Calls superclass method
ReVIEW::Builder#inline_chapref
# File lib/review/htmlbuilder.rb, line 800 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
# File lib/review/htmlbuilder.rb, line 1050 def inline_cite(str) inline_asis(str, "cite") end
inline_code(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 896 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
# File lib/review/htmlbuilder.rb, line 976 def inline_column_chap(chapter, id) if @book.config["chapterlink"] %Q(<a href="\##{column_label(id)}" class="columnref">#{I18n.t("column", compile_inline(chapter.column(id).caption))}</a>) else I18n.t("column", compile_inline(chapter.column(id).caption)) end end
inline_comment(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1130 def inline_comment(str) if @book.config["draft"] %Q(<span class="draft-comment">#{escape_html(str)}</span>) else "" end end
inline_del(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1102 def inline_del(str) inline_asis(str, "del") end
inline_dfn(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1054 def inline_dfn(str) inline_asis(str, "dfn") end
inline_dtp(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 892 def inline_dtp(str) "<?dtp #{str} ?>" end
inline_em(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1058 def inline_em(str) inline_asis(str, "em") end
inline_fn(id)
click to toggle source
# File lib/review/htmlbuilder.rb, line 835 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
# File lib/review/htmlbuilder.rb, line 955 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
# File lib/review/htmlbuilder.rb, line 908 def inline_hidx(str) %Q(<!-- IDX:#{escape_comment(escape_html(str))} -->) end
inline_i(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 860 def inline_i(str) %Q(<i>#{escape_html(str)}</i>) end
inline_icon(id)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1118 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
# File lib/review/htmlbuilder.rb, line 904 def inline_idx(str) %Q(#{escape_html(str)}<!-- IDX:#{escape_comment(escape_html(str))} -->) end
inline_img(id)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1020 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(<span class="imgref"><a href="./#{chapter.id}#{extname}##{normalize_id(id)}">#{str}</a></span>) else %Q(<span class="imgref">#{str}</span>) end rescue KeyError error "unknown image: #{id}" nofunc_text("[UnknownImage:#{id}]") end
inline_ins(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1106 def inline_ins(str) inline_asis(str, "ins") end
inline_kbd(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1062 def inline_kbd(str) inline_asis(str, "kbd") end
inline_labelref(idref)
click to toggle source
# File lib/review/htmlbuilder.rb, line 794 def inline_labelref(idref) %Q[<a target='#{escape_html(idref)}'>「#{I18n.t("label_marker")}#{escape_html(idref)}」</a>] end
Also aliased as: inline_ref
inline_list(id)
click to toggle source
# File lib/review/htmlbuilder.rb, line 984 def inline_list(id) chapter, id = extract_chapter_id(id) str = nil if get_chap(chapter).nil? str = "#{I18n.t("list")}#{I18n.t("format_number_without_header", [chapter.list(id).number])}" else str = "#{I18n.t("list")}#{I18n.t("format_number", [get_chap(chapter), chapter.list(id).number])}" end if @book.config["chapterlink"] %Q(<span class="listref"><a href="./#{chapter.id}#{extname}##{id}">#{str}</a></span>) else %Q(<span class="listref">#{str}</span>) end rescue KeyError error "unknown list: #{id}" nofunc_text("[UnknownList:#{id}]") end
inline_m(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 916 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
Calls superclass method
ReVIEW::Builder#inline_raw
# File lib/review/htmlbuilder.rb, line 1145 def inline_raw(str) super(str) end
inline_recipe(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1114 def inline_recipe(str) %Q(<span class="recipe">「#{escape_html(str)}」</span>) end
inline_samp(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1066 def inline_samp(str) inline_asis(str, "samp") end
inline_small(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1082 def inline_small(str) inline_asis(str, "small") end
inline_strong(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1070 def inline_strong(str) inline_asis(str, "strong") end
inline_sub(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1086 def inline_sub(str) inline_asis(str, "sub") end
inline_sup(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1090 def inline_sup(str) inline_asis(str, "sup") end
inline_table(id)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1002 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(<span class="tableref"><a href="./#{chapter.id}#{extname}##{id}">#{str}</a></span>) else %Q(<span class="tableref">#{str}</span>) end rescue KeyError error "unknown table: #{id}" nofunc_text("[UnknownTable:#{id}]") end
inline_tcy(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1138 def inline_tcy(str) # 縦中横用のtcy、uprightのCSSスタイルについては電書協ガイドラインを参照 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
Calls superclass method
ReVIEW::Builder#inline_title
# File lib/review/htmlbuilder.rb, line 823 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
# File lib/review/htmlbuilder.rb, line 1094 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
# File lib/review/htmlbuilder.rb, line 884 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
# File lib/review/htmlbuilder.rb, line 876 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
# File lib/review/htmlbuilder.rb, line 1110 def inline_u(str) %Q(<u>#{escape_html(str)}</u>) end
inline_uchar(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1126 def inline_uchar(str) %Q(&#x#{str};) end
inline_var(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1074 def inline_var(str) inline_asis(str, "var") end
label(id)
click to toggle source
# File lib/review/htmlbuilder.rb, line 770 def label(id) puts %Q(<a id="#{normalize_id(id)}"></a>) end
layoutfile()
click to toggle source
# File lib/review/htmlbuilder.rb, line 65 def layoutfile 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 layout_file end
linebreak()
click to toggle source
# File lib/review/htmlbuilder.rb, line 774 def linebreak puts "<br />" end
list(lines, id, caption, lang = nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 398 def list(lines, id, caption, lang = nil) puts %Q[<div id="#{normalize_id(id)}" 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
# File lib/review/htmlbuilder.rb, line 417 def list_body(id, lines, lang) id ||= '' class_names = ["list"] lexer = lang || File.extname(id).gsub(/\./, '') 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 409 def list_header(id, caption, lang) if get_chap.nil? 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>] else 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>] end end
listnum(lines, id, caption, lang = nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 451 def listnum(lines, id, caption, lang = nil) puts %Q[<div id="#{normalize_id(id)}" 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
# File lib/review/htmlbuilder.rb, line 462 def listnum_body(lines, lang) if highlight? body = lines.inject(''){|i, j| i + detab(j) + "\n"} lexer = lang first_line_number = get_line_num puts highlight(:body => body, :lexer => lexer, :format => 'html', :linenum => true, :options => {:linenostart => first_line_number}) else class_names = ["list"] class_names.push("language-#{lang}") unless lang.blank? class_names.push("highlight") if highlight? print %Q[<pre class="#{class_names.join(" ")}">] first_line_num = get_line_num lines.each_with_index do |line, i| puts detab((i+first_line_num).to_s.rjust(2) + ": " + line) end puts '</pre>' end end
memo(lines, caption = nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 268 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 192 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
# File lib/review/htmlbuilder.rb, line 205 def nodisp_end(level) end
nofunc_text(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1149 def nofunc_text(str) escape_html(str) end
noindent()
click to toggle source
# File lib/review/htmlbuilder.rb, line 790 def noindent @noindent = true end
nonum_begin(level, label, caption)
click to toggle source
# File lib/review/htmlbuilder.rb, line 160 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
# File lib/review/htmlbuilder.rb, line 173 def nonum_end(level) end
note(lines, caption = nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 325 def note(lines, caption = nil) captionblock("note", lines, caption) end
notice(lines, caption = nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 300 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 176 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
# File lib/review/htmlbuilder.rb, line 189 def notoc_end(level) end
ol_begin()
click to toggle source
# File lib/review/htmlbuilder.rb, line 345 def ol_begin if @ol_num puts "<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 358 def ol_end puts '</ol>' end
ol_item(lines, num)
click to toggle source
# File lib/review/htmlbuilder.rb, line 354 def ol_item(lines, num) puts "<li>#{lines.join}</li>" end
olnum(num)
click to toggle source
# File lib/review/htmlbuilder.rb, line 1173 def olnum(num) @ol_num = num.to_i end
pagebreak()
click to toggle source
# File lib/review/htmlbuilder.rb, line 778 def pagebreak puts %Q(<br class="pagebreak" />) end
paragraph(lines)
click to toggle source
# File lib/review/htmlbuilder.rb, line 378 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
# File lib/review/htmlbuilder.rb, line 387 def parasep puts '<br />' end
planning(lines, caption = nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 280 def planning(lines, caption = nil) captionblock("planning", lines, caption) end
point(lines, caption = nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 308 def point(lines, caption = nil) captionblock("point", lines, caption) end
post_paragraph()
click to toggle source
# File lib/review/htmlbuilder.rb, line 35 def post_paragraph '</p>' end
pre_paragraph()
click to toggle source
# File lib/review/htmlbuilder.rb, line 31 def pre_paragraph '<p>' end
quote(lines)
click to toggle source
# File lib/review/htmlbuilder.rb, line 547 def quote(lines) blocked_lines = split_paragraph(lines) puts "<blockquote>#{blocked_lines.join("\n")}</blockquote>" end
read(lines)
click to toggle source
# File lib/review/htmlbuilder.rb, line 391 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 240 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 245 def ref_end(level) puts '</div>' end
result()
click to toggle source
# File lib/review/htmlbuilder.rb, line 94 def result # default XHTML header/footer @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(layoutfile) tmpl.result(binding) end
result_metric(array)
click to toggle source
# File lib/review/htmlbuilder.rb, line 591 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 292 def security(lines, caption = nil) captionblock("security", lines, caption) end
shoot(lines, caption = nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 312 def shoot(lines, caption = nil) captionblock("shoot", lines, caption) end
source(lines, caption = nil, lang = nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 429 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
# File lib/review/htmlbuilder.rb, line 442 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
source_header(caption)
click to toggle source
# File lib/review/htmlbuilder.rb, line 436 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 249 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 254 def sup_end(level) puts '</div>' end
table(lines, id = nil, caption = nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 634 def table(lines, id = nil, caption = nil) rows = [] sepidx = nil lines.each_with_index do |line, idx| if /\A[\=\-]{12}/ =~ line # just ignore #error "too many table separator" if sepidx 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
# File lib/review/htmlbuilder.rb, line 685 def table_begin(ncols) puts '<table>' end
table_end()
click to toggle source
# File lib/review/htmlbuilder.rb, line 701 def table_end puts '</table>' end
table_header(id, caption)
click to toggle source
# File lib/review/htmlbuilder.rb, line 677 def table_header(id, caption) if get_chap.nil? 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>] else 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>] end end
talk(lines)
click to toggle source
# File lib/review/htmlbuilder.rb, line 560 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 697 def td(str) "<td>#{str}</td>" end
texequation(lines)
click to toggle source
# File lib/review/htmlbuilder.rb, line 567 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
# File lib/review/htmlbuilder.rb, line 927 def text(str) str end
th(str)
click to toggle source
# File lib/review/htmlbuilder.rb, line 693 def th(str) "<th>#{str}</th>" end
tip(lines, caption = nil)
click to toggle source
# File lib/review/htmlbuilder.rb, line 272 def tip(lines, caption = nil) captionblock("tip", lines, caption) end
tr(rows)
click to toggle source
# File lib/review/htmlbuilder.rb, line 689 def tr(rows) puts "<tr>#{rows.join}</tr>" end
ul_begin()
click to toggle source
# File lib/review/htmlbuilder.rb, line 329 def ul_begin puts '<ul>' end
ul_end()
click to toggle source
# File lib/review/htmlbuilder.rb, line 341 def ul_end puts '</ul>' end
ul_item_begin(lines)
click to toggle source
# File lib/review/htmlbuilder.rb, line 333 def ul_item_begin(lines) print "<li>#{lines.join}" end
ul_item_end()
click to toggle source
# File lib/review/htmlbuilder.rb, line 337 def ul_item_end puts "</li>" end
warn(msg)
click to toggle source
# File lib/review/htmlbuilder.rb, line 121 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
# File lib/review/htmlbuilder.rb, line 304 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 231 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 236 def xcolumn_end(level) puts '</div>' end
xmlns_ops_prefix()
click to toggle source
# File lib/review/htmlbuilder.rb, line 113 def xmlns_ops_prefix if @book.config["epubversion"].to_i == 3 "epub" else "ops" end end
Private Instance Methods
builder_init(no_error = false)
click to toggle source
# File lib/review/htmlbuilder.rb, line 43 def builder_init(no_error = false) @no_error = no_error @noindent = nil @ol_num = nil @error_messages = nil @warning_messages = nil end
builder_init_file()
click to toggle source
# File lib/review/htmlbuilder.rb, line 52 def builder_init_file @warns = [] @errors = [] @chapter.book.image_types = %w(.png .jpg .jpeg .gif .svg) @column = 0 @sec_counter = SecCounter.new(5, @chapter) @nonum_counter = 0 @first_line_num = nil @body_ext = nil @toc = nil end
column_label(id)
click to toggle source
# File lib/review/htmlbuilder.rb, line 970 def column_label(id) num = @chapter.column(id).number "column-#{num}" end
quotedlist(lines, css_class)
click to toggle source
# File lib/review/htmlbuilder.rb, line 538 def quotedlist(lines, css_class) print %Q[<blockquote><pre class="#{css_class}">] lines.each do |line| puts detab(line) end puts '</pre></blockquote>' end