texas 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/texas/option_parser.rb +5 -3
- data/lib/texas/runner.rb +19 -1
- data/lib/texas/task/base.rb +0 -4
- data/lib/texas/template.rb +1 -0
- data/lib/texas/template/helper/base.rb +20 -4
- data/lib/texas/template/runner/base.rb +4 -0
- data/lib/texas/template/template_error.rb +34 -0
- data/lib/texas/version.rb +1 -1
- data/spec/fixtures/helper-methods-tex/contents/some_chapter/test_include.tex.erb +6 -0
- data/spec/fixtures/helper-methods-tex/contents/some_chapter/test_include.tex.should +6 -0
- metadata +3 -2
data/lib/texas/option_parser.rb
CHANGED
@@ -24,6 +24,7 @@ module Texas
|
|
24
24
|
options.load_local_libs = true
|
25
25
|
options.contents_dir = Texas.contents_subdir_name
|
26
26
|
options.contents_template = find_contents_file("contents")
|
27
|
+
options.backtrace = false
|
27
28
|
options.colors = true
|
28
29
|
options.merge_config = nil
|
29
30
|
options.verbose = false
|
@@ -71,17 +72,18 @@ module Texas
|
|
71
72
|
opts.separator ""
|
72
73
|
opts.separator "Common options:"
|
73
74
|
|
74
|
-
|
75
|
+
opts.on("--[no-]backtrace", "Switch backtrace") do |v|
|
76
|
+
options.backtrace = v
|
77
|
+
end
|
78
|
+
|
75
79
|
opts.on("-c", "--[no-]color", "Switch colors") do |v|
|
76
80
|
options.colors = v
|
77
81
|
end
|
78
82
|
|
79
|
-
# Boolean switch.
|
80
83
|
opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
|
81
84
|
options.verbose = v
|
82
85
|
end
|
83
86
|
|
84
|
-
# Boolean switch.
|
85
87
|
opts.on("-w", "--[no-]warnings", "Switch warnings") do |v|
|
86
88
|
options.warnings = v
|
87
89
|
end
|
data/lib/texas/runner.rb
CHANGED
@@ -37,9 +37,20 @@ module Texas
|
|
37
37
|
Texas.warnings = @options.warnings
|
38
38
|
load_local_libs if @options.load_local_libs
|
39
39
|
@task_instance = task_class.new(@options)
|
40
|
-
|
40
|
+
run
|
41
41
|
end
|
42
42
|
|
43
|
+
# Display the error message that caused the exception.
|
44
|
+
def display_error_message(ex)
|
45
|
+
puts "#{@options.task} aborted!"
|
46
|
+
puts ex.message
|
47
|
+
if @options.backtrace
|
48
|
+
puts ex.backtrace
|
49
|
+
else
|
50
|
+
puts "(See full trace with --backtrace)"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
43
54
|
def extend_string_class
|
44
55
|
mod = @options.colors ? Term::ANSIColor : Term::NoColor
|
45
56
|
String.send :include, mod
|
@@ -50,6 +61,13 @@ module Texas
|
|
50
61
|
require init_file if File.exist?(init_file)
|
51
62
|
end
|
52
63
|
|
64
|
+
def run
|
65
|
+
@task_instance.run
|
66
|
+
rescue Exception => ex
|
67
|
+
display_error_message ex
|
68
|
+
exit 1
|
69
|
+
end
|
70
|
+
|
53
71
|
def task_class
|
54
72
|
map = {
|
55
73
|
:build => Build::Final,
|
data/lib/texas/task/base.rb
CHANGED
data/lib/texas/template.rb
CHANGED
@@ -57,7 +57,7 @@ module Texas
|
|
57
57
|
if filename = find_template_file(parts, possible_exts, possible_paths)
|
58
58
|
filename
|
59
59
|
else
|
60
|
-
raise "File doesnot exists anywhere: #{parts.
|
60
|
+
raise TemplateError.new(self, "File doesnot exists anywhere: #{parts.size > 1 ? parts : parts.first}")
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
@@ -69,9 +69,25 @@ module Texas
|
|
69
69
|
|
70
70
|
# Renders a template with the given locals.
|
71
71
|
#
|
72
|
-
def render(
|
73
|
-
|
74
|
-
|
72
|
+
def render(options, locals = {})
|
73
|
+
if [String, Symbol].include?(options.class)
|
74
|
+
options = {:templates => [options]}
|
75
|
+
end
|
76
|
+
if name = options[:template]
|
77
|
+
options[:templates] = [name]
|
78
|
+
end
|
79
|
+
if glob = options[:glob]
|
80
|
+
options[:templates] = templates_by_glob(glob)
|
81
|
+
end
|
82
|
+
options[:locals] = locals unless locals.empty?
|
83
|
+
render_as_array(options).join(options[:join].to_s)
|
84
|
+
end
|
85
|
+
|
86
|
+
def render_as_array(options)
|
87
|
+
options[:templates].map do |name|
|
88
|
+
template_file = find_template_file!([name], template_extensions)
|
89
|
+
Texas::Template.create(template_file, build).__run__(options[:locals])
|
90
|
+
end
|
75
91
|
end
|
76
92
|
|
77
93
|
# Returns all extensions the Template::Runner can handle.
|
@@ -46,6 +46,10 @@ module Texas
|
|
46
46
|
def __render__(locals = {})
|
47
47
|
@locals = OpenStruct.new(locals)
|
48
48
|
ERB.new(@content, nil, nil, "@erbout").result(binding)
|
49
|
+
rescue TemplateError => ex
|
50
|
+
raise ex
|
51
|
+
rescue Exception => ex
|
52
|
+
raise TemplateError.new(self, ex.message, ex)
|
49
53
|
end
|
50
54
|
|
51
55
|
def __run__(locals = {})
|
@@ -0,0 +1,34 @@
|
|
1
|
+
class TemplateError < StandardError
|
2
|
+
attr_accessor :original, :template
|
3
|
+
|
4
|
+
def initialize(template, message, original = nil)
|
5
|
+
super(message)
|
6
|
+
self.template = template
|
7
|
+
self.original = original
|
8
|
+
end
|
9
|
+
|
10
|
+
def filename
|
11
|
+
template.filename.gsub(template.build_path, '')
|
12
|
+
end
|
13
|
+
|
14
|
+
def parse_backtrace_for_origin
|
15
|
+
arr = original ? original.backtrace : backtrace
|
16
|
+
arr.each_with_index do |line, index|
|
17
|
+
if line =~ /\(erb\):(\d+)/
|
18
|
+
@line_number = $1.to_i
|
19
|
+
line_before = backtrace[index-1]
|
20
|
+
@method_name = line_before =~ /\d+:in\s+`([^\)]+)'/ && $1
|
21
|
+
return
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def origin
|
27
|
+
parse_backtrace_for_origin
|
28
|
+
"#{filename}:#{@line_number}:in `#{@method_name}'"
|
29
|
+
end
|
30
|
+
|
31
|
+
def message
|
32
|
+
super + "\n#{origin}".cyan
|
33
|
+
end
|
34
|
+
end
|
data/lib/texas/version.rb
CHANGED
@@ -2,6 +2,12 @@ Should find this template relatively and render the template another\_include be
|
|
2
2
|
|
3
3
|
<%= render "another_include" %>
|
4
4
|
|
5
|
+
<%= render :template => "another_include" %>
|
6
|
+
|
7
|
+
<%= render :templates => ["another_include"] %>
|
8
|
+
|
9
|
+
<%= render :glob => "another_*" %>
|
10
|
+
|
5
11
|
When using the LaTeX input command, the path should be relative to master.tex e.g. some\_chapter/another\_include
|
6
12
|
|
7
13
|
<%= input "another_include" %>
|
@@ -2,6 +2,12 @@ Should find this template relatively and render the template another\_include be
|
|
2
2
|
|
3
3
|
This file is a static .tex file.
|
4
4
|
|
5
|
+
This file is a static .tex file.
|
6
|
+
|
7
|
+
This file is a static .tex file.
|
8
|
+
|
9
|
+
This file is a static .tex file.
|
10
|
+
|
5
11
|
When using the LaTeX input command, the path should be relative to master.tex e.g. some\_chapter/another\_include
|
6
12
|
|
7
13
|
\input{some_chapter/another_include}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: texas
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
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: 2013-04-
|
12
|
+
date: 2013-04-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: term-ansicolor
|
@@ -72,6 +72,7 @@ files:
|
|
72
72
|
- lib/texas/template/helper/info.rb
|
73
73
|
- lib/texas/template/helper/base.rb
|
74
74
|
- lib/texas/template/runner.rb
|
75
|
+
- lib/texas/template/template_error.rb
|
75
76
|
- lib/texas/template/runner/md.rb
|
76
77
|
- lib/texas/template/runner/tex.rb
|
77
78
|
- lib/texas/template/runner/base.rb
|