class ReVIEW::IDGXMLBuilder
Public Instance Methods
best(lines, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1002 def best(lines, caption = nil) captionblock('best', lines, caption) end
bibpaper(lines, id, caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1276 def bibpaper(lines, id, caption) puts %Q(<bibitem id="bib-#{id}">) bibpaper_header(id, caption) bibpaper_bibpaper(id, caption, lines) unless lines.empty? puts '</bibitem>' end
bibpaper_bibpaper(_id, _caption, lines)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1287 def bibpaper_bibpaper(_id, _caption, lines) print split_paragraph(lines).join end
bibpaper_header(id, caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1283 def bibpaper_header(id, caption) puts "<caption><span type='bibno'>[#{@chapter.bibpaper(id).number}] </span>#{compile_inline(caption)}</caption>" if caption.present? end
blankline()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 844 def blankline puts '<p/>' end
box(lines, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1138 def box(lines, caption = nil) syntaxblock('box', lines, caption) end
bpo(lines)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1174 def bpo(lines) puts %Q(<bpo>#{lines.join("\n")}</bpo>) end
captionblock(type, lines, caption, specialstyle = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 970 def captionblock(type, lines, caption, specialstyle = nil) print "<#{type}>" style = specialstyle.nil? ? "#{type}-title" : specialstyle puts "<title aid:pstyle='#{style}'>#{compile_inline(caption)}</title>" if caption.present? blocked_lines = split_paragraph(lines) puts "#{blocked_lines.join}</#{type}>" end
caution(lines, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1015 def caution(lines, caption = nil) check_nested_minicolumn captionblock('caution', lines, caption) end
centering(lines)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 966 def centering(lines) puts split_paragraph(lines).join.gsub('<p>', %Q(<p align='center'>)) end
choice_multi_begin()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 186 def choice_multi_begin puts %Q(<choice type='multi'>) end
choice_multi_end()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 194 def choice_multi_end puts '</choice>' end
choice_single_begin()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 182 def choice_single_begin puts %Q(<choice type='single'>) end
choice_single_end()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 190 def choice_single_end puts '</choice>' end
circle_begin(_level, _label, caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 872 def circle_begin(_level, _label, caption) puts %Q(<title aid:pstyle="smallcircle">•#{compile_inline(caption)}</title>) end
circle_end(level)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 876 def circle_end(level) end
cmd(lines, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 354 def cmd(lines, caption = nil) quotedlist(lines, 'cmd', caption) end
codelines_body(lines)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 288 def codelines_body(lines) no = 1 lines.each do |line| if @book.config['listinfo'] print %Q(<listinfo line="#{no}") print %Q( begin="1") if no == 1 print %Q( end="#{no}") if no == lines.size print '>' end print detab(line) print "\n" print '</listinfo>' if @book.config['listinfo'] no += 1 end end
column_begin(_level, _label, caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 890 def column_begin(_level, _label, caption) common_column_begin('', caption) end
column_end(_level)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 894 def column_end(_level) common_column_end('') end
comment(lines, comment = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 638 def comment(lines, comment = nil) return unless @book.config['draft'] lines ||= [] lines.unshift(escape(comment)) unless comment.blank? str = lines.join("\n") print "<msg>#{str}</msg>" end
common_column_begin(type, caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 879 def common_column_begin(type, caption) @column += 1 a_id = %Q(id="column-#{@column}") print "<#{type}column #{a_id}>" puts %Q(<title aid:pstyle="#{type}column-title">#{compile_inline(caption)}</title><?dtp level="9" section="#{escape(compile_inline(caption))}"?>) end
common_column_end(type)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 886 def common_column_end(type) puts "</#{type}column>" end
compile_href(url, label)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 702 def compile_href(url, label) %Q(<a linkurl='#{escape(url)}'>#{label.nil? ? escape(url) : escape(label)}</a>) end
compile_kw(word, alt)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 687 def compile_kw(word, alt) '<keyword>' + if alt then escape("#{word}(#{alt.strip})") else escape(word) end + '</keyword>' + %Q(<index value="#{escape(word)}" />) + if alt alt.split(/\s*,\s*/).collect! { |e| %Q(<index value="#{escape(e.strip)}" />) }.join else '' end end
compile_ruby(base, ruby)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 683 def compile_ruby(base, ruby) %Q(<GroupRuby><aid:ruby xmlns:aid="http://ns.adobe.com/AdobeInDesign/3.0/"><aid:rb>#{escape(base.strip)}</aid:rb><aid:rt>#{escape(ruby.strip)}</aid:rt></aid:ruby></GroupRuby>) end
dd(lines)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 231 def dd(lines) puts "<dd>#{join_lines_to_paragraph(lines).chomp}</dd>" end
dl_begin()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 223 def dl_begin puts '<dl>' end
dl_end()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 235 def dl_end puts '</dl>' end
dt(line)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 227 def dt(line) puts "<dt>#{line}</dt>" end
dtp(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1166 def dtp(str) print %Q(<?dtp #{str} ?>) end
edition_begin(_level, _label, caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 922 def edition_begin(_level, _label, caption) common_column_begin('edition', caption) end
edition_end(_level)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 926 def edition_end(_level) common_column_end('edition') end
emlist(lines, caption = nil, _lang = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 316 def emlist(lines, caption = nil, _lang = nil) quotedlist(lines, 'emlist', caption) end
emlistnum(lines, caption = nil, _lang = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 320 def emlistnum(lines, caption = nil, _lang = nil) lines2 = [] first_line_num = line_num lines.each_with_index do |line, i| lines2 << detab(%Q(<span type='lineno'>) + (i + first_line_num).to_s.rjust(2) + ': </span>' + line) end quotedlist(lines2, 'emlistnum', caption) end
emtable(lines, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 616 def emtable(lines, caption = nil) table(lines, nil, caption) end
endnote_begin()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 671 def endnote_begin puts '<endnotes>' end
endnote_end()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 675 def endnote_end puts '</endnotes>' end
endnote_item(id)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 679 def endnote_item(id) puts %Q(<endnote id='endnoteb-#{normalize_id(id)}'><span type='endnotenumber'>(#{@chapter.endnote(id).number})</span>\t#{compile_inline(@chapter.endnote(id).content)}</endnote>) end
expert(lines)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1066 def expert(lines) captionblock('expert', lines, nil) end
extname()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 45 def extname '.xml' end
flushright(lines)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 962 def flushright(lines) puts split_paragraph(lines).join.gsub('<p>', %Q(<p align='right'>)) end
footnote(id, str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 655 def footnote(id, str) # see inline_fn end
handle_metric(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 413 def handle_metric(str) k, v = str.split('=', 2) %Q(#{k}="#{v.sub(/\A["']/, '').sub(/["']\Z/, '')}") end
headline(level, label, caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 108 def headline(level, label, caption) output_close_sect_tags(level) case level when 1 print %Q(<chapter id="chap:#{@chapter.number}">) if @secttags @section = 0 @subsection = 0 @subsubsection = 0 @subsubsubsection = 0 when 2 @section += 1 print %Q(<sect id="sect:#{@chapter.number}.#{@section}">) if @secttags @subsection = 0 @subsubsection = 0 @subsubsubsection = 0 when 3 @subsection += 1 print %Q(<sect2 id="sect:#{@chapter.number}.#{@section}.#{@subsection}">) if @secttags @subsubsection = 0 @subsubsubsection = 0 when 4 @subsubsection += 1 print %Q(<sect3 id="sect:#{@chapter.number}.#{@section}.#{@subsection}.#{@subsubsection}">) if @secttags @subsubsubsection = 0 when 5 @subsubsubsection += 1 print %Q(<sect4 id="sect:#{@chapter.number}.#{@section}.#{@subsection}.#{@subsubsection}.#{@subsubsubsection}">) if @secttags when 6 # rubocop:disable Lint/EmptyWhen else raise "caption level too deep or unsupported: #{level}" end prefix, _anchor = headline_prefix(level) label = label.nil? ? '' : %Q( id="#{label}") toccaption = escape(compile_inline(caption.gsub(/@<fn>\{.+?\}/, '')).gsub(/<[^>]+>/, '')) puts %Q(<title#{label} aid:pstyle="h#{level}">#{prefix}#{compile_inline(caption)}</title><?dtp level="#{level}" section="#{prefix}#{toccaption}"?>) end
hood_begin(_level, _label, caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 914 def hood_begin(_level, _label, caption) common_column_begin('hood', caption) end
hood_end(_level)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 918 def hood_end(_level) common_column_end('hood') end
hr()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1170 def hr print '<hr />' end
image_dummy(id, caption, lines)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 431 def image_dummy(id, caption, lines) puts '<img>' image_header(id, caption) if caption_top?('image') print %Q(<pre aid:pstyle="dummyimage">) lines.each do |line| print detab(line) print "\n" end print '</pre>' image_header(id, caption) unless caption_top?('image') puts '</img>' warn "image not bound: #{id}", location: location end
image_ext()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1317 def image_ext 'eps' end
image_header(id, caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 445 def image_header(id, caption) return true unless caption.present? if get_chap.nil? puts %Q(<caption>#{I18n.t('image')}#{I18n.t('format_number_without_chapter', [@chapter.image(id).number])}#{I18n.t('caption_prefix_idgxml')}#{compile_inline(caption)}</caption>) else puts %Q(<caption>#{I18n.t('image')}#{I18n.t('format_number', [get_chap, @chapter.image(id).number])}#{I18n.t('caption_prefix_idgxml')}#{compile_inline(caption)}</caption>) end end
image_image(id, caption, metric = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 422 def image_image(id, caption, metric = nil) metrics = parse_metric('idgxml', metric) puts '<img>' image_header(id, caption) if caption_top?('image') puts %Q(<Image href="file://#{@chapter.image(id).path.sub(%r{\A./}, '')}"#{metrics} />) image_header(id, caption) unless caption_top?('image') puts '</img>' end
imgtable(lines, id, caption = nil, metric = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 620 def imgtable(lines, id, caption = nil, metric = nil) if @chapter.image_bound?(id) metrics = parse_metric('idgxml', metric) puts '<table>' if caption_top?('table') && caption.present? table_header(id, caption) end puts %Q(<imgtable><Image href="file://#{@chapter.image(id).path.sub(%r{\A./}, '')}"#{metrics} /></imgtable>) if !caption_top?('table') && caption.present? table_header(id, caption) end puts '</table>' else warn "image not bound: #{id}", location: location if @strict image_dummy(id, caption, lines) end end
important(lines, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1006 def important(lines, caption = nil) check_nested_minicolumn captionblock('important', lines, caption) end
indepimage(_lines, id, caption = nil, metric = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1142 def indepimage(_lines, id, caption = nil, metric = nil) metrics = parse_metric('idgxml', metric) puts '<img>' if caption_top?('image') puts %Q(<caption>#{compile_inline(caption)}</caption>) if caption.present? end begin puts %Q(<Image href="file://#{@chapter.image(id).path.sub(%r{\A\./}, '')}"#{metrics} />) rescue warn %Q(image not bound: #{id}), location: location end unless caption_top?('image') puts %Q(<caption>#{compile_inline(caption)}</caption>) if caption.present? end puts '</img>' end
Also aliased as: numberlessimage
info(lines, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 993 def info(lines, caption = nil) check_nested_minicolumn captionblock('info', lines, caption) end
inline_ami(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 754 def inline_ami(str) %Q(<ami>#{escape(str)}</ami>) end
inline_b(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 762 def inline_b(str) %Q(<b>#{escape(str)}</b>) end
inline_balloon(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 827 def inline_balloon(str) %Q(<balloon>#{escape(str).gsub(/@maru\[(\d+)\]/) { inline_maru($1) }}</balloon>) end
inline_bib(id)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1291 def inline_bib(id) %Q(<span type='bibref' idref='#{id}'>[#{@chapter.bibpaper(id).number}]</span>) rescue KeyError app_error "unknown bib: #{id}" end
inline_bou(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 809 def inline_bou(str) %Q(<bou>#{escape(str)}</bou>) end
inline_br(_str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1186 def inline_br(_str) "\n" end
inline_chap(id)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1233 def inline_chap(id) if @book.config['chapterlink'] %Q(<link href="#{id}">#{@book.chapter_index.number(id)}</link>) 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/idgxmlbuilder.rb, line 1203 def inline_chapref(id) if @book.config.check_version('2', exception: false) # backward compatibility chs = ['', '「', '」'] if @book.config['chapref'] chs2 = @book.config['chapref'].split(',') if chs2.size == 3 chs = chs2 else app_error '--chapsplitter must have exactly 3 parameters with comma.' end end s = "#{chs[0]}#{@book.chapter_index.number(id)}#{chs[1]}#{@book.chapter_index.title(id)}#{chs[2]}" if @book.config['chapterlink'] %Q(<link href="#{id}">#{s}</link>) else s end else title = super if @book.config['chapterlink'] %Q(<link href="#{id}">#{title}</link>) else title end end rescue KeyError app_error "unknown chapter: #{id}" end
inline_code(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1182 def inline_code(str) %Q(<tt type='inline-code'>#{escape(str)}</tt>) end
inline_column_chap(chapter, id)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 264 def inline_column_chap(chapter, id) if @book.config['chapterlink'] %Q(<link href="#{column_label(id, chapter)}">#{I18n.t('column', compile_inline(chapter.column(id).caption))}</link>) 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/idgxmlbuilder.rb, line 647 def inline_comment(str) if @book.config['draft'] %Q(<msg>#{escape(str)}</msg>) else '' end end
inline_del(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 796 def inline_del(str) %Q(<del>#{escape(str)}</del>) end
inline_dtp(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1178 def inline_dtp(str) "<?dtp #{str} ?>" end
inline_em(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 766 def inline_em(str) %Q(<em>#{escape(str)}</em>) end
inline_endnote(id)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 665 def inline_endnote(id) %Q(<span type='endnoteref' idref='endnoteb-#{normalize_id(id)}'>(#{@chapter.endnote(id).number})</span>) rescue KeyError app_error "unknown endnote: #{id}" end
inline_eq(id)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 398 def inline_eq(id) "<span type='eq'>#{super(id)}</span>" end
inline_fn(id)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 659 def inline_fn(id) %Q(<footnote>#{compile_inline(@chapter.footnote(id).content.strip)}</footnote>) rescue KeyError app_error "unknown footnote: #{id}" end
inline_hd_chap(chap, id)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1297 def inline_hd_chap(chap, id) n = chap.headline_index.number(id) 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 rescue KeyError app_error "unknown headline: #{id}" end
inline_hidx(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 750 def inline_hidx(str) %Q(<index value="#{escape(str)}" />) end
inline_hint(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 718 def inline_hint(str) if @book.config['nolf'] %Q(<hint>#{escape(str)}</hint>) else %Q(\n<hint>#{escape(str)}</hint>) end end
inline_i(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 758 def inline_i(str) %Q(<i>#{escape(str)}</i>) end
inline_icon(id)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 800 def inline_icon(id) begin %Q(<Image href="file://#{@chapter.image(id).path.sub(%r{\A\./}, '')}" type="inline" />) rescue warn "image not bound: #{id}", location: location '' end end
inline_idx(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 746 def inline_idx(str) %Q(#{escape(str)}<index value="#{escape(str)}" />) end
inline_img(id)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 394 def inline_img(id) "<span type='image'>#{super(id)}</span>" end
inline_imgref(id)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 402 def inline_imgref(id) chapter, id = extract_chapter_id(id) if chapter.image(id).caption.blank? inline_img(id) elsif get_chap(chapter).nil? "<span type='image'>#{I18n.t('image')}#{I18n.t('format_number_without_chapter', [chapter.image(id).number])}#{I18n.t('image_quote', chapter.image(id).caption)}</span>" else "<span type='image'>#{I18n.t('image')}#{I18n.t('format_number', [get_chap(chapter), chapter.image(id).number])}#{I18n.t('image_quote', chapter.image(id).caption)}</span>" end end
inline_ins(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 792 def inline_ins(str) %Q(<ins>#{escape(str)}</ins>) end
inline_keytop(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 813 def inline_keytop(str) %Q(<keytop>#{escape(str)}</keytop>) end
inline_labelref(idref)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 817 def inline_labelref(idref) %Q(<ref idref='#{escape(idref)}'>「#{I18n.t('label_marker')}#{escape(idref)}」</ref>) # FIXME: 節名とタイトルも込みで要出力 end
Also aliased as: inline_ref
inline_list(id)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 274 def inline_list(id) "<span type='list'>#{super(id)}</span>" end
inline_m(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 835 def inline_m(str) @texinlineequation += 1 %Q(<replace idref="texinline-#{@texinlineequation}"><pre>#{escape(str)}</pre></replace>) end
inline_maru(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 726 def inline_maru(str) if str =~ /\A\d+\Z/ sprintf('&#x%x;', 9311 + str.to_i) elsif str =~ /\A[A-Z]\Z/ begin sprintf('&#x%x;', 9398 + str.codepoints.to_a[0] - 65) rescue NoMethodError sprintf('&#x%x;', 9398 + str[0] - 65) end elsif str =~ /\A[a-z]\Z/ begin sprintf('&#x%x;', 9392 + str.codepoints.to_a[0] - 65) rescue NoMethodError sprintf('&#x%x;', 9392 + str[0] - 65) end else app_error "can't parse maru: #{str}" end end
inline_pageref(idref)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 823 def inline_pageref(idref) %Q(<pageref idref='#{escape(idref)}'>●●</pageref>) # ページ番号を参照 end
inline_raw(str)
click to toggle source
Calls superclass method
ReVIEW::Builder#inline_raw
# File lib/review/idgxmlbuilder.rb, line 714 def inline_raw(str) super(str).gsub('\\n', "\n") end
inline_recipe(id)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1308 def inline_recipe(id) # FIXME %Q(<recipe idref="#{escape(id)}">[XXX]「#{escape(id)}」 p.XX</recipe>) end
inline_strong(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 770 def inline_strong(str) %Q(<strong>#{escape(str)}</strong>) end
inline_sub(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 710 def inline_sub(str) %Q(<sub>#{escape(str)}</sub>) end
inline_sup(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 706 def inline_sup(str) %Q(<sup>#{escape(str)}</sup>) end
inline_table(id)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 390 def inline_table(id) "<span type='table'>#{super(id)}</span>" end
inline_title(id)
click to toggle source
Calls superclass method
ReVIEW::Builder#inline_title
# File lib/review/idgxmlbuilder.rb, line 1243 def inline_title(id) title = super if @book.config['chapterlink'] %Q(<link href="#{id}">#{title}</link>) else title end rescue KeyError app_error "unknown chapter: #{id}" end
inline_tt(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 774 def inline_tt(str) %Q(<tt>#{escape(str)}</tt>) end
inline_ttb(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 778 def inline_ttb(str) %Q(<tt style='bold'>#{escape(str)}</tt>) end
Also aliased as: inline_ttbold
inline_tti(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 784 def inline_tti(str) %Q(<tt style='italic'>#{escape(str)}</tt>) end
inline_u(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 788 def inline_u(str) %Q(<underline>#{escape(str)}</underline>) end
inline_uchar(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 831 def inline_uchar(str) %Q(&#x#{str};) end
insideout_begin(_level, _label, caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 930 def insideout_begin(_level, _label, caption) common_column_begin('insideout', caption) end
insideout_end(_level)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 934 def insideout_end(_level) common_column_end('insideout') end
insn(lines, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1134 def insn(lines, caption = nil) syntaxblock('insn', lines, caption) end
label(id)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1161 def label(id) # FIXME print "<label id='#{id}' />" end
link(lines, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1029 def link(lines, caption = nil) captionblock('link', lines, caption) end
list(lines, id, caption, lang = nil)
click to toggle source
Calls superclass method
ReVIEW::Builder#list
# File lib/review/idgxmlbuilder.rb, line 304 def list(lines, id, caption, lang = nil) puts '<codelist>' super(lines, id, caption, lang) puts '</codelist>' end
list_body(_id, lines, _lang)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 310 def list_body(_id, lines, _lang) print '<pre>' codelines_body(lines) print '</pre>' end
list_header(id, caption, _lang)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 278 def list_header(id, caption, _lang) return true unless caption.present? if get_chap.nil? puts %Q(<caption>#{I18n.t('list')}#{I18n.t('format_number_without_chapter', [@chapter.list(id).number])}#{I18n.t('caption_prefix_idgxml')}#{compile_inline(caption)}</caption>) else puts %Q(<caption>#{I18n.t('list')}#{I18n.t('format_number', [get_chap, @chapter.list(id).number])}#{I18n.t('caption_prefix_idgxml')}#{compile_inline(caption)}</caption>) end end
listnum(lines, id, caption, lang = nil)
click to toggle source
Calls superclass method
ReVIEW::Builder#listnum
# File lib/review/idgxmlbuilder.rb, line 329 def listnum(lines, id, caption, lang = nil) puts '<codelist>' super(lines, id, caption, lang) puts '</codelist>' end
listnum_body(lines, _lang)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 335 def listnum_body(lines, _lang) print '<pre>' no = 1 first_line_num = line_num lines.each_with_index do |line, i| if @book.config['listinfo'] print %Q(<listinfo line="#{no}") print %Q( begin="1") if no == 1 print %Q( end="#{no}") if no == lines.size print '>' end print detab(%Q(<span type='lineno'>) + (i + first_line_num).to_s.rjust(2) + ': </span>' + line) print "\n" print '</listinfo>' if @book.config['listinfo'] no += 1 end print '</pre>' end
memo(lines, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 983 def memo(lines, caption = nil) check_nested_minicolumn captionblock('memo', lines, caption) end
nodisp_begin(level, label, caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 866 def nodisp_begin(level, label, caption) end
nodisp_end(level)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 869 def nodisp_end(level) end
nofunc_text(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1313 def nofunc_text(str) escape(str) end
noindent()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 840 def noindent @noindent = true end
nonum_begin(level, _label, caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 852 def nonum_begin(level, _label, caption) puts %Q(<title aid:pstyle="h#{level}">#{compile_inline(caption)}</title><?dtp level="#{level}" section="#{escape(compile_inline(caption))}"?>) end
nonum_end(level)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 856 def nonum_end(level) end
note(lines, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 978 def note(lines, caption = nil) check_nested_minicolumn captionblock('note', lines, caption) end
notice(lines, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1033 def notice(lines, caption = nil) check_nested_minicolumn if caption captionblock('notice-t', lines, caption, 'notice-title') else captionblock('notice', lines, nil) end end
notoc_begin(level, _label, caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 859 def notoc_begin(level, _label, caption) puts %Q(<title aid:pstyle="h#{level}">#{compile_inline(caption)}</title>) end
notoc_end(level)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 863 def notoc_end(level) end
ol_begin()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 204 def ol_begin puts '<ol>' @ol_num ||= 1 # rubocop:disable Naming/MemoizedInstanceVariableName end
ol_end()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 214 def ol_end puts '</ol>' @ol_num = nil end
ol_item(lines, num)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 209 def ol_item(lines, num) puts %Q(<li aid:pstyle="ol-item" olnum="#{@ol_num}" num="#{num}">#{join_lines_to_paragraph(lines).chomp}</li>) @ol_num += 1 end
olnum(num)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 219 def olnum(num) @ol_num = num.to_i end
pagebreak()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 848 def pagebreak puts '<pagebreak />' end
paragraph(lines)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 239 def paragraph(lines) if @noindent.nil? if lines[0] =~ /\A(\t+)/ puts %Q(<p inlist="#{$1.size}">#{join_lines_to_paragraph(lines).sub(/\A\t+/, '')}</p>) else puts "<p>#{join_lines_to_paragraph(lines)}</p>" end else puts %Q(<p aid:pstyle="noindent" noindent='1'>#{join_lines_to_paragraph(lines)}</p>) @noindent = nil end end
parse_table_rows(lines)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 514 def parse_table_rows(lines) sepidx = nil rows = [] lines.each_with_index do |line, idx| if /\A[=\-]{12}/ =~ line sepidx ||= idx next end if @tablewidth rows.push(line.gsub(/\t\.\t/, "\tDUMMYCELLSPLITTER\t").gsub(/\t\.\.\t/, "\t.\t").gsub(/\t\.\Z/, "\tDUMMYCELLSPLITTER").gsub(/\t\.\.\Z/, "\t.").gsub(/\A\./, '')) else rows.push(line.gsub(/\t\.\t/, "\t\t").gsub(/\t\.\.\t/, "\t.\t").gsub(/\t\.\Z/, "\t").gsub(/\t\.\.\Z/, "\t.").gsub(/\A\./, '')) end col2 = rows[rows.length - 1].split(table_row_separator_regexp).length @col = col2 if col2 > @col end app_error 'no rows in the table' if rows.empty? [sepidx, rows] end
planning(lines, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 998 def planning(lines, caption = nil) captionblock('planning', lines, caption) end
point(lines, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1042 def point(lines, caption = nil) if caption captionblock('point-t', lines, caption, 'point-title') else captionblock('point', lines, nil) end end
post_paragraph()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 41 def post_paragraph '</p>' end
practice(lines)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1062 def practice(lines) captionblock('practice', lines, nil) end
pre_paragraph()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 37 def pre_paragraph '<p>' end
puts(arg)
click to toggle source
Calls superclass method
ReVIEW::Builder#puts
# File lib/review/idgxmlbuilder.rb, line 72 def puts(arg) if @book.config['nolf'].present? print arg else super end end
quote(lines)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 385 def quote(lines) blocked_lines = split_paragraph(lines) puts "<quote>#{blocked_lines.join}</quote>" end
rawblock(lines)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1190 def rawblock(lines) no = 1 lines.each do |l| print l.gsub('<', '<').gsub('>', '>').gsub('"', '"').gsub('&', '&') print "\n" unless lines.length == no no += 1 end end
read(lines)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 252 def read(lines) puts %Q(<lead>#{split_paragraph(lines).join}</lead>) end
Also aliased as: lead
ref_begin(_level, label, _caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 938 def ref_begin(_level, label, _caption) if label puts "<reference id='#{label}'>" else puts '<reference>' end end
ref_end(_level)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 946 def ref_end(_level) puts '</reference>' end
reference(lines)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1058 def reference(lines) captionblock('reference', lines, nil) end
result()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 80 def result check_printendnotes s = '' if @secttags s += '</sect4>' if @subsubsubsection > 0 s += '</sect3>' if @subsubsection > 0 s += '</sect2>' if @subsection > 0 s += '</sect>' if @section > 0 s += '</chapter>' if @chapter.number > 0 end solve_nest(@output.string) + s + "</#{@rootelement}>\n" end
result_metric(array)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 418 def result_metric(array) " #{array.join(' ')}" end
security(lines, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1011 def security(lines, caption = nil) captionblock('security', lines, caption) end
shoot(lines, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1050 def shoot(lines, caption = nil) if caption captionblock('shoot-t', lines, caption, 'shoot-title') else captionblock('shoot', lines, nil) end end
solve_nest(s)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 94 def solve_nest(s) check_nest s.gsub("</dd></dl>\x01→dl←\x01", ''). gsub("\x01→/dl←\x01", "</dd></dl>←END\x01"). gsub("</li></ul>\x01→ul←\x01", ''). gsub("\x01→/ul←\x01", "</li></ul>←END\x01"). gsub("</li></ol>\x01→ol←\x01", ''). gsub("\x01→/ol←\x01", "</li></ol>←END\x01"). gsub("</dl>←END\x01<dl>", ''). gsub("</ul>←END\x01<ul>", ''). gsub("</ol>←END\x01<ol>", ''). gsub("←END\x01", '') end
source(lines, caption = nil, lang = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1254 def source(lines, caption = nil, lang = nil) puts '<source>' if caption_top?('list') source_header(caption) end source_body(lines, lang) unless caption_top?('list') source_header(caption) end puts '</source>' end
source_body(lines, _lang)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1270 def source_body(lines, _lang) puts '<pre>' codelines_body(lines) print '</pre>' end
source_header(caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1266 def source_header(caption) puts %Q(<caption>#{compile_inline(caption)}</caption>) if caption.present? end
sup_begin(_level, label, _caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 950 def sup_begin(_level, label, _caption) if label puts "<supplement id='#{label}'>" else puts '<supplement>' end end
sup_end(_level)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 958 def sup_end(_level) puts '</supplement>' end
syntaxblock(type, lines, caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1097 def syntaxblock(type, lines, caption) captionstr = nil if caption.present? titleopentag = %Q(caption aid:pstyle="#{type}-title") titleclosetag = 'caption' if type == 'insn' titleopentag = %Q(floattitle type="insn") titleclosetag = 'floattitle' end captionstr = %Q(<#{titleopentag}>#{compile_inline(caption)}</#{titleclosetag}>) end print "<#{type}>" if caption_top?('list') puts captionstr else puts '' end no = 1 lines.each do |line| if @book.config['listinfo'] print %Q(<listinfo line="#{no}") print %Q( begin="1") if no == 1 print %Q( end="#{no}") if no == lines.size print '>' end print detab(line) print "\n" print '</listinfo>' if @book.config['listinfo'] no += 1 end unless caption_top?('list') print captionstr end puts "</#{type}>" end
table(lines, id = nil, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 480 def table(lines, id = nil, caption = nil) @tablewidth = nil if @book.config['tableopt'] @tablewidth = @book.config['tableopt'].split(',')[0].to_f / @book.config['pt_to_mm_unit'].to_f end @col = 0 sepidx, rows = parse_table_rows(lines) puts '<table>' begin if caption_top?('table') && caption.present? table_header(id, caption) end if @tablewidth.nil? print '<tbody>' else print %Q(<tbody xmlns:aid5="http://ns.adobe.com/AdobeInDesign/5.0/" aid:table="table" aid:trows="#{rows.length}" aid:tcols="#{@col}">) end @table_id = id table_rows(sepidx, rows) puts '</tbody>' if !caption_top?('table') && caption.present? table_header(id, caption) end rescue KeyError app_error "no such table: #{id}" end puts '</table>' @tsize = nil end
table_begin(ncols)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 598 def table_begin(ncols) end
table_end()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 613 def table_end end
table_header(id, caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 588 def table_header(id, caption) if id.nil? puts %Q(<caption>#{compile_inline(caption)}</caption>) elsif get_chap puts %Q(<caption>#{I18n.t('table')}#{I18n.t('format_number', [get_chap, @chapter.table(id).number])}#{I18n.t('caption_prefix_idgxml')}#{compile_inline(caption)}</caption>) else puts %Q(<caption>#{I18n.t('table')}#{I18n.t('format_number_without_chapter', [@chapter.table(id).number])}#{I18n.t('caption_prefix_idgxml')}#{compile_inline(caption)}</caption>) end end
table_rows(sepidx, rows)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 534 def table_rows(sepidx, rows) cellwidth = [] if @tablewidth if @tsize.nil? @col.times { |n| cellwidth[n] = @tablewidth / @col } else cellwidth = @tsize.split(/\s*,\s*/) totallength = 0 cellwidth.size.times do |n| cellwidth[n] = cellwidth[n].to_f / @book.config['pt_to_mm_unit'].to_f totallength += cellwidth[n] warn "total length exceeds limit for table: #{@table_id}", location: location if totallength > @tablewidth end if cellwidth.size < @col cw = (@tablewidth - totallength) / (@col - cellwidth.size) warn "auto cell sizing exceeds limit for table: #{@table_id}", location: location if cw <= 0 (cellwidth.size..(@col - 1)).each { |i| cellwidth[i] = cw } end end end if sepidx sepidx.times do |y| if @tablewidth.nil? puts %Q(<tr type="header">#{rows.shift}</tr>) else i = 0 rows.shift.split(table_row_separator_regexp).each_with_index do |cell, x| print %Q(<td xyh="#{x + 1},#{y + 1},#{sepidx}" aid:table="cell" aid:theader="1" aid:crows="1" aid:ccols="1" aid:ccolwidth="#{sprintf('%.3f', cellwidth[i])}">#{cell.sub('DUMMYCELLSPLITTER', '')}</td>) i += 1 end end end end trputs(@tablewidth, rows, cellwidth, sepidx) end
td(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 609 def td(str) str end
term(lines)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1025 def term(lines) captionblock('term', lines, nil) end
texequation(lines, id = nil, caption = '')
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 455 def texequation(lines, id = nil, caption = '') @texblockequation += 1 caption_str = nil if id puts '<equationblock>' if get_chap.nil? caption_str = %Q(<caption>#{I18n.t('equation')}#{I18n.t('format_number_without_chapter', [@chapter.equation(id).number])}#{I18n.t('caption_prefix_idgxml')}#{compile_inline(caption)}</caption>) else caption_str = %Q(<caption>#{I18n.t('equation')}#{I18n.t('format_number', [get_chap, @chapter.equation(id).number])}#{I18n.t('caption_prefix_idgxml')}#{compile_inline(caption)}</caption>) end puts caption_str if caption_top?('equation') end puts %Q(<replace idref="texblock-#{@texblockequation}">) puts '<pre>' print lines.join("\n") puts '</pre>' puts '</replace>' if id puts caption_str unless caption_top?('equation') puts '</equationblock>' end end
text(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1199 def text(str) str end
th(str)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 605 def th(str) %Q(<?dtp tablerow header?>#{str}) end
tip(lines, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 988 def tip(lines, caption = nil) check_nested_minicolumn captionblock('tip', lines, caption) end
tr(rows)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 601 def tr(rows) puts %Q(<tr>#{rows.join("\t")}</tr>) end
trputs(tablewidth, rows, cellwidth, sepidx)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 571 def trputs(tablewidth, rows, cellwidth, sepidx) sepidx = 0 if sepidx.nil? if tablewidth rows.each_with_index do |row, y| i = 0 row.split(table_row_separator_regexp).each_with_index do |cell, x| print %Q(<td xyh="#{x + 1},#{y + 1 + sepidx},#{sepidx}" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="#{sprintf('%.3f', cellwidth[i])}">#{cell.sub('DUMMYCELLSPLITTER', '')}</td>) i += 1 end end else lastline = rows.pop rows.each { |row| puts "<tr>#{row}</tr>" } puts %Q(<tr type="lastline">#{lastline}</tr>) if lastline end end
ul_begin() { |: ''| ... }
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 168 def ul_begin level = block_given? ? yield : '' level = nil if level == 1 puts "<ul#{level == 1 ? nil : level}>" end
ul_end() { |: ''| ... }
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 198 def ul_end level = block_given? ? yield : '' level = nil if level == 1 puts "</ul#{level}>" end
ul_item_begin(lines)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 174 def ul_item_begin(lines) print %Q(<li aid:pstyle="ul-item">#{join_lines_to_paragraph(lines).chomp}) end
ul_item_end()
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 178 def ul_item_end puts '</li>' end
warning(lines, caption = nil)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 1020 def warning(lines, caption = nil) check_nested_minicolumn captionblock('warning', lines, caption) end
world_begin(_level, _label, caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 906 def world_begin(_level, _label, caption) common_column_begin('world', caption) end
world_end(_level)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 910 def world_end(_level) common_column_end('world') end
xcolumn_begin(_level, _label, caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 898 def xcolumn_begin(_level, _label, caption) common_column_begin('x', caption) end
xcolumn_end(_level)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 902 def xcolumn_end(_level) common_column_end('x') end
Private Instance Methods
builder_init_file()
click to toggle source
Calls superclass method
ReVIEW::Builder#builder_init_file
# File lib/review/idgxmlbuilder.rb, line 49 def builder_init_file super @warns = [] @errors = [] @section = 0 @subsection = 0 @subsubsection = 0 @subsubsubsection = 0 @sec_counter = SecCounter.new(5, @chapter) @column = 0 @noindent = nil @ol_num = nil @first_line_num = nil @rootelement = 'doc' @tsize = nil @texblockequation = 0 @texinlineequation = 0 print %Q(<?xml version="1.0" encoding="UTF-8"?>\n) print %Q(<#{@rootelement} xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/">) @secttags = @book.config['structuredxml'] end
column_label(id, chapter = @chapter)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 258 def column_label(id, chapter = @chapter) num = chapter.column(id).number "column-#{num}" end
quotedlist(lines, css_class, caption)
click to toggle source
# File lib/review/idgxmlbuilder.rb, line 358 def quotedlist(lines, css_class, caption) print %Q(<list type='#{css_class}'>) if caption_top?('list') && caption.present? puts "<caption aid:pstyle='#{css_class}-title'>#{compile_inline(caption)}</caption>" end print '<pre>' no = 1 lines.each do |line| if @book.config['listinfo'] print %Q(<listinfo line="#{no}") print %Q( begin="1") if no == 1 print %Q( end="#{no}") if no == lines.size print '>' end print detab(line) print "\n" print '</listinfo>' if @book.config['listinfo'] no += 1 end puts '</pre>' if !caption_top?('list') && caption.present? puts "<caption aid:pstyle='#{css_class}-title'>#{compile_inline(caption)}</caption>" end puts '</list>' end