Skip to content

Commit

Permalink
Fixing Slim templates
Browse files Browse the repository at this point in the history
  • Loading branch information
leogalmeida committed Oct 28, 2010
1 parent 50064c8 commit 1342c98
Show file tree
Hide file tree
Showing 26 changed files with 425 additions and 41 deletions.
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# slim-rails

slim-rails provides Slim generators for Rails 3. It was based on [haml-rails](http://http://github.com/indirect/haml-rails) and it does basically the same: configures Slim as the template engine automatically for your rails app.
To use it, add this line to your Gemfile:

gem "slim-rails"

And that's it.
Every time you generate a controller or scaffold, you'll get Slim templates.
17 changes: 0 additions & 17 deletions README.rdoc

This file was deleted.

13 changes: 6 additions & 7 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
require 'rubygems'
require 'rake'

require File.expand_path("../lib/slim-rails/version", __FILE__)
begin
require 'jeweler'
Jeweler::Tasks.new do |gem|
gem.name = "slim-rails"
gem.summary = %Q{TODO: one-line summary of your gem}
gem.description = %Q{TODO: longer description of your gem}
gem.version = Slim::Rails::VERSION
gem.summary = "Provides generators for Rails 3"
gem.description = "Provide generators for Rails 3"
gem.email = "lalmeida08@gmail.com"
gem.homepage = "http://github.com/leogalmeida/slim-rails"
gem.authors = ["Leonardo Almeida"]
gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
end
Jeweler::GemcutterTasks.new
rescue LoadError
Expand All @@ -21,15 +20,15 @@ end
require 'rake/testtask'
Rake::TestTask.new(:test) do |test|
test.libs << 'lib' << 'test'
test.pattern = 'test/**/test_*.rb'
test.pattern = 'test/**/*_test.rb'
test.verbose = true
end

begin
require 'rcov/rcovtask'
Rcov::RcovTask.new do |test|
test.libs << 'test'
test.pattern = 'test/**/test_*.rb'
test.pattern = 'test/**/*_test.rb'
test.verbose = true
end
rescue LoadError
Expand Down
16 changes: 16 additions & 0 deletions lib/generators/slim/controller/controller_generator.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
require 'rails/generators/erb/controller/controller_generator'

module Slim
module Generators
class ControllerGenerator < Erb::Generators::ControllerGenerator
source_root File.expand_path("../templates", __FILE__)

protected

def handler
:slim
end

end
end
end
2 changes: 2 additions & 0 deletions lib/generators/slim/controller/templates/view.html.slim
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
h1 <%= class_name %>#<%= @action %>
p Find me in <%= @path %>
16 changes: 16 additions & 0 deletions lib/generators/slim/mailer/mailer_generator.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
require 'generators/slim/controller/controller_generator'

module Slim
module Generators
class MailerGenerator < ControllerGenerator
source_root File.expand_path("../templates", __FILE__)

protected

def format
:text
end

end
end
end
3 changes: 3 additions & 0 deletions lib/generators/slim/mailer/templates/view.text.slim
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<%= class_name %>#<%= @action %>

= @greeting + ", find me in <%= @path %>"
29 changes: 29 additions & 0 deletions lib/generators/slim/scaffold/scaffold_generator.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
require 'rails/generators/erb/scaffold/scaffold_generator'

module Slim
module Generators
class ScaffoldGenerator < Erb::Generators::ScaffoldGenerator
source_root File.expand_path("../templates", __FILE__)

def copy_view_files
available_views.each do |view|
filename = filename_with_extensions(view)
template "#{view}.html.slim", File.join("app/views", controller_file_path, filename)
end
end

hook_for :form_builder, :as => :scaffold

protected

def available_views
%w(index edit show new _form)
end

def handler
:slim
end

end
end
end
15 changes: 15 additions & 0 deletions lib/generators/slim/scaffold/templates/_form.html.slim
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
= form_for @<%= singular_table_name %> do |f|
-if @<%= singular_table_name %>.errors.any?
#error_explanation
h2 = "#{pluralize(@<%= singular_table_name %>.errors.count, "error")} prohibited this <%= singular_table_name %> from being saved:"
ul
- @<%= singular_table_name %>.errors.full_messages.each do |msg|
li= msg

<% for attribute in attributes -%>
.field
= f.label :<%= attribute.name %>
= f.<%= attribute.field_type %> :<%= attribute.name %>
<% end -%>
.actions
= f.submit 'Save'
8 changes: 8 additions & 0 deletions lib/generators/slim/scaffold/templates/edit.html.slim
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
h1 Editing <%= singular_table_name %>

= render 'form'

= link_to 'Show', @<%= singular_table_name %>
\|
= link_to 'Back', <%= index_helper %>_path

23 changes: 23 additions & 0 deletions lib/generators/slim/scaffold/templates/index.html.slim
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
h1 Listing <%= plural_table_name %>

table
tr
<% for attribute in attributes -%>
th <%= attribute.human_name %>
<% end -%>
th
th
th

- @<%= plural_table_name %>.each do |<%= singular_table_name %>|
tr
<% for attribute in attributes -%>
td= <%= singular_table_name %>.<%= attribute.name %>
<% end -%>
td= link_to 'Show', <%= singular_table_name %>
td= link_to 'Edit', edit_<%= singular_table_name %>_path(<%= singular_table_name %>)
td= link_to 'Destroy', <%= singular_table_name %>, :confirm => 'Are you sure?', :method => :delete

br

= link_to 'New <%= human_name %>', new_<%= singular_table_name %>_path
5 changes: 5 additions & 0 deletions lib/generators/slim/scaffold/templates/new.html.slim
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
h1 New <%= singular_table_name %>

= render 'form'

= link_to 'Back', <%= index_helper %>_path
11 changes: 11 additions & 0 deletions lib/generators/slim/scaffold/templates/show.html.slim
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
p#notice = notice

<% for attribute in attributes -%>
p
b <%= attribute.human_name %>:
= @<%= singular_table_name %>.<%= attribute.name %>
<% end -%>

= link_to 'Edit', edit_<%= singular_table_name %>_path(@<%= singular_table_name %>)
\|
= link_to 'Back', <%= index_helper %>_path
14 changes: 14 additions & 0 deletions lib/slim-rails.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
require 'rails'
require 'slim/rails'

module Slim
module Rails
class Railtie < ::Rails::Railtie
if ::Rails.version.to_f >= 3.1
config.app_generators.template_engine :slim
else
config.generators.template_engine :slim
end
end
end
end
5 changes: 5 additions & 0 deletions lib/slim-rails/version.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module Slim
module Rails
VERSION = "0.1.0"
end
end
71 changes: 71 additions & 0 deletions slim-rails.gemspec
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Generated by jeweler
# DO NOT EDIT THIS FILE DIRECTLY
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
# -*- encoding: utf-8 -*-

Gem::Specification.new do |s|
s.name = %q{slim-rails}
s.version = "0.1.0"

s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Leonardo Almeida"]
s.date = %q{2010-10-28}
s.description = %q{Provide generators for Rails 3}
s.email = %q{lalmeida08@gmail.com}
s.extra_rdoc_files = [
"LICENSE",
"README.rdoc"
]
s.files = [
".document",
".gitignore",
"LICENSE",
"README.rdoc",
"Rakefile",
"lib/generators/slim/controller/controller_generator.rb",
"lib/generators/slim/controller/templates/view.html.slim",
"lib/generators/slim/mailer/mailer_generator.rb",
"lib/generators/slim/mailer/templates/view.text.slim",
"lib/generators/slim/scaffold/scaffold_generator.rb",
"lib/generators/slim/scaffold/templates/_form.html.slim",
"lib/generators/slim/scaffold/templates/edit.html.slim",
"lib/generators/slim/scaffold/templates/index.html.slim",
"lib/generators/slim/scaffold/templates/new.html.slim",
"lib/generators/slim/scaffold/templates/show.html.slim",
"lib/slim-rails.rb",
"lib/slim-rails/version.rb",
"slim-rails.gemspec",
"test/fixtures/routes.rb",
"test/lib/generators/slim/controller_generator_test.rb",
"test/lib/generators/slim/mailer_generator_test.rb",
"test/lib/generators/slim/scaffold_generator_test.rb",
"test/lib/generators/slim/testing_helper.rb",
"test/test_helper.rb",
"tmp/rails/config/routes.rb",
"tmp/rails/public/stylesheets/scaffold.css"
]
s.homepage = %q{http://github.com/leogalmeida/slim-rails}
s.rdoc_options = ["--charset=UTF-8"]
s.require_paths = ["lib"]
s.rubygems_version = %q{1.3.7}
s.summary = %q{Provides generators for Rails 3}
s.test_files = [
"test/fixtures/routes.rb",
"test/lib/generators/slim/controller_generator_test.rb",
"test/lib/generators/slim/mailer_generator_test.rb",
"test/lib/generators/slim/scaffold_generator_test.rb",
"test/lib/generators/slim/testing_helper.rb",
"test/test_helper.rb"
]

if s.respond_to? :specification_version then
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
s.specification_version = 3

if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
else
end
else
end
end

2 changes: 2 additions & 0 deletions test/fixtures/routes.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
TestApp.routes.draw do |map|
end
10 changes: 0 additions & 10 deletions test/helper.rb

This file was deleted.

17 changes: 17 additions & 0 deletions test/lib/generators/slim/controller_generator_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
require 'test_helper'
require 'lib/generators/slim/testing_helper'

class Slim::Generators::ControllerGeneratorTest < Rails::Generators::TestCase
destination File.join(Rails.root)
tests Rails::Generators::ControllerGenerator
arguments %w(Account foo bar --template-engine slim)

setup :prepare_destination
setup :copy_routes

test "should invoke template engine" do
run_generator
assert_file "app/views/account/foo.html.slim", %r(app/views/account/foo\.html\.slim)
assert_file "app/views/account/bar.html.slim", %r(app/views/account/bar\.html\.slim)
end
end
24 changes: 24 additions & 0 deletions test/lib/generators/slim/mailer_generator_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
require 'test_helper'
require 'lib/generators/slim/testing_helper'

class Slim::Generators::MailerGeneratorTest < Rails::Generators::TestCase
destination File.join(Rails.root)
tests Rails::Generators::MailerGenerator
arguments %w(notifier foo bar --template-engine slim)

setup :prepare_destination
setup :copy_routes

test "should invoke template engine" do
run_generator
assert_file "app/views/notifier/foo.text.slim" do |view|
assert_match %r(app/views/notifier/foo\.text\.slim), view
assert_match /\= @greeting/, view
end

assert_file "app/views/notifier/bar.text.slim" do |view|
assert_match %r(app/views/notifier/bar\.text\.slim), view
assert_match /\= @greeting/, view
end
end
end
26 changes: 26 additions & 0 deletions test/lib/generators/slim/scaffold_generator_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
require 'test_helper'
require 'lib/generators/slim/testing_helper'

class Slim::Generators::ScaffoldGeneratorTest < Rails::Generators::TestCase
destination File.join(Rails.root)
tests Rails::Generators::ScaffoldGenerator
arguments %w(product_line title:string price:integer --template-engine slim)

setup :prepare_destination
setup :copy_routes

test "should invoke template engine" do
run_generator

%w(index edit new show _form).each { |view| assert_file "app/views/product_lines/#{view}.html.slim" }
assert_no_file "app/views/layouts/product_lines.html.slim"
end

test "should revoke template engine" do
run_generator
run_generator ["product_line"], :behavior => :revoke

assert_no_file "app/views/product_lines"
assert_no_file "app/views/layouts/product_lines.html.slim"
end
end
1 change: 1 addition & 0 deletions test/lib/generators/slim/testing_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
require_generators :slim => ['scaffold', 'controller', 'mailer']
Loading

0 comments on commit 1342c98

Please sign in to comment.