comfortable_mexican_sofa 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.7
1
+ 1.0.9
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{comfortable_mexican_sofa}
8
- s.version = "1.0.7"
8
+ s.version = "1.0.9"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Oleg Khabarov", "The Working Group Inc"]
12
- s.date = %q{2010-10-27}
12
+ s.date = %q{2010-10-28}
13
13
  s.description = %q{}
14
14
  s.email = %q{oleg@theworkinggroup.ca}
15
15
  s.extra_rdoc_files = [
@@ -6,6 +6,8 @@
6
6
  # end
7
7
  module CmsTag
8
8
 
9
+ TOKENIZER_REGEX = /(<\s*cms:.*?\/?>)|((?:[^<]|\<(?!\s*cms:.*?\/?>))+)/
10
+
9
11
  attr_accessor :params,
10
12
  :parent
11
13
 
@@ -81,7 +83,7 @@ private
81
83
  # Tags are processed further and their content is expanded in the same way.
82
84
  # Tags are defined in the parent tags are ignored and not rendered.
83
85
  def self.process_content(cms_page, content = '', parent_tag = nil)
84
- tokens = content.to_s.scan(/(<\s*cms:\w+:\w+(?::.+)?\s*\/?>)|((?:[^<]|\<(?!\s*cms:\w+:\w+(?::.+)?\s*\/?>))+)/)
86
+ tokens = content.to_s.scan(TOKENIZER_REGEX)
85
87
  tokens.collect do |tag_signature, text|
86
88
  if tag_signature
87
89
  if tag = self.initialize_tag(cms_page, tag_signature)
@@ -23,11 +23,13 @@ module ComfortableMexicanSofa::ControllerMethods
23
23
  def render_with_cms(options = {}, locals = {}, &block)
24
24
  if path = options.delete(:cms_page)
25
25
  site = CmsSite.find_by_hostname(request.host.downcase)
26
- page = site && site.cms_pages.find_by_full_path(path)
26
+ page = CmsPage.load_from_file(site, path) if site && ComfortableMexicanSofa.configuration.seed_data_path
27
+ page ||= site && site.cms_pages.find_by_full_path(path)
27
28
  if page
28
29
  cms_app_layout = page.cms_layout.try(:app_layout)
29
30
  options[:layout] ||= cms_app_layout.blank?? nil : cms_app_layout
30
31
  options[:inline] = page.content
32
+ @cms_page = page
31
33
  render_without_cms(options, locals, &block)
32
34
  else
33
35
  raise ActionView::MissingTemplate.new([path], path, "CMS page not found", nil)
@@ -4,8 +4,9 @@ class RenderCmsTest < ActionDispatch::IntegrationTest
4
4
 
5
5
  def setup
6
6
  Rails.application.routes.draw do
7
- get '/render-implicit' => 'render_test#implicit'
8
- get '/render-explicit' => 'render_test#explicit'
7
+ get '/render-implicit' => 'render_test#implicit'
8
+ get '/render-explicit' => 'render_test#explicit'
9
+ get '/seed_data_page' => 'render_test#seed_data_page'
9
10
  end
10
11
  super
11
12
  end
@@ -21,6 +22,9 @@ class RenderCmsTest < ActionDispatch::IntegrationTest
21
22
  def explicit
22
23
  render :cms_page => '/render-explicit-page'
23
24
  end
25
+ def seed_data_page
26
+ render :cms_page => '/'
27
+ end
24
28
  end
25
29
 
26
30
  def test_get_with_no_template
@@ -54,4 +58,13 @@ class RenderCmsTest < ActionDispatch::IntegrationTest
54
58
  end
55
59
  end
56
60
 
61
+ def test_get_seed_data_page
62
+ ComfortableMexicanSofa.configuration.seed_data_path = File.expand_path('../cms_seeds', File.dirname(__FILE__))
63
+
64
+ get '/seed_data_page'
65
+ assert_response :success
66
+ assert assigns(:cms_page)
67
+ assert assigns(:cms_page).new_record?
68
+ end
69
+
57
70
  end
@@ -2,6 +2,50 @@ require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
3
  class CmsTagTest < ActiveSupport::TestCase
4
4
 
5
+ def test_tokenizer_regex
6
+ regex = CmsTag::TOKENIZER_REGEX
7
+
8
+ tokens = 'content<<cms:some_tag content'.scan(regex)
9
+ assert_equal nil, tokens[0][0]
10
+ assert_equal 'content<<cms:some_tag content', tokens[0][1]
11
+
12
+ tokens = 'content<<cms some_tag>>content'.scan(regex)
13
+ assert_equal nil, tokens[0][0]
14
+ assert_equal 'content<<cms some_tag>>content', tokens[0][1]
15
+
16
+ tokens = 'content<<cms:some_tag>>content'.scan(regex)
17
+ assert_equal nil, tokens[0][0]
18
+ assert_equal 'content<', tokens[0][1]
19
+ assert_equal '<cms:some_tag>', tokens[1][0]
20
+ assert_equal nil, tokens[1][1]
21
+ assert_equal nil, tokens[2][0]
22
+ assert_equal '>content', tokens[2][1]
23
+
24
+ tokens = 'content<<cms:type:label>>content'.scan(regex)
25
+ assert_equal nil, tokens[0][0]
26
+ assert_equal 'content<', tokens[0][1]
27
+ assert_equal '<cms:type:label>', tokens[1][0]
28
+ assert_equal nil, tokens[1][1]
29
+ assert_equal nil, tokens[2][0]
30
+ assert_equal '>content', tokens[2][1]
31
+
32
+ tokens = 'content<<cms:type:label />>content'.scan(regex)
33
+ assert_equal nil, tokens[0][0]
34
+ assert_equal 'content<', tokens[0][1]
35
+ assert_equal '<cms:type:label />', tokens[1][0]
36
+ assert_equal nil, tokens[1][1]
37
+ assert_equal nil, tokens[2][0]
38
+ assert_equal '>content', tokens[2][1]
39
+
40
+ tokens = 'content<< cms:type:la/b el />>content'.scan(regex)
41
+ assert_equal nil, tokens[0][0]
42
+ assert_equal 'content<', tokens[0][1]
43
+ assert_equal '< cms:type:la/b el />', tokens[1][0]
44
+ assert_equal nil, tokens[1][1]
45
+ assert_equal nil, tokens[2][0]
46
+ assert_equal '>content', tokens[2][1]
47
+ end
48
+
5
49
  def test_content_for_existing_page
6
50
  page = cms_pages(:default)
7
51
  assert page.cms_tags.blank?
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: comfortable_mexican_sofa
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 5
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 7
10
- version: 1.0.7
9
+ - 9
10
+ version: 1.0.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Oleg Khabarov
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-10-27 00:00:00 -04:00
19
+ date: 2010-10-28 00:00:00 -04:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency