templater 0.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.
@@ -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
+