From c3c33b68dd2002b00711cc5cdeb3568f750911bb Mon Sep 17 00:00:00 2001 From: Jacques Distler Date: Thu, 25 Dec 2008 17:41:35 -0600 Subject: [PATCH] Multiple leading capital letters in a WikiWord CMyApp is a WikiWord (at least, on other Wiki systems, like TWiki). Should allow that here Also, choose a more obscure name for the thread-local variable tracking included chunks. --- lib/chunks/include.rb | 23 ++++++++++++----------- lib/wiki_words.rb | 2 +- test/unit/wiki_words_test.rb | 4 ++++ 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/lib/chunks/include.rb b/lib/chunks/include.rb index 6eeaaacc..2b91b700 100644 --- a/lib/chunks/include.rb +++ b/lib/chunks/include.rb @@ -45,21 +45,22 @@ class Include < WikiChunk::WikiReference end # We track included pages in a thread-local variable. - # This allows a multi-threaded Rails to handle one request/thread, - # without getting confused. - - def clear_include_list - Thread.current[:included_by] = [] - end + # This allows a multi-threaded Rails to handle multiple + # simultaneous requests (one request/thread), without + # getting confused. def add_to_include_list - Thread.current[:included_by] ? - Thread.current[:included_by].push(@content.page_name) : - Thread.current[:included_by] = [@content.page_name] + Thread.current[:chunk_included_by] ? + Thread.current[:chunk_included_by].push(@content.page_name) : + Thread.current[:chunk_included_by] = [@content.page_name] end - + + def clear_include_list + Thread.current[:chunk_included_by] = [] + end + def self_inclusion(refpage) - if Thread.current[:included_by].include?(refpage.page.name) + if Thread.current[:chunk_included_by].include?(refpage.page.name) @content.delete_chunk(self) clear_include_list else diff --git a/lib/wiki_words.rb b/lib/wiki_words.rb index 8f6182ea..27626dbe 100644 --- a/lib/wiki_words.rb +++ b/lib/wiki_words.rb @@ -14,7 +14,7 @@ module WikiWords "абвгдежзийклмнопрстуфхцчшщъыьэюяѐёђѓєѕіїјљћќѝўџѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿҁҋҌҍҏґғҕҗҙқҝҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӀӂӄӆӈӊӌӎӑӓӕӗәӛӝӟӡӣӥӧөӫӭӯӱӳӵӹ" + "աբգդեզէըթժիլխծկհձղճմյնշոչպջռսվտրցւփքօֆև" - WIKI_WORD_PATTERN = '[A-Z' + I18N_HIGHER_CASE_LETTERS + '][a-z' + I18N_LOWER_CASE_LETTERS + ']+[A-Z' + I18N_HIGHER_CASE_LETTERS + ']\w+' + WIKI_WORD_PATTERN = '[A-Z' + I18N_HIGHER_CASE_LETTERS + ']+[a-z' + I18N_LOWER_CASE_LETTERS + ']+[A-Z' + I18N_HIGHER_CASE_LETTERS + ']\w+' CAMEL_CASED_WORD_BORDER = /([a-z#{I18N_LOWER_CASE_LETTERS}])([A-Z#{I18N_HIGHER_CASE_LETTERS}])/u def self.separate(wiki_word) diff --git a/test/unit/wiki_words_test.rb b/test/unit/wiki_words_test.rb index 1099c160..79ae28df 100755 --- a/test/unit/wiki_words_test.rb +++ b/test/unit/wiki_words_test.rb @@ -11,4 +11,8 @@ class WikiWordsTest < Test::Unit::TestCase assert_equal "Æe ÅØle Øen", WikiWords.separate("ÆeÅØleØen") assert_equal "Legetøj", WikiWords.separate("Legetøj") end + + def test_multiple_leading_capital_letters + assert_equal "CMy App", WikiWords.separate("CMyApp") + end end