effigy 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -5,6 +5,22 @@ require 'rake/gempackagetask'
5
5
  desc 'Default: run the specs and metrics.'
6
6
  task :default => [:spec, :metrics]
7
7
 
8
+ task :rails_root do
9
+ rails_root = File.join('tmp', 'rails_root')
10
+ unless File.exist?(rails_root)
11
+ FileUtils.mkdir_p(File.dirname(rails_root))
12
+ command = "rails #{rails_root}"
13
+ output = `#{command} 2>&1`
14
+ if $? == 0
15
+ FileUtils.ln_s(FileUtils.pwd, File.join(rails_root, 'vendor', 'plugins'))
16
+ else
17
+ $stderr.puts "Command failed with status #{$?}:"
18
+ $stderr.puts command
19
+ $stderr.puts output
20
+ end
21
+ end
22
+ end
23
+
8
24
  begin
9
25
  require 'spec/rake/spectask'
10
26
 
@@ -33,11 +49,14 @@ begin
33
49
  require 'jeweler'
34
50
  Jeweler::Tasks.new do |gem|
35
51
  gem.name = %q{effigy}
36
- gem.version = "0.1"
37
52
  gem.summary = %q{Effigy provides a view and template framework without a templating language.}
38
53
  gem.description = %q{Define views in Ruby and templates in HTML. Avoid code interpolation or ugly templating languages. Use ids, class names, and semantic structures already present in your documents to produce content.}
39
54
 
40
- gem.files = FileList['[A-Z]*', 'lib/**/*.rb', 'spec/**/*.rb']
55
+ gem.files = FileList['[A-Z]*',
56
+ 'lib/**/*.rb',
57
+ 'spec/**/*.rb',
58
+ 'rails/**/*.rb',
59
+ 'generators/**/*.*']
41
60
  gem.require_path = 'lib'
42
61
  gem.test_files = Dir[*['spec/**/*_spec.rb']]
43
62
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
@@ -0,0 +1,81 @@
1
+ class EffigyViewGenerator < Rails::Generator::NamedBase
2
+
3
+ def manifest
4
+ record do |manifest|
5
+ manifest.effigy_directories
6
+ manifest.effigy_views view_names
7
+ end
8
+ end
9
+
10
+ private
11
+
12
+ def controller_path
13
+ File.join(class_path, file_name)
14
+ end
15
+
16
+ def view_names
17
+ actions
18
+ end
19
+
20
+ def record
21
+ EffigyViewManifest.new(self, controller_path) { |manifest| yield manifest }
22
+ end
23
+
24
+ class EffigyViewManifest < Rails::Generator::Manifest
25
+ def initialize(generator, controller_path)
26
+ @controller_path = controller_path
27
+ super(generator)
28
+ end
29
+
30
+ def effigy_directories
31
+ directory File.join('app', 'views', @controller_path)
32
+ directory File.join('app', 'templates', @controller_path)
33
+ end
34
+
35
+ def effigy_views(view_names)
36
+ view_names.each do |view_name|
37
+ effigy_view view_name
38
+ end
39
+ end
40
+
41
+ def effigy_view(view_name)
42
+ view_path = File.join('app', 'views', @controller_path, "#{view_name}.html.effigy")
43
+ template_path = File.join('app', 'templates', @controller_path, "#{view_name}.html")
44
+ assigns = { :view_class_name => view_class_name(view_name),
45
+ :template_path => template_path,
46
+ :view_path => view_path }
47
+
48
+ template template_for('view'),
49
+ view_path,
50
+ :assigns => assigns
51
+
52
+ template template_for('template'),
53
+ template_path,
54
+ :assigns => assigns
55
+ end
56
+
57
+ private
58
+
59
+ def view_class_name(view_name)
60
+ prefix = "#{@controller_path.camelize}#{view_name.camelize}"
61
+ if layout?
62
+ "#{prefix}Layout".sub(/^::Layouts(::)?/, '')
63
+ else
64
+ "#{prefix}View".sub(/^::/, '')
65
+ end
66
+ end
67
+
68
+ def template_for(file)
69
+ if layout?
70
+ "layout_#{file}.erb"
71
+ else
72
+ "#{file}.erb"
73
+ end
74
+ end
75
+
76
+ def layout?
77
+ @controller_path =~ /^\/layouts/
78
+ end
79
+ end
80
+
81
+ end
@@ -0,0 +1,7 @@
1
+ <html>
2
+ <body>
3
+ <h1><%= view_class_name %></h1>
4
+ <p>Edit me at <%= template_path %></p>
5
+ <p>Edit my view at <%= view_path %></p>
6
+ </body>
7
+ </html>
@@ -0,0 +1,13 @@
1
+ class <%= view_class_name %> < Effigy::Rails::View
2
+ private
3
+ def transform
4
+ # Apply transformations to the template file here:
5
+ # text('h1', 'Hello')
6
+ # Assigns from the action are available:
7
+ # text('h1', @post.title)
8
+ # Transformations will be applied to to the template file:
9
+ # <%= template_path %>
10
+ # See the documentation for more information.
11
+ html('body', content_for(:layout))
12
+ end
13
+ end
@@ -0,0 +1,3 @@
1
+ <h1><%= view_class_name %></h1>
2
+ <p>Edit me at <%= template_path %></p>
3
+ <p>Edit my view at <%= view_path %></p>
@@ -0,0 +1,12 @@
1
+ class <%= view_class_name %> < Effigy::Rails::View
2
+ private
3
+ def transform
4
+ # Apply transformations to the template file here:
5
+ # text('h1', 'Hello')
6
+ # Assigns from the action are available:
7
+ # text('h1', @post.title)
8
+ # Transformations will be applied to to the template file:
9
+ # <%= template_path %>
10
+ # See the documentation for more information.
11
+ end
12
+ end
@@ -0,0 +1 @@
1
+ require 'effigy/rails'
@@ -46,7 +46,7 @@ describe "script/generate effigy_view users create" do
46
46
  end
47
47
 
48
48
  it "should create a view file" do
49
- view_path.should contain("class #{@view_class_name} < Rails::Effigy::View")
49
+ view_path.should contain("class #{@view_class_name} < Effigy::Rails::View")
50
50
  view_path.should contain("private")
51
51
  view_path.should contain("def transform")
52
52
  view_path.should contain(relative_template_path)
@@ -93,7 +93,7 @@ describe "script/generate effigy_view layouts narrow" do
93
93
  end
94
94
 
95
95
  it "should create a view file" do
96
- view_path.should contain("class #{@layout_class_name} < Rails::Effigy::View")
96
+ view_path.should contain("class #{@layout_class_name} < Effigy::Rails::View")
97
97
  view_path.should contain("private")
98
98
  view_path.should contain("def transform")
99
99
  view_path.should contain("html('body', content_for(:layout))")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effigy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Ferris
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-01 00:00:00 -05:00
12
+ date: 2009-12-02 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -37,6 +37,11 @@ files:
37
37
  - Rakefile
38
38
  - TODO.textile
39
39
  - VERSION
40
+ - generators/effigy_view/effigy_view_generator.rb
41
+ - generators/effigy_view/templates/layout_template.erb
42
+ - generators/effigy_view/templates/layout_view.erb
43
+ - generators/effigy_view/templates/template.erb
44
+ - generators/effigy_view/templates/view.erb
40
45
  - lib/effigy.rb
41
46
  - lib/effigy/class_list.rb
42
47
  - lib/effigy/core_ext/hash.rb
@@ -47,6 +52,7 @@ files:
47
52
  - lib/effigy/rails/view.rb
48
53
  - lib/effigy/selection.rb
49
54
  - lib/effigy/view.rb
55
+ - rails/init.rb
50
56
  - spec/effigy/class_list_spec.rb
51
57
  - spec/effigy/core_ext/hash_spec.rb
52
58
  - spec/effigy/core_ext/object_spec.rb