cadenza 0.7.1 → 0.7.2

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.
@@ -7,4 +7,4 @@ require 'cadenza/cli'
7
7
  options = Cadenza::Cli::Options.parse!
8
8
  path = ARGV[0]
9
9
 
10
- STDOUT.puts Cadenza::Cli.run!(path, options[:context])
10
+ STDOUT.puts Cadenza::Cli.run!(path, options)
@@ -1,38 +1,29 @@
1
1
  require 'optparse'
2
+ require 'cadenza/cli/options'
2
3
  require 'multi_json'
3
4
 
4
5
  module Cadenza
5
- class Cli
6
- class Options < OptionParser
7
- attr_reader :options
8
-
9
- def self.parse!
10
- parser = new("Cadenza")
11
- parser.set_opts.parse!
12
- parser.options
13
- end
14
-
15
- def initialize(*args)
16
- @options = {}
17
- super
18
- end
6
+ module Cli
19
7
 
20
- def context_option(context)
21
- @options[:context] = MultiJson.load(context)
22
- end
8
+ def self.run!(path, options={})
23
9
 
24
- def set_opts
25
- on("--context json") do |value|
26
- context_option value
10
+ load_paths =
11
+ if options[:root]
12
+ [options[:root]]
13
+ elsif options.key?(:load_paths) && [:load_paths].any?
14
+ options[:load_paths]
15
+ else
16
+ [Dir.pwd]
27
17
  end
18
+
19
+ load_paths.each do |path|
20
+ Cadenza::BaseContext.add_load_path path
28
21
  end
29
- end
30
22
 
31
- def self.run!(path, context)
32
- Cadenza::BaseContext.add_loader Cadenza::FilesystemLoader.new(File.expand_path('.'))
33
23
  Cadenza::BaseContext.whiny_template_loading = true
34
24
 
35
- Cadenza.render_template path, context
25
+ Cadenza.render_template path, options[:context]
26
+
36
27
  end
37
28
 
38
29
  end
@@ -0,0 +1,47 @@
1
+ module Cadenza::Cli
2
+
3
+ class Options < OptionParser
4
+ attr_reader :options
5
+
6
+ def self.parse!
7
+ parser = new("Cadenza")
8
+ parser.set_opts.parse!
9
+ parser.options
10
+ end
11
+
12
+ def initialize(*args)
13
+ @options = {}
14
+ super
15
+ end
16
+
17
+ def context_option(context)
18
+ if File.exist?(context)
19
+ context = File.read(context)
20
+ end
21
+ @options[:context] = MultiJson.load(context)
22
+ end
23
+
24
+ def add_load_path(path)
25
+ @options[:load_paths] ||= []
26
+ @options[:load_paths] << path
27
+ end
28
+
29
+ def set_opts
30
+ on("--context json") do |value|
31
+ context_option value
32
+ end
33
+ on("-c json") do |value|
34
+ context_option value
35
+ end
36
+ on("--root path") do |value|
37
+ @options[:root] = value
38
+ end
39
+ on("-I", "--load-path PATH", "Add a path for the filesystem loader") do |path|
40
+ add_load_path(path)
41
+ end
42
+
43
+ end
44
+
45
+ end
46
+
47
+ end
@@ -195,18 +195,23 @@ module Cadenza
195
195
  block.call(self, nodes, parameters)
196
196
  end
197
197
 
198
- # adds the given loader to the end of the loader list. If the argument
199
- # passed is a string then a {FilesystemLoader} will be constructed with
200
- # the string given as a path for it.
198
+ # constructs a {FilesystemLoader} with the string given as its path and
199
+ # adds the loader to the end of the loader list.
201
200
  #
202
- # @param [Loader,String] loader the loader to add
201
+ # @param [String] path to use for loader
202
+ # @return [Loader] the loader that was created
203
+ def add_load_path(path)
204
+ loader = FilesystemLoader.new(path)
205
+ add_loader(loader)
206
+ loader
207
+ end
208
+
209
+ # adds the given loader to the end of the loader list.
210
+ #
211
+ # @param [Loader] loader the loader to add
203
212
  # @return nil
204
213
  def add_loader(loader)
205
- if loader.is_a?(String)
206
- @loaders.push FilesystemLoader.new(loader)
207
- else
208
- @loaders.push loader
209
- end
214
+ @loaders.push loader
210
215
  nil
211
216
  end
212
217
 
@@ -337,4 +342,4 @@ module Cadenza
337
342
 
338
343
  end
339
344
 
340
- end
345
+ end
@@ -36,7 +36,7 @@ module Cadenza
36
36
  end
37
37
 
38
38
  def render_block(node, context, blocks)
39
- (blocks[node.name] || node).children.each {|x| render(x, context) }
39
+ (blocks[node.name] || node).children.each {|x| render(x, context, blocks) }
40
40
  end
41
41
 
42
42
  def render_text(node, context, blocks)
@@ -48,7 +48,7 @@ module Cadenza
48
48
  end
49
49
 
50
50
  def render_if(node, context, blocks)
51
- node.evaluate_expression_for_children(context).each {|x| render(x, context) }
51
+ node.evaluate_expression_for_children(context).each {|x| render(x, context, blocks) }
52
52
  end
53
53
 
54
54
  def render_for(node, context, blocks)
@@ -3,7 +3,7 @@ module Cadenza
3
3
  module Version
4
4
  MAJOR = 0
5
5
  MINOR = 7
6
- PATCH = 1
6
+ PATCH = 2
7
7
  BUILD = nil
8
8
 
9
9
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cadenza
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.7.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-21 00:00:00.000000000 Z
12
+ date: 2012-10-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
@@ -170,6 +170,7 @@ files:
170
170
  - lib/cadenza/functional_variables/standard_functional_variables.rb
171
171
  - lib/cadenza/version.rb
172
172
  - lib/cadenza/text_renderer.rb
173
+ - lib/cadenza/cli/options.rb
173
174
  - lib/cadenza/parser.rb
174
175
  - lib/cadenza/base_renderer.rb
175
176
  - lib/cadenza/token.rb