templater 0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,77 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Templater::Manifold, '#add' do
4
+
5
+ before(:each) do
6
+ @manifold = class << self; self end
7
+ @manifold.extend Templater::Manifold
8
+ @generator = mock('a generator')
9
+ @generator.stub!(:manifold=)
10
+ end
11
+
12
+ it "should allow addition of generators and remember them" do
13
+ @manifold.add(:monkey, @generator)
14
+ @manifold.generator(:monkey).should == @generator
15
+ @manifold.generators[:monkey].should == @generator
16
+ end
17
+
18
+ it "should add a trippy convenience method" do
19
+ @manifold.add(:monkey, @generator)
20
+ @manifold.monkey.should == @generator
21
+ end
22
+
23
+ it "should set the manifold for the generator" do
24
+ @generator.should_receive(:manifold=).with(@manifold)
25
+ @manifold.add(:monkey, @generator)
26
+ end
27
+
28
+ end
29
+
30
+ describe Templater::Manifold, '#remove' do
31
+
32
+ before(:each) do
33
+ @manifold = class << self; self end
34
+ @manifold.extend Templater::Manifold
35
+ @generator = mock('a generator')
36
+ @generator.stub!(:manifold=)
37
+ end
38
+
39
+ it "should allow removal of generators" do
40
+ @manifold.add(:monkey, @generator)
41
+ @manifold.remove(:monkey)
42
+ @manifold.generator(:monkey).should be_nil
43
+ @manifold.generators[:monkey].should be_nil
44
+ end
45
+
46
+ it "should remove the accessor method" do
47
+ @manifold.add(:monkey, @generator)
48
+ @manifold.remove(:monkey)
49
+ @manifold.should_not respond_to(:monkey)
50
+ end
51
+
52
+ end
53
+
54
+ describe Templater::Manifold, '#run_cli' do
55
+
56
+ it "should run the command line interface" do
57
+ manifold = class << self; self end
58
+ manifold.extend Templater::Manifold
59
+
60
+ Templater::CLI::Manifold.should_receive(:run).with('/path/to/destination', manifold, 'gen', '0.3', ['arg', 'blah'])
61
+
62
+ manifold.run_cli('/path/to/destination', 'gen', '0.3', ['arg', 'blah'])
63
+ end
64
+
65
+ end
66
+
67
+ describe Templater::Manifold, '#desc' do
68
+
69
+ it "should append text when called with an argument, and return it when called with no argument" do
70
+ manifold = class << self; self end
71
+ manifold.extend Templater::Manifold
72
+
73
+ manifold.desc "some text"
74
+ manifold.desc.should == "some text"
75
+ end
76
+
77
+ end
@@ -0,0 +1 @@
1
+ test_doodle_blah
@@ -0,0 +1 @@
1
+ test<%= 1+1 %>test
@@ -0,0 +1 @@
1
+ some text
@@ -0,0 +1 @@
1
+ test2test
@@ -0,0 +1,15 @@
1
+ $TESTING=true
2
+ $:.push File.join(File.dirname(__FILE__), '..', 'lib')
3
+
4
+ def template_path(template)
5
+ File.expand_path(File.join(File.dirname(__FILE__), 'templates', template))
6
+ end
7
+
8
+ def result_path(result)
9
+ File.expand_path(File.join(File.dirname(__FILE__), 'results', result))
10
+ end
11
+
12
+ require 'templater.rb'
13
+ require 'rubygems'
14
+ require 'spec'
15
+ require 'fileutils'
@@ -0,0 +1,124 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Templater::Template, '.new' do
4
+ it "should set name, source and destination" do
5
+ template = Templater::Template.new('some_context', :monkey, '/path/to/source', '/path/to/destination')
6
+ template.context.should == 'some_context'
7
+ template.name.should == :monkey
8
+ template.source.should == '/path/to/source'
9
+ template.destination.should == '/path/to/destination'
10
+ end
11
+ end
12
+
13
+ describe Templater::Template, '#relative_destination' do
14
+ it "should get the destination relative to the pwd" do
15
+ Dir.stub!(:pwd).and_return('/path/to')
16
+ template = Templater::Template.new('some_context', :monkey, '/path/to/source', '/path/to/destination/with/some/more/subdirs')
17
+ template.relative_destination.should == 'destination/with/some/more/subdirs'
18
+ end
19
+ end
20
+
21
+ describe Templater::Template, '#render' do
22
+ before do
23
+ @context = class << self; self end
24
+ end
25
+
26
+ it "should render a simple template" do
27
+ template = Templater::Template.new(@context, :monkey, template_path('simple.rbt'), '/path/to/destination')
28
+ template.render.should == "Hello World"
29
+ end
30
+
31
+ it "should render some basic erb" do
32
+ template = Templater::Template.new(@context, :monkey, template_path('simple_erb.rbt'), '/path/to/destination')
33
+ template.render.should == "test2test"
34
+ end
35
+
36
+ it "should render some erb and convert erb literals" do
37
+ template = Templater::Template.new(@context, :monkey, template_path('literals_erb.rbt'), '/path/to/destination')
38
+ template.render.should == "test2test<%= 1+1 %>blah"
39
+ end
40
+
41
+ it "should render some erb fetching stuff from the context" do
42
+ @context.should_receive(:funkydoodle).and_return('_doodle_')
43
+ template = Templater::Template.new(@context, :monkey, template_path('erb.rbt'), '/path/to/destination')
44
+ template.render.should == "test_doodle_blah"
45
+ end
46
+ end
47
+
48
+ describe Templater::Template, '#exists?' do
49
+
50
+ it "should exist if the destination file exists" do
51
+ template = Templater::Template.new(@context, :monkey, template_path('simple.rbt'), result_path('erb.rbs'))
52
+ template.should be_exists
53
+ end
54
+
55
+ it "should not exist if the destination file does not exist" do
56
+ template = Templater::Template.new(@context, :monkey, template_path('simple.rbt'), result_path('some_weird_file.rbs'))
57
+ template.should_not be_exists
58
+ end
59
+
60
+ end
61
+
62
+ describe Templater::Template, '#identical' do
63
+ before do
64
+ @context = class << self; self end
65
+ end
66
+
67
+ it "should not be identical if the destination file doesn't exist" do
68
+ template = Templater::Template.new(@context, :monkey, template_path('simple_erb.rbt'), result_path('some_weird_file.rbs'))
69
+ template.should_not be_identical
70
+ end
71
+
72
+ it "should not be identical if the rendered content does not match the content of the file" do
73
+ template = Templater::Template.new(@context, :monkey, template_path('simple_erb.rbt'), result_path('random.rbs'))
74
+ template.should be_exists
75
+ template.should_not be_identical
76
+ end
77
+
78
+ it "should be identical if the rendered content matches the content of the file" do
79
+ template = Templater::Template.new(@context, :monkey, template_path('simple_erb.rbt'), result_path('simple_erb.rbs'))
80
+ template.should be_exists
81
+ template.should be_identical
82
+ end
83
+ end
84
+
85
+ describe Templater::Template, '#invoke!' do
86
+ before do
87
+ @context = class << self; self end
88
+ end
89
+
90
+ it "should render the template and copy it to the destination" do
91
+ template = Templater::Template.new(@context, :monkey, template_path('simple_erb.rbt'), result_path('test.rbs'))
92
+
93
+ template.invoke!
94
+
95
+ File.exists?(result_path('test.rbs')).should be_true
96
+ File.read(result_path('test.rbs')).should == "test2test"
97
+
98
+ FileUtils.rm(result_path('test.rbs'))
99
+ end
100
+
101
+ it "should render the template and copy it to the destination, creating any required subdirectories" do
102
+ template = Templater::Template.new(@context, :monkey, template_path('simple_erb.rbt'), result_path('path/to/subdir/test.rbs'))
103
+
104
+ template.invoke!
105
+
106
+ File.exists?(result_path('path/to/subdir/test.rbs')).should be_true
107
+ File.read(result_path('path/to/subdir/test.rbs')).should == "test2test"
108
+
109
+ # cleanup
110
+ FileUtils.rm_rf(result_path('path'))
111
+ end
112
+
113
+ it "should simply copy the template to the destination if render is false" do
114
+ template = Templater::Template.new(@context, :monkey, template_path('simple_erb.rbt'), result_path('path/to/subdir/test2.rbs'), false)
115
+
116
+ template.invoke!
117
+
118
+ File.exists?(result_path('path/to/subdir/test2.rbs')).should be_true
119
+ FileUtils.identical?(template_path('simple_erb.rbt'), result_path('path/to/subdir/test2.rbs')).should be_true
120
+
121
+ # cleanup
122
+ FileUtils.rm_rf(result_path('path'))
123
+ end
124
+ end
@@ -0,0 +1,7 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "templater" do
4
+ it "should do nothing" do
5
+ true.should == true
6
+ end
7
+ end
@@ -0,0 +1 @@
1
+ test<%= funkydoodle %>blah
@@ -0,0 +1 @@
1
+ this is stuff is for testing the Templater::Generator.glob! method.
@@ -0,0 +1,3 @@
1
+ var Blah = function() {
2
+ alert('BLAH!');
3
+ };
@@ -0,0 +1 @@
1
+ a picture of jessica alba.
@@ -0,0 +1 @@
1
+ puts "MONKEY".reverse
@@ -0,0 +1 @@
1
+ puts 1 + 1
@@ -0,0 +1 @@
1
+ test<%= 1+1 %>test<%%= 1+1 %>blah
@@ -0,0 +1 @@
1
+ Hello World
@@ -0,0 +1 @@
1
+ test<%= 1+1 %>test
metadata ADDED
@@ -0,0 +1,123 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: templater
3
+ version: !ruby/object:Gem::Version
4
+ version: "0.1"
5
+ platform: ruby
6
+ authors:
7
+ - Jonas Nicklas
8
+ autorequire: templater
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-06-30 00:00:00 +02:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: highline
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.4.0
23
+ version:
24
+ - !ruby/object:Gem::Dependency
25
+ name: diff-lcs
26
+ version_requirement:
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: 1.1.2
32
+ version:
33
+ - !ruby/object:Gem::Dependency
34
+ name: facets
35
+ version_requirement:
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: "0"
41
+ version:
42
+ description: File generation system
43
+ email: jonas.nicklas@gmail.com
44
+ executables: []
45
+
46
+ extensions: []
47
+
48
+ extra_rdoc_files:
49
+ - README
50
+ - LICENSE
51
+ - TODO
52
+ files:
53
+ - LICENSE
54
+ - README
55
+ - Rakefile
56
+ - TODO
57
+ - lib/templater
58
+ - lib/templater/capture_helpers.rb
59
+ - lib/templater/cli
60
+ - lib/templater/cli/generator.rb
61
+ - lib/templater/cli/manifold.rb
62
+ - lib/templater/cli/parser.rb
63
+ - lib/templater/core_ext
64
+ - lib/templater/core_ext/string.rb
65
+ - lib/templater/file.rb
66
+ - lib/templater/generator.rb
67
+ - lib/templater/manifold.rb
68
+ - lib/templater/proxy.rb
69
+ - lib/templater/template.rb
70
+ - lib/templater.rb
71
+ - spec/core_ext
72
+ - spec/core_ext/string_spec.rb
73
+ - spec/file_spec.rb
74
+ - spec/generator_spec.rb
75
+ - spec/manifold_spec.rb
76
+ - spec/results
77
+ - spec/results/erb.rbs
78
+ - spec/results/file.rbs
79
+ - spec/results/random.rbs
80
+ - spec/results/simple_erb.rbs
81
+ - spec/spec_helper.rb
82
+ - spec/template_spec.rb
83
+ - spec/templater_spec.rb
84
+ - spec/templates
85
+ - spec/templates/erb.rbt
86
+ - spec/templates/glob
87
+ - spec/templates/glob/arg.js
88
+ - spec/templates/glob/README
89
+ - spec/templates/glob/subfolder
90
+ - spec/templates/glob/subfolder/jessica_alba.jpg
91
+ - spec/templates/glob/subfolder/monkey.rb
92
+ - spec/templates/glob/test.rb
93
+ - spec/templates/literals_erb.rbt
94
+ - spec/templates/simple.rbt
95
+ - spec/templates/simple_erb.rbt
96
+ has_rdoc: true
97
+ homepage: http://templater.rubyforge.org/
98
+ post_install_message:
99
+ rdoc_options: []
100
+
101
+ require_paths:
102
+ - lib
103
+ required_ruby_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: "0"
108
+ version:
109
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: "0"
114
+ version:
115
+ requirements: []
116
+
117
+ rubyforge_project:
118
+ rubygems_version: 1.1.1
119
+ signing_key:
120
+ specification_version: 2
121
+ summary: File generation system
122
+ test_files: []
123
+