templater 0.1.6 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -101,7 +101,7 @@ describe Templater::Generator, '.argument' do
101
101
  end
102
102
 
103
103
  it "should assign an argument when a block appended to an argument does not throw :invalid" do
104
- @generator_class.argument(0, :monkey) do
104
+ @generator_class.argument(0, :monkey) do |argument|
105
105
  1 + 1
106
106
  end
107
107
  @generator_class.argument(1, :elephant) do
@@ -118,8 +118,10 @@ describe Templater::Generator, '.argument' do
118
118
  end
119
119
 
120
120
  it "should raise an error with the throw message, when a block is appended to an argument and throws :invalid" do
121
- @generator_class.argument(0, :monkey) do
122
- throw :invalid, 'this is not a valid monkey, bad monkey!'
121
+ @generator_class.argument(0, :monkey) do |argument|
122
+ if argument != 'monkey'
123
+ throw :invalid, 'this is not a valid monkey, bad monkey!'
124
+ end
123
125
  end
124
126
 
125
127
  lambda { @generator_class.new('/tmp', {}, 'blah') }.should raise_error(Templater::ArgumentError, 'this is not a valid monkey, bad monkey!')
@@ -127,6 +129,8 @@ describe Templater::Generator, '.argument' do
127
129
  instance = @generator_class.new('/tmp')
128
130
 
129
131
  lambda { instance.monkey = :anything }.should raise_error(Templater::ArgumentError, 'this is not a valid monkey, bad monkey!')
132
+
133
+ lambda { instance.monkey = 'monkey' }.should_not raise_error
130
134
  end
131
135
 
132
136
  end
@@ -26,8 +26,8 @@ describe Templater::Generator, ".empty_directory" do
26
26
  end
27
27
 
28
28
  it "should add an empty directory with a block" do
29
- @generator_class.empty_directory(:my_empty_directory) do
30
- destination "gurr#{Process.pid.to_s}.rb"
29
+ @generator_class.empty_directory(:my_empty_directory) do |action|
30
+ action.destination = "gurr#{Process.pid.to_s}.rb"
31
31
  end
32
32
  @instance = @generator_class.new('/tmp/destination')
33
33
 
@@ -36,8 +36,8 @@ describe Templater::Generator, ".empty_directory" do
36
36
  end
37
37
 
38
38
  it "should add an empty directory with a complex block" do
39
- @generator_class.empty_directory(:my_empty_directory) do
40
- destination 'gurr', "gurr#{something}.rb"
39
+ @generator_class.empty_directory(:my_empty_directory) do |action|
40
+ action.destination = 'gurr' / "gurr#{something}.rb"
41
41
  end
42
42
  @instance = @generator_class.new('/tmp/destination')
43
43
 
@@ -54,6 +54,14 @@ describe Templater::Generator, ".empty_directory" do
54
54
  @instance.empty_directory(:my_empty_directory).destination.should == "/tmp/destination/template/%some_method%.rb"
55
55
  @instance.empty_directory(:my_empty_directory).should be_an_instance_of(Templater::Actions::EmptyDirectory)
56
56
  end
57
+
58
+ it "should pass options on to the empty_directory" do
59
+ @generator_class.empty_directory(:my_empty_directory, 'path/to/destination.rb', :before => :monkey, :after => :donkey)
60
+ @instance = @generator_class.new('/tmp/destination')
61
+
62
+ @instance.empty_directory(:my_empty_directory).options[:before].should == :monkey
63
+ @instance.empty_directory(:my_empty_directory).options[:after].should == :donkey
64
+ end
57
65
  end
58
66
 
59
67
  describe Templater::Generator, '#empty_directories' do
@@ -4,14 +4,13 @@ describe Templater::Generator, '.file' do
4
4
 
5
5
  before do
6
6
  @generator_class = Class.new(Templater::Generator)
7
+ @generator_class.stub!(:source_root).and_return('/tmp/source')
7
8
  end
8
9
 
9
10
  it "should add a file with source and destination" do
10
11
  @generator_class.file(:my_template, 'path/to/source.rbt', 'path/to/destination.rb')
11
12
  @instance = @generator_class.new('/tmp/destination')
12
13
 
13
- @instance.stub!(:source_root).and_return('/tmp/source')
14
-
15
14
  @instance.file(:my_template).source.should == '/tmp/source/path/to/source.rbt'
16
15
  @instance.file(:my_template).destination.should == '/tmp/destination/path/to/destination.rb'
17
16
  @instance.file(:my_template).should be_an_instance_of(Templater::Actions::File)
@@ -21,36 +20,31 @@ describe Templater::Generator, '.file' do
21
20
  @generator_class.file(:my_template, 'path/to/file.rb')
22
21
  @instance = @generator_class.new('/tmp/destination')
23
22
 
24
- @instance.stub!(:source_root).and_return('/tmp/source')
25
-
26
23
  @instance.file(:my_template).source.should == '/tmp/source/path/to/file.rb'
27
24
  @instance.file(:my_template).destination.should == '/tmp/destination/path/to/file.rb'
28
25
  @instance.file(:my_template).should be_an_instance_of(Templater::Actions::File)
29
26
  end
30
27
 
31
28
  it "should add a file with a block" do
32
- @generator_class.file(:my_file) do
33
- source 'blah.rbt'
34
- destination "gurr#{Process.pid.to_s}.rb"
29
+ @generator_class.file(:my_file) do |file|
30
+ file.source = 'blah.rbt'
31
+ file.destination = "gurr#{Process.pid.to_s}.rb"
35
32
  end
36
33
  @instance = @generator_class.new('/tmp/destination')
37
34
 
38
- @instance.stub!(:source_root).and_return('/tmp/source')
39
-
40
35
  @instance.file(:my_file).source.should == '/tmp/source/blah.rbt'
41
36
  @instance.file(:my_file).destination.should == "/tmp/destination/gurr#{Process.pid.to_s}.rb"
42
37
  @instance.file(:my_file).should be_an_instance_of(Templater::Actions::File)
43
38
  end
44
39
 
45
40
  it "should add a file with a complex block" do
46
- @generator_class.file(:my_file) do
47
- source 'blah', 'blah.rbt'
48
- destination 'gurr', "gurr#{something}.rb"
41
+ @generator_class.file(:my_file) do |file|
42
+ file.source = 'blah' / 'blah.rbt'
43
+ file.destination = 'gurr' / "gurr#{something}.rb"
49
44
  end
50
45
  @instance = @generator_class.new('/tmp/destination')
51
46
 
52
47
  @instance.stub!(:something).and_return('anotherthing')
53
- @instance.stub!(:source_root).and_return('/tmp/source')
54
48
 
55
49
  @instance.file(:my_file).source.should == '/tmp/source/blah/blah.rbt'
56
50
  @instance.file(:my_file).destination.should == "/tmp/destination/gurr/gurranotherthing.rb"
@@ -61,7 +55,6 @@ describe Templater::Generator, '.file' do
61
55
  @generator_class.file(:my_template, 'template/%some_method%.rbt', 'template/%another_method%.rb')
62
56
  @instance = @generator_class.new('/tmp/destination')
63
57
 
64
- @instance.stub!(:source_root).and_return('/tmp/source')
65
58
  @instance.should_not_receive(:some_method)
66
59
  @instance.should_receive(:another_method).at_least(:once).and_return('beast')
67
60
 
@@ -74,11 +67,17 @@ describe Templater::Generator, '.file' do
74
67
  @generator_class.file(:my_template, 'template/blah.rbt', 'template/%some_method%.rb')
75
68
  @instance = @generator_class.new('/tmp/destination')
76
69
 
77
- @instance.stub!(:source_root).and_return('/tmp/source')
78
-
79
70
  @instance.file(:my_template).destination.should == "/tmp/destination/template/%some_method%.rb"
80
71
  @instance.file(:my_template).should be_an_instance_of(Templater::Actions::File)
81
72
  end
73
+
74
+ it "should pass options on to the file" do
75
+ @generator_class.file(:my_template, 'path/to/destination.rb', :before => :monkey, :after => :donkey)
76
+ @instance = @generator_class.new('/tmp/destination')
77
+
78
+ @instance.file(:my_template).options[:before].should == :monkey
79
+ @instance.file(:my_template).options[:after].should == :donkey
80
+ end
82
81
  end
83
82
 
84
83
  describe Templater::Generator, '.file_list' do
@@ -116,11 +115,7 @@ describe Templater::Generator, '#files' do
116
115
 
117
116
  before do
118
117
  @generator_class = Class.new(Templater::Generator)
119
- @generator_class.class_eval do
120
- def source_root
121
- '/tmp/source'
122
- end
123
- end
118
+ @generator_class.stub!(:source_root).and_return('/tmp/source')
124
119
  end
125
120
 
126
121
  it "should return all files" do
@@ -163,11 +158,7 @@ describe Templater::Generator, '#file' do
163
158
 
164
159
  before do
165
160
  @generator_class = Class.new(Templater::Generator)
166
- @generator_class.class_eval do
167
- def source_root
168
- '/tmp/source'
169
- end
170
- end
161
+ @generator_class.stub!(:source_root).and_return('/tmp/source')
171
162
  end
172
163
 
173
164
  it "should find a file by name" do
@@ -4,14 +4,13 @@ describe Templater::Generator, '.template' do
4
4
 
5
5
  before do
6
6
  @generator_class = Class.new(Templater::Generator)
7
+ @generator_class.stub!(:source_root).and_return('/tmp/source')
7
8
  end
8
9
 
9
10
  it "should add a template with source and destination" do
10
11
  @generator_class.template(:my_template, 'path/to/source.rbt', 'path/to/destination.rb')
11
12
  @instance = @generator_class.new('/tmp/destination')
12
13
 
13
- @instance.stub!(:source_root).and_return('/tmp/source')
14
-
15
14
  @instance.template(:my_template).source.should == '/tmp/source/path/to/source.rbt'
16
15
  @instance.template(:my_template).destination.should == '/tmp/destination/path/to/destination.rb'
17
16
  @instance.template(:my_template).should be_an_instance_of(Templater::Actions::Template)
@@ -21,8 +20,6 @@ describe Templater::Generator, '.template' do
21
20
  @generator_class.template(:my_template, '/path/to/source.rbt', '/path/to/destination.rb')
22
21
  @instance = @generator_class.new('/tmp/destination')
23
22
 
24
- @instance.stub!(:source_root).and_return('/tmp/source')
25
-
26
23
  @instance.template(:my_template).source.should == '/path/to/source.rbt'
27
24
  @instance.template(:my_template).destination.should == '/path/to/destination.rb'
28
25
  @instance.template(:my_template).should be_an_instance_of(Templater::Actions::Template)
@@ -32,36 +29,31 @@ describe Templater::Generator, '.template' do
32
29
  @generator_class.template(:my_template, 'path/to/destination.rb')
33
30
  @instance = @generator_class.new('/tmp/destination')
34
31
 
35
- @instance.stub!(:source_root).and_return('/tmp/source')
36
-
37
32
  @instance.template(:my_template).source.should == '/tmp/source/path/to/destination.rbt'
38
33
  @instance.template(:my_template).destination.should == '/tmp/destination/path/to/destination.rb'
39
34
  @instance.template(:my_template).should be_an_instance_of(Templater::Actions::Template)
40
35
  end
41
36
 
42
37
  it "should add a template with a block" do
43
- @generator_class.template(:my_template) do
44
- source 'blah.rbt'
45
- destination "gurr#{Process.pid.to_s}.rb"
38
+ @generator_class.template(:my_template) do |template|
39
+ template.source = 'blah.rbt'
40
+ template.destination = "gurr#{Process.pid.to_s}.rb"
46
41
  end
47
42
  @instance = @generator_class.new('/tmp/destination')
48
43
 
49
- @instance.stub!(:source_root).and_return('/tmp/source')
50
-
51
44
  @instance.template(:my_template).source.should == '/tmp/source/blah.rbt'
52
45
  @instance.template(:my_template).destination.should == "/tmp/destination/gurr#{Process.pid.to_s}.rb"
53
46
  @instance.template(:my_template).should be_an_instance_of(Templater::Actions::Template)
54
47
  end
55
48
 
56
49
  it "should add a template with a complex block" do
57
- @generator_class.template(:my_template) do
58
- source 'blah', 'blah.rbt'
59
- destination 'gurr', "gurr#{something}.rb"
50
+ @generator_class.template(:my_template) do |template|
51
+ template.source = 'blah' / 'blah.rbt'
52
+ template.destination = 'gurr' / "gurr#{something}.rb"
60
53
  end
61
54
  @instance = @generator_class.new('/tmp/destination')
62
55
 
63
56
  @instance.stub!(:something).and_return('anotherthing')
64
- @instance.stub!(:source_root).and_return('/tmp/source')
65
57
 
66
58
  @instance.template(:my_template).source.should == '/tmp/source/blah/blah.rbt'
67
59
  @instance.template(:my_template).destination.should == "/tmp/destination/gurr/gurranotherthing.rb"
@@ -72,7 +64,6 @@ describe Templater::Generator, '.template' do
72
64
  @generator_class.template(:my_template, 'template/%some_method%.rbt', 'template/%another_method%.rb')
73
65
  @instance = @generator_class.new('/tmp/destination')
74
66
 
75
- @instance.stub!(:source_root).and_return('/tmp/source')
76
67
  @instance.should_not_receive(:some_method)
77
68
  @instance.should_receive(:another_method).at_least(:once).and_return('beast')
78
69
 
@@ -85,12 +76,18 @@ describe Templater::Generator, '.template' do
85
76
  @generator_class.template(:my_template, 'template/blah.rbt', 'template/%some_method%.rb')
86
77
  @instance = @generator_class.new('/tmp/destination')
87
78
 
88
- @instance.stub!(:source_root).and_return('/tmp/source')
89
-
90
79
  @instance.template(:my_template).destination.should == "/tmp/destination/template/%some_method%.rb"
91
80
  @instance.template(:my_template).should be_an_instance_of(Templater::Actions::Template)
92
81
  end
93
82
 
83
+ it "should pass options on to the template" do
84
+ @generator_class.template(:my_template, 'path/to/destination.rb', :before => :monkey, :after => :donkey)
85
+ @instance = @generator_class.new('/tmp/destination')
86
+
87
+ @instance.template(:my_template).options[:before].should == :monkey
88
+ @instance.template(:my_template).options[:after].should == :donkey
89
+ end
90
+
94
91
  end
95
92
 
96
93
  describe Templater::Generator, '.template_list' do
@@ -128,11 +125,7 @@ describe Templater::Generator, '#templates' do
128
125
 
129
126
  before do
130
127
  @generator_class = Class.new(Templater::Generator)
131
- @generator_class.class_eval do
132
- def source_root
133
- '/tmp/source'
134
- end
135
- end
128
+ @generator_class.stub!(:source_root).and_return('/tmp/source')
136
129
  end
137
130
 
138
131
  it "should return all templates" do
@@ -175,11 +168,7 @@ describe Templater::Generator, '#template' do
175
168
 
176
169
  before do
177
170
  @generator_class = Class.new(Templater::Generator)
178
- @generator_class.class_eval do
179
- def source_root
180
- '/tmp/source'
181
- end
182
- end
171
+ @generator_class.stub!(:source_root).and_return('/tmp/source')
183
172
  end
184
173
 
185
174
  it "should find a template by name" do
data/spec/spec_helper.rb CHANGED
@@ -12,4 +12,27 @@ end
12
12
  require 'templater.rb'
13
13
  require 'rubygems'
14
14
  require 'spec'
15
- require 'fileutils'
15
+ require 'fileutils'
16
+
17
+ class MatchActionNames
18
+ def initialize(*names)
19
+ @names = names.map{|n| n.to_s}
20
+ end
21
+
22
+ def matches?(actual)
23
+ @actual = actual
24
+ @actual.map{|a| a.name.to_s}.sort == @names.sort
25
+ end
26
+
27
+ def failure_message
28
+ "expected #{@actual.inspect} to have action names #{@names.inspect}, but they didn't"
29
+ end
30
+
31
+ def negative_failure_message
32
+ "expected #{@actual.inspect} not to have action names #{@names.inspect}, but they did"
33
+ end
34
+ end
35
+
36
+ def have_names(*names)
37
+ MatchActionNames.new(*names)
38
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: templater
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: "0.2"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonas Nicklas
@@ -9,7 +9,7 @@ autorequire: templater
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-18 00:00:00 +02:00
12
+ date: 2008-09-09 00:00:00 +03:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -32,6 +32,16 @@ dependencies:
32
32
  - !ruby/object:Gem::Version
33
33
  version: 1.1.2
34
34
  version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: extlib
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 0.9.5
44
+ version:
35
45
  description: File generation system
36
46
  email: jonas.nicklas@gmail.com
37
47
  executables: []
@@ -49,6 +59,7 @@ files:
49
59
  - TODO
50
60
  - lib/templater
51
61
  - lib/templater/actions
62
+ - lib/templater/actions/action.rb
52
63
  - lib/templater/actions/empty_directory.rb
53
64
  - lib/templater/actions/file.rb
54
65
  - lib/templater/actions/template.rb
@@ -60,17 +71,19 @@ files:
60
71
  - lib/templater/core_ext
61
72
  - lib/templater/core_ext/kernel.rb
62
73
  - lib/templater/core_ext/string.rb
74
+ - lib/templater/description.rb
63
75
  - lib/templater/discovery.rb
64
76
  - lib/templater/generator.rb
65
77
  - lib/templater/manifold.rb
66
- - lib/templater/proxy.rb
67
78
  - lib/templater/spec
68
79
  - lib/templater/spec/helpers.rb
69
80
  - lib/templater.rb
81
+ - spec/actions
82
+ - spec/actions/empty_directory_spec.rb
83
+ - spec/actions/file_spec.rb
84
+ - spec/actions/template_spec.rb
70
85
  - spec/core_ext
71
86
  - spec/core_ext/string_spec.rb
72
- - spec/empty_directory_spec.rb
73
- - spec/file_spec.rb
74
87
  - spec/generator
75
88
  - spec/generator/actions_spec.rb
76
89
  - spec/generator/arguments_spec.rb
@@ -97,7 +110,6 @@ files:
97
110
  - spec/results/simple_erb.rbs
98
111
  - spec/spec_helper.rb
99
112
  - spec/spec_helpers_spec.rb
100
- - spec/template_spec.rb
101
113
  - spec/templater_spec.rb
102
114
  - spec/templates
103
115
  - spec/templates/erb.rbt
@@ -1,62 +0,0 @@
1
- module Templater
2
-
3
- class Proxy #:nodoc:
4
-
5
- def initialize(generator, action={})
6
- @generator = generator
7
- @block = action[:block]
8
- @source, @destination = action[:source], action[:destination]
9
- @name = action[:name]
10
- end
11
-
12
- def source(*source)
13
- @source = ::File.join(*source)
14
- end
15
-
16
- def destination(*dest)
17
- @destination = ::File.join(*dest)
18
- end
19
-
20
- def to_template
21
- instance_eval(&@block) if @block
22
- Templater::Actions::Template.new(@generator, @name, get_source, get_destination)
23
- end
24
-
25
- def to_file
26
- instance_eval(&@block) if @block
27
- Templater::Actions::File.new(@name, get_source, get_destination)
28
- end
29
-
30
- def to_empty_directory
31
- instance_eval(&@block) if @block
32
- Templater::Actions::EmptyDirectory.new(@name, get_destination)
33
- end
34
-
35
- def method_missing(method, *args, &block)
36
- if @generator
37
- @generator.send(method, *args, &block)
38
- else
39
- super
40
- end
41
- end
42
-
43
- protected
44
-
45
- def get_source
46
- ::File.expand_path(@source.to_s, @generator.source_root)
47
- end
48
-
49
- def get_destination
50
- ::File.expand_path(convert_encoded_instructions(@destination.to_s), @generator.destination_root)
51
- end
52
-
53
- def convert_encoded_instructions(filename)
54
- filename.gsub(/%.*?%/) do |string|
55
- instruction = string.match(/%(.*?)%/)[1]
56
- @generator.respond_to?(instruction) ? @generator.send(instruction) : string
57
- end
58
- end
59
-
60
- end
61
-
62
- end