diff --git a/lib/review/builder.rb b/lib/review/builder.rb index 332fc5c8e..699e70ea0 100644 --- a/lib/review/builder.rb +++ b/lib/review/builder.rb @@ -279,17 +279,33 @@ def bibpaper(lines, id, caption) def inline_hd(id) m = /\A([^|]+)\|(.+)/.match(id) chapter = @book.chapters.detect{|chap| chap.id == m[1]} if m && m[1] - return inline_hd_chap(chapter, m[2]) if chapter - return inline_hd_chap(@chapter, id) + if chapter + inline_hd_chap(chapter, m[2]) + else + inline_hd_chap(@chapter, id) + end + rescue KeyError + error "unknown hd: #{id}" + nofunc_text("[UnknownHeader:#{id}]") end def inline_column(id) - @chapter.column(id).caption - rescue + m = /\A([^|]+)\|(.+)/.match(id) + chapter = @book.chapters.detect{|chap| chap.id == m[1]} if m && m[1] + if chapter + inline_column_chap(chapter, m[2]) + else + inline_column_chap(@chapter, id) + end + rescue KeyError error "unknown column: #{id}" nofunc_text("[UnknownColumn:#{id}]") end + def inline_column_chap(chapter, id) + chapter.column(id).caption + end + def raw(str) if matched = str.match(/\|(.*?)\|(.*)/) builders = matched[1].split(/,/).map{|i| i.gsub(/\s/, '') } diff --git a/lib/review/htmlbuilder.rb b/lib/review/htmlbuilder.rb index 1fbcde66a..ef4c949ca 100644 --- a/lib/review/htmlbuilder.rb +++ b/lib/review/htmlbuilder.rb @@ -962,15 +962,12 @@ def column_label(id) end private :column_label - def inline_column(id) + def inline_column_chap(chapter, id) if @book.config["chapterlink"] - %Q(#{I18n.t("column", escape_html(@chapter.column(id).caption))}) + %Q(#{I18n.t("column", escape_html(chapter.column(id).caption))}) else - I18n.t("column", escape_html(@chapter.column(id).caption)) + I18n.t("column", escape_html(chapter.column(id).caption)) end - rescue KeyError - error "unknown column: #{id}" - nofunc_text("[UnknownColumn:#{id}]") end def inline_list(id) diff --git a/lib/review/idgxmlbuilder.rb b/lib/review/idgxmlbuilder.rb index 31e2105ee..1b7ee1795 100644 --- a/lib/review/idgxmlbuilder.rb +++ b/lib/review/idgxmlbuilder.rb @@ -316,15 +316,12 @@ def column_label(id) end private :column_label - def inline_column(id) + def inline_column_chap(chapter, id) if @book.config["chapterlink"] - %Q(#{escape_html(@chapter.column(id).caption)}) + %Q(#{escape_html(chapter.column(id).caption)}) else - escape_html(@chapter.column(id).caption) + escape_html(chapter.column(id).caption) end - rescue KeyError - error "unknown column: #{id}" - nofunc_text("[UnknownColumn:#{id}]") end def inline_list(id) diff --git a/lib/review/latexbuilder.rb b/lib/review/latexbuilder.rb index e8468c25a..077f16e42 100644 --- a/lib/review/latexbuilder.rb +++ b/lib/review/latexbuilder.rb @@ -771,8 +771,8 @@ def inline_hd_chap(chap, id) end end - def inline_column(id) - macro('reviewcolumnref', "#{@chapter.column(id).caption}", column_label(id)) + def inline_column_chap(chapter, id) + macro('reviewcolumnref', "#{chapter.column(id).caption}", column_label(id)) end def inline_raw(str) diff --git a/test/test_htmlbuilder.rb b/test/test_htmlbuilder.rb index 3545dc760..ddcae160c 100644 --- a/test/test_htmlbuilder.rb +++ b/test/test_htmlbuilder.rb @@ -1,10 +1,7 @@ # encoding: utf-8 require 'test_helper' -require 'review/compiler' -require 'review/book' -require 'review/htmlbuilder' -require 'review/i18n' +require 'review' class HTMLBuidlerTest < Test::Unit::TestCase include ReVIEW @@ -792,6 +789,16 @@ def test_column_ref assert_equal expected, column_helper(review) end + def test_column_in_aother_chapter_ref + def @chapter.column_index + items = [Book::ColumnIndex::Item.new("chap1|column", 1, "column_cap")] + Book::ColumnIndex.new(items) + end + + actual = compile_inline("test @{chap1|column} test2") + expected = "test コラム「column_cap」 test2" + assert_equal expected, actual + end def test_ul src =<<-EOS