Skip to content

Commit

Permalink
Use the snip extension to detect a render if one is present.
Browse files Browse the repository at this point in the history
  • Loading branch information
lazyatom committed Mar 1, 2011
1 parent 5845df0 commit 00ca0fc
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 11 deletions.
4 changes: 2 additions & 2 deletions Gemfile.lock
Expand Up @@ -7,7 +7,7 @@ PATH
haml
rack (>= 0.9.1)
ratom (>= 0.3.5)
soup (>= 1.0.3)
soup (>= 1.0.5)
treetop (>= 1.4.1)

GEM
Expand All @@ -25,7 +25,7 @@ GEM
rake (0.8.7)
ratom (0.6.7)
libxml-ruby (>= 1.1.2)
soup (1.0.3)
soup (1.0.5)
treetop (1.4.9)
polyglot (>= 0.3.1)

Expand Down
2 changes: 1 addition & 1 deletion Rakefile
Expand Up @@ -41,7 +41,7 @@ if Object.const_defined?(:Gem)

# All the other gems we need.
s.add_dependency("rack", ">= 0.9.1")
s.add_dependency("soup", ">= 1.0.3")
s.add_dependency("soup", ">= 1.0.5")
s.add_dependency("ratom", ">= 0.3.5")
s.add_dependency("RedCloth", ">= 4.1.1")
s.add_dependency("BlueCloth", ">= 1.0.0")
Expand Down
12 changes: 12 additions & 0 deletions lib/vanilla/app.rb
Expand Up @@ -75,6 +75,8 @@ def rendering(snip)
def renderer_for(snip)
if snip && snip.render_as && !snip.render_as.empty?
Vanilla::Renderers.const_get(snip.render_as)
elsif snip && snip.extension && !snip.extension.empty?
Vanilla::Renderers.const_get(renderer_for_extension(snip.extension))
else
Vanilla::Renderers::Base
end
Expand Down Expand Up @@ -103,6 +105,16 @@ def snip(attributes)

private

def renderer_for_extension(extension)
mapping = Hash.new("Base")
mapping["markdown"] = "Markdown"
mapping["textile"] = "Textile"
mapping["erb"] = "Erb"
mapping["rb"] = "Ruby"
mapping["haml"] = "Haml"
mapping[extension]
end

def prepare_configuration(config_file)
config_file ||= "config.yml"
@config = YAML.load(File.open(config_file)) rescue {}
Expand Down
15 changes: 15 additions & 0 deletions test/vanilla_app_test.rb
Expand Up @@ -46,6 +46,21 @@
assert_equal Vanilla::Renderers::Raw, @app.renderer_for(snip)
end

context "using the snip extension" do
{
"markdown" => Vanilla::Renderers::Markdown,
"textile" => Vanilla::Renderers::Textile,
"erb" => Vanilla::Renderers::Erb,
"rb" => Vanilla::Renderers::Ruby,
"haml" => Vanilla::Renderers::Haml
}.each do |extension, renderer|
should "return the renderer #{renderer} when the snip has extension #{extension}" do
snip = create_snip(:name => "blah", :extension => extension)
assert_equal renderer, @app.renderer_for(snip)
end
end
end

should "return Vanilla::Renderers::Base if no render_as property exists" do
snip = create_snip(:name => "blah")
assert_equal Vanilla::Renderers::Base, @app.renderer_for(snip)
Expand Down
11 changes: 3 additions & 8 deletions vanilla.gemspec
Expand Up @@ -29,11 +29,6 @@ Gem::Specification.new do |s|
"test/snip_reference_parser_test.rb",
"test/snip_reference_test.rb",
"test/test_helper.rb",
"test/tmp",
"test/tmp/config.yml",
"test/tmp/soup",
"test/tmp/soup/current_snip.snip",
"test/tmp/soup/layout.snip",
"test/vanilla_app_test.rb",
"test/vanilla_presenting_test.rb",
"test/vanilla_request_test.rb",
Expand Down Expand Up @@ -105,7 +100,7 @@ Gem::Specification.new do |s|

if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
s.add_runtime_dependency(%q<rack>, [">= 0.9.1"])
s.add_runtime_dependency(%q<soup>, [">= 1.0.3"])
s.add_runtime_dependency(%q<soup>, [">= 1.0.5"])
s.add_runtime_dependency(%q<ratom>, [">= 0.3.5"])
s.add_runtime_dependency(%q<RedCloth>, [">= 4.1.1"])
s.add_runtime_dependency(%q<BlueCloth>, [">= 1.0.0"])
Expand All @@ -115,7 +110,7 @@ Gem::Specification.new do |s|
s.add_development_dependency(%q<mocha>, [">= 0"])
else
s.add_dependency(%q<rack>, [">= 0.9.1"])
s.add_dependency(%q<soup>, [">= 1.0.3"])
s.add_dependency(%q<soup>, [">= 1.0.5"])
s.add_dependency(%q<ratom>, [">= 0.3.5"])
s.add_dependency(%q<RedCloth>, [">= 4.1.1"])
s.add_dependency(%q<BlueCloth>, [">= 1.0.0"])
Expand All @@ -126,7 +121,7 @@ Gem::Specification.new do |s|
end
else
s.add_dependency(%q<rack>, [">= 0.9.1"])
s.add_dependency(%q<soup>, [">= 1.0.3"])
s.add_dependency(%q<soup>, [">= 1.0.5"])
s.add_dependency(%q<ratom>, [">= 0.3.5"])
s.add_dependency(%q<RedCloth>, [">= 4.1.1"])
s.add_dependency(%q<BlueCloth>, [">= 1.0.0"])
Expand Down

0 comments on commit 00ca0fc

Please sign in to comment.