adjusting tokenizer regex again
Oleg
committed Nov 03, 2010
commit 5f9eceb812b5d25d035d62c078b78e27214f9eb9
Showing 4
changed files with
22 additions
and 6 deletions
README.md
+1
-1
| @@ | @@ -14,7 +14,7 @@ Add gem definition to your Gemfile: |
| config.gem 'comfortable_mexican_sofa' | |
| Then from the Rails project's root run: | |
| - | |
| + | |
| bundle install | |
| rails g cms | |
| rake db:migrate | |
comfortable_mexican_sofa/cms_tag.rb b/lib/comfortable_mexican_sofa/cms_tag.rb
+1
-1
| @@ | @@ -6,7 +6,7 @@ |
| # end | |
| module CmsTag | |
| - | TOKENIZER_REGEX = /(\{\{\s*cms:.*?\}\})|((?:[^\{\{]|\{\{(?!\s*cms:.*?\}\}))+)/ |
| + | TOKENIZER_REGEX = /(\{\{\s*cms:[^{}]*\}\})|((?:\{?[^{])+|\{+)/ |
| attr_accessor :params, | |
| :parent | |
test/unit/cms_tag_test.rb
+16
-4
| @@ | @@ -5,13 +5,25 @@ class CmsTagTest < ActiveSupport::TestCase |
| def test_tokenizer_regex | |
| regex = CmsTag::TOKENIZER_REGEX | |
| + | tokens = 'text { text } text'.scan(regex) |
| + | assert_equal nil, tokens[0][0] |
| + | assert_equal 'text { text } text', tokens[0][1] |
| + | |
| tokens = 'content<{{cms:some_tag content'.scan(regex) | |
| - | assert_equal nil, tokens[0][0] |
| - | assert_equal 'content<{{cms:some_tag content', tokens[0][1] |
| + | assert_equal nil, tokens[0][0] |
| + | assert_equal 'content<', tokens[0][1] |
| + | assert_equal nil, tokens[1][0] |
| + | assert_equal '{{', tokens[1][1] |
| + | assert_equal nil, tokens[2][0] |
| + | assert_equal 'cms:some_tag content', tokens[2][1] |
| tokens = 'content<{{cms some_tag}}>content'.scan(regex) | |
| - | assert_equal nil, tokens[0][0] |
| - | assert_equal 'content<{{cms some_tag}}>content', tokens[0][1] |
| + | assert_equal nil, tokens[0][0] |
| + | assert_equal 'content<', tokens[0][1] |
| + | assert_equal nil, tokens[1][0] |
| + | assert_equal '{{', tokens[1][1] |
| + | assert_equal nil, tokens[2][0] |
| + | assert_equal 'cms some_tag}}>content',tokens[2][1] |
| tokens = 'content<{{cms:some_tag}}>content'.scan(regex) | |
| assert_equal nil, tokens[0][0] | |
test/unit/cms_tags/partial_test.rb
+4
-0
| @@ | @@ -32,6 +32,10 @@ class PartialTest < ActiveSupport::TestCase |
| assert_equal "<%= render :partial => 'path/to/partial' %>", tag.content | |
| assert_equal "<%= render :partial => 'path/to/partial' %>", tag.render | |
| + | tag = CmsTag::Partial.initialize_tag(cms_pages(:default), '{{cms:partial:path/to/partial:param1}}') |
| + | assert_equal "<%= render :partial => 'path/to/partial', :locals => {:param_1 => 'param1'} %>", tag.content |
| + | assert_equal "<%= render :partial => 'path/to/partial', :locals => {:param_1 => 'param1'} %>", tag.render |
| + | |
| tag = CmsTag::Partial.initialize_tag(cms_pages(:default), '{{cms:partial:path/to/partial:param1:param2}}') | |
| assert_equal "<%= render :partial => 'path/to/partial', :locals => {:param_1 => 'param1', :param_2 => 'param2'} %>", tag.content | |
| assert_equal "<%= render :partial => 'path/to/partial', :locals => {:param_1 => 'param1', :param_2 => 'param2'} %>", tag.render | |