vanilla 1.17 → 1.17.1
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/Rakefile +21 -7
- data/bin/vanilla +2 -2
- data/lib/vanilla.rb +10 -7
- data/lib/vanilla/app.rb +57 -97
- data/lib/vanilla/config.rb +46 -0
- data/lib/vanilla/console.rb +1 -1
- data/lib/vanilla/renderers/base.rb +12 -2
- data/lib/vanilla/request.rb +9 -34
- data/lib/vanilla/routing.rb +34 -0
- data/lib/vanilla/test_helper.rb +10 -7
- data/pristine_app/Gemfile.lock +35 -0
- data/pristine_app/application.rb +2 -4
- data/pristine_app/public/vanilla.css +299 -9
- data/pristine_app/soups/base/layout.snip +11 -7
- data/pristine_app/soups/base/start.snip +15 -14
- data/pristine_app/soups/system/current_snip.rb +2 -2
- data/pristine_app/soups/system/feed.rb +30 -0
- data/pristine_app/soups/system/index.rb +3 -3
- data/pristine_app/soups/system/link_to.rb +5 -1
- data/pristine_app/soups/system/link_to_current_snip.rb +2 -3
- data/pristine_app/soups/tutorial/tutorial-layout.snip +9 -2
- data/pristine_app/soups/tutorial/tutorial-links.snip +2 -1
- data/pristine_app/soups/tutorial/tutorial-removing.snip.markdown +8 -0
- data/pristine_app/soups/tutorial/tutorial-renderers.snip.markdown +10 -4
- data/pristine_app/soups/tutorial/tutorial.snip.markdown +0 -1
- data/pristine_app/soups/tutorial/vanilla-rb.snip +4 -6
- data/pristine_app/tmp/restart.txt +0 -0
- data/test/core/configuration_test.rb +89 -0
- data/test/{dynasnip_test.rb → core/dynasnip_test.rb} +0 -0
- data/test/{renderers → core/renderers}/base_renderer_test.rb +37 -0
- data/test/{renderers → core/renderers}/erb_renderer_test.rb +0 -0
- data/test/{renderers → core/renderers}/haml_renderer_test.rb +0 -0
- data/test/{renderers → core/renderers}/markdown_renderer_test.rb +0 -0
- data/test/{renderers → core/renderers}/raw_renderer_test.rb +0 -0
- data/test/{renderers → core/renderers}/ruby_renderer_test.rb +0 -0
- data/test/core/routing_test.rb +30 -0
- data/test/{snip_inclusion_test.rb → core/snip_inclusion_test.rb} +0 -0
- data/test/{snip_reference_parser_test.rb → core/snip_reference_parser_test.rb} +0 -0
- data/test/{test_helper.rb → core/test_helper.rb} +5 -4
- data/test/core/vanilla_app_test.rb +51 -0
- data/test/{vanilla_presenting_test.rb → core/vanilla_presenting_test.rb} +15 -1
- data/test/{vanilla_request_test.rb → core/vanilla_request_test.rb} +0 -0
- data/test/pristine_app/current_snip_test.rb +46 -0
- data/test/pristine_app/feed_test.rb +47 -0
- data/test/pristine_app/index_test.rb +34 -0
- data/test/pristine_app/link_to_current_snip_test.rb +11 -0
- data/test/pristine_app/link_to_test.rb +27 -0
- data/test/pristine_app/page_title_test.rb +15 -0
- data/test/pristine_app/raw_test.rb +24 -0
- data/test/pristine_app/test_helper.rb +25 -0
- metadata +83 -42
- data/lib/vanilla/routes.rb +0 -18
- data/test/dynasnips/link_to_current_snip_test.rb +0 -19
- data/test/dynasnips/link_to_test.rb +0 -27
- data/test/dynasnips/page_title_test.rb +0 -19
- data/test/vanilla_app_test.rb +0 -111
data/lib/vanilla/routes.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
module Vanilla
|
2
|
-
# Expects to be able to call 'soup' on whatever it is included into
|
3
|
-
module Routes
|
4
|
-
def link_to(link_text, snip_name=link_text, part=nil)
|
5
|
-
if soup[snip_name]
|
6
|
-
%{<a href="#{url_to(snip_name, part)}">#{link_text}</a>}
|
7
|
-
else
|
8
|
-
%{<a class="missing" href="#{url_to(snip_name, part)}">#{link_text}</a>}
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def url_to(snip_name, part=nil)
|
13
|
-
url = "/#{snip_name.gsub(" ", "+")}"
|
14
|
-
url += "/#{part}" if part
|
15
|
-
url
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require "test_helper"
|
2
|
-
$LOAD_PATH.unshift File.expand_path("../../../pristine_app/soups/system", __FILE__)
|
3
|
-
require "link_to_current_snip"
|
4
|
-
|
5
|
-
context "The link_to_current_snip dynasnip" do
|
6
|
-
setup do
|
7
|
-
app.soup << LinkToCurrentSnip.snip_attributes
|
8
|
-
create_snip :name => "test", :content => "test {link_to_current_snip}"
|
9
|
-
end
|
10
|
-
|
11
|
-
should "render a link to the snip that was requested" do
|
12
|
-
assert_response_body %{test <a href="/test">test</a>}, "/test"
|
13
|
-
end
|
14
|
-
|
15
|
-
should "render a link to the snip that was requested even if it isn't the snip that included the dyna" do
|
16
|
-
create_snip :name => "othertest", :content => "othertest {test}"
|
17
|
-
assert_response_body %{othertest test <a href="/othertest">othertest</a>}, "/othertest"
|
18
|
-
end
|
19
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require "test_helper"
|
2
|
-
$LOAD_PATH.unshift File.expand_path("../../../pristine_app/soups/system", __FILE__)
|
3
|
-
require "link_to"
|
4
|
-
|
5
|
-
context "The link_to dynasnip" do
|
6
|
-
setup do
|
7
|
-
create_snip :name => "start", :content => "hello"
|
8
|
-
end
|
9
|
-
|
10
|
-
should "render a link to a snip that exists" do
|
11
|
-
assert_equal %{<a href="/start">start</a>}, render_dynasnip(LinkTo, "start")
|
12
|
-
end
|
13
|
-
|
14
|
-
should "allow specification of the link text" do
|
15
|
-
assert_equal %{<a href="/start">the start snip</a>}, render_dynasnip(LinkTo, "start", "the start snip")
|
16
|
-
end
|
17
|
-
|
18
|
-
should "mark snips that are missing with a class" do
|
19
|
-
assert_equal %{<a class="missing" href="/missing">missing</a>}, render_dynasnip(LinkTo, "missing")
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
def render_dynasnip(klass, *args)
|
25
|
-
klass.new(app).handle(*args)
|
26
|
-
end
|
27
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require "test_helper"
|
2
|
-
$LOAD_PATH.unshift File.expand_path("../../../pristine_app/soups/system", __FILE__)
|
3
|
-
require "page_title"
|
4
|
-
|
5
|
-
context "The page_title dynasnip" do
|
6
|
-
setup do
|
7
|
-
app.soup << PageTitle.snip_attributes
|
8
|
-
end
|
9
|
-
|
10
|
-
should "render as the requested snip name if that snip has no title" do
|
11
|
-
create_snip :name => "test", :content => "{page_title}"
|
12
|
-
assert_response_body %{test}, "/test"
|
13
|
-
end
|
14
|
-
|
15
|
-
should "render as the requested snip's page_title when that attribute is present" do
|
16
|
-
create_snip :name => "test", :content => "{page_title}", :page_title => "This is a test"
|
17
|
-
assert_response_body %{This is a test}, "/test"
|
18
|
-
end
|
19
|
-
end
|
data/test/vanilla_app_test.rb
DELETED
@@ -1,111 +0,0 @@
|
|
1
|
-
require "test_helper"
|
2
|
-
require "tmpdir"
|
3
|
-
|
4
|
-
describe Vanilla::App do
|
5
|
-
context "when behaving as a Rack application" do
|
6
|
-
should "return a valid rack response" do
|
7
|
-
create_snip(:name => "test", :content => "content")
|
8
|
-
get "/test.text"
|
9
|
-
assert_equal 200, last_response.status
|
10
|
-
assert_kind_of Hash, last_response.headers
|
11
|
-
assert_equal "content", last_response.body
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
context "when being configured" do
|
16
|
-
should "default the root snip to 'start'" do
|
17
|
-
create_snip :name => "start", :content => "default"
|
18
|
-
assert_response_body "default", "/"
|
19
|
-
end
|
20
|
-
|
21
|
-
should "allow a customised root snip" do
|
22
|
-
create_snip :name => "start", :content => "default"
|
23
|
-
create_snip :name => "custom", :content => "custom"
|
24
|
-
app.config[:root_snip] = "custom"
|
25
|
-
assert_response_body "custom", "/"
|
26
|
-
end
|
27
|
-
|
28
|
-
should "allow specification of the root directory to aide loading external soups" do
|
29
|
-
soup_dir = File.join(Dir.tmpdir, "my_soup")
|
30
|
-
FileUtils.mkdir_p(soup_dir)
|
31
|
-
File.open(File.join(soup_dir, "blah.snip"), "w") { |f| f.write "Hello superfriends" }
|
32
|
-
|
33
|
-
class TestApp < Vanilla::App
|
34
|
-
configure do |c|
|
35
|
-
c.root = Dir.tmpdir
|
36
|
-
c.soups = ["my_soup"]
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
app =
|
41
|
-
assert_equal "Hello superfriends", TestApp.new.soup['blah'].content
|
42
|
-
end
|
43
|
-
|
44
|
-
should "allow configuration against the class" do
|
45
|
-
class TestApp < Vanilla::App
|
46
|
-
end
|
47
|
-
|
48
|
-
TestApp.configure do |config|
|
49
|
-
config.soups = ["blah", "monkey"]
|
50
|
-
config.root = Dir.tmpdir
|
51
|
-
end
|
52
|
-
|
53
|
-
assert_equal ["blah", "monkey"], TestApp.new.config[:soups]
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
context "when detecting the snip renderer" do
|
58
|
-
should "return the constant refered to in the render_as property of the snip" do
|
59
|
-
snip = create_snip(:name => "blah", :render_as => "Raw")
|
60
|
-
assert_equal Vanilla::Renderers::Raw, app.renderer_for(snip)
|
61
|
-
end
|
62
|
-
|
63
|
-
context "using the snip extension" do
|
64
|
-
{
|
65
|
-
"markdown" => Vanilla::Renderers::Markdown,
|
66
|
-
"textile" => Vanilla::Renderers::Textile,
|
67
|
-
"erb" => Vanilla::Renderers::Erb,
|
68
|
-
"rb" => Vanilla::Renderers::Ruby,
|
69
|
-
"haml" => Vanilla::Renderers::Haml
|
70
|
-
}.each do |extension, renderer|
|
71
|
-
should "return the renderer #{renderer} when the snip has extension #{extension}" do
|
72
|
-
snip = create_snip(:name => "blah", :extension => extension)
|
73
|
-
assert_equal renderer, app.renderer_for(snip)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
should "respect snip renderers passed in the config" do
|
79
|
-
TestApp.configure do |c|
|
80
|
-
c.renderers = {"markdown" => "Vanilla::Renderers::Bold"}
|
81
|
-
end
|
82
|
-
snip = create_snip(:name => "blah", :extension => "markdown")
|
83
|
-
assert_equal Vanilla::Renderers::Bold, TestApp.new.renderer_for(snip)
|
84
|
-
end
|
85
|
-
|
86
|
-
should "return Vanilla::Renderers::Base if no render_as property exists" do
|
87
|
-
snip = create_snip(:name => "blah")
|
88
|
-
assert_equal Vanilla::Renderers::Base, app.renderer_for(snip)
|
89
|
-
end
|
90
|
-
|
91
|
-
should "return Vanilla::Renderers::Base if the render_as property is blank" do
|
92
|
-
snip = create_snip(:name => "blah", :render_as => '')
|
93
|
-
assert_equal Vanilla::Renderers::Base, app.renderer_for(snip)
|
94
|
-
end
|
95
|
-
|
96
|
-
should "raise an error if the specified renderer doesn't exist" do
|
97
|
-
snip = create_snip(:name => "blah", :render_as => "NonExistentClass")
|
98
|
-
assert_raises(NameError) { @app.renderer_for(snip) }
|
99
|
-
end
|
100
|
-
|
101
|
-
should "load constants presented as a string" do
|
102
|
-
class ::MyRenderer
|
103
|
-
end
|
104
|
-
TestApp.configure do |c|
|
105
|
-
c.renderers = {"my_renderer" => "MyRenderer"}
|
106
|
-
end
|
107
|
-
snip = create_snip(:name => "blah", :render_as => "my_renderer")
|
108
|
-
assert_equal MyRenderer, TestApp.new.renderer_for(snip)
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|