erb_latex 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/erb_latex.gemspec +1 -0
- data/lib/erb_latex.rb +3 -8
- data/lib/erb_latex/configuration.rb +25 -0
- data/lib/erb_latex/context.rb +2 -7
- data/lib/erb_latex/errors.rb +1 -1
- data/lib/erb_latex/file_access.rb +28 -0
- data/lib/erb_latex/template.rb +4 -6
- data/lib/erb_latex/version.rb +1 -1
- data/test/erb_latex_test.rb +7 -0
- data/test/helper.rb +4 -9
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ff1d232589ee66eab16df483e4a00650123023e2
|
4
|
+
data.tar.gz: 812988816e5f7b00cc11e535feb0e898d49f8dd4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6914c9b7f198d049f633176ad2902f4e2a537c879303ad989842badbd7a488fa12b2b95db64e12a11b39fe2e0327766ed37153d760b5d52a444973386554518f
|
7
|
+
data.tar.gz: f7657b33f14bbc3ed55e20ec1d7f0ded2f5a83cc155ffc2123de7d58bc86685a57e491e233c4eb224543ebb62199dd117c4b920835a4e3894f1274f07259f45c
|
data/erb_latex.gemspec
CHANGED
@@ -18,6 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
+
spec.add_development_dependency "rake", "~> 10.5"
|
21
22
|
spec.add_development_dependency "bundler", "~> 1.10"
|
22
23
|
spec.add_development_dependency "yard", "~> 0.8"
|
23
24
|
spec.add_development_dependency "guard", "~> 2.13"
|
data/lib/erb_latex.rb
CHANGED
@@ -1,17 +1,12 @@
|
|
1
1
|
require "erb_latex/version"
|
2
|
+
require "erb_latex/configuration"
|
2
3
|
require "erb_latex/errors"
|
3
4
|
require "erb_latex/context"
|
4
5
|
require "erb_latex/stringio"
|
5
6
|
require "erb_latex/template"
|
6
|
-
|
7
|
-
|
7
|
+
require "erb_latex/file_access"
|
8
8
|
|
9
|
+
module ErbLatex
|
9
10
|
|
10
|
-
def self.xelatex_binary
|
11
|
-
defined?(@@xelatex_binary) ? @@xelatex_binary : "xelatex"
|
12
|
-
end
|
13
11
|
|
14
|
-
def self.xelatex_binary=(bin)
|
15
|
-
@@xelatex_binary = bin
|
16
|
-
end
|
17
12
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module ErbLatex
|
2
|
+
class << self
|
3
|
+
attr_reader :config
|
4
|
+
end
|
5
|
+
|
6
|
+
|
7
|
+
def self.configure
|
8
|
+
yield(@config)
|
9
|
+
end
|
10
|
+
|
11
|
+
class Configuration
|
12
|
+
attr_accessor :file_extension
|
13
|
+
attr_accessor :xelatex_path
|
14
|
+
attr_accessor :verbose_logs
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
@verbose_logs = false
|
18
|
+
@file_extension = '.tex.erb'
|
19
|
+
@xelatex_path = 'xelatex'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# Initialize configuration with defaults
|
24
|
+
@config = Configuration.new
|
25
|
+
end
|
data/lib/erb_latex/context.rb
CHANGED
@@ -30,13 +30,8 @@ module ErbLatex
|
|
30
30
|
|
31
31
|
# include another latex file into the current template
|
32
32
|
def partial( template, data={} )
|
33
|
-
|
34
|
-
|
35
|
-
context = Context.new( @directory, data )
|
36
|
-
ERB.new( view_file.read, 0, '-' ).result( context.getBinding )
|
37
|
-
else
|
38
|
-
"missing partial: #{template}"
|
39
|
-
end
|
33
|
+
context = Context.new( @directory, data )
|
34
|
+
ErbLatex::File.evaluate(Pathname.new(template), context.getBinding, @directory)
|
40
35
|
end
|
41
36
|
|
42
37
|
# convert newline characters into latex '\\newline'
|
data/lib/erb_latex/errors.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
module ErbLatex
|
2
|
+
|
3
|
+
module File
|
4
|
+
|
5
|
+
# simualar to File.read, except:
|
6
|
+
# * Will search in_directory for file if given, otherwise expects file to be an absolute path
|
7
|
+
# * appends ErbLatex.config.file_extension to the file if it's not found as-is.
|
8
|
+
def self.read(file, in_directory = nil)
|
9
|
+
if in_directory
|
10
|
+
file = Pathname.new(in_directory.to_s).join(file)
|
11
|
+
end
|
12
|
+
unless file.exist?
|
13
|
+
file = Pathname.new(file.to_s + ErbLatex.config.file_extension) unless file.exist?
|
14
|
+
end
|
15
|
+
unless file.exist?
|
16
|
+
msg = "Unable to read from #{@view.to_s}. Also tried extension #{ErbLatex.config.file_extension}"
|
17
|
+
raise LatexError.new(msg)
|
18
|
+
end
|
19
|
+
file.read
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.evaluate(file, context_binding, directory = nil)
|
23
|
+
::ERB.new( self.read(file, directory), 0, '-' ).result( context_binding )
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
data/lib/erb_latex/template.rb
CHANGED
@@ -97,7 +97,7 @@ module ErbLatex
|
|
97
97
|
yield pdf_file
|
98
98
|
else
|
99
99
|
errors = @log.scan(/\*\!\s(.*?)\n\s*\n/m).map{|e| e.first.gsub(/\n/,'') }.join("; ")
|
100
|
-
STDERR.puts @log
|
100
|
+
STDERR.puts @log, errors if ErbLatex.config.verbose_logs
|
101
101
|
raise LatexError.new( errors.empty? ? "xelatex compile error" : errors, @log )
|
102
102
|
end
|
103
103
|
end
|
@@ -114,11 +114,9 @@ module ErbLatex
|
|
114
114
|
def compile_latex
|
115
115
|
begin
|
116
116
|
context = ErbLatex::Context.new( @partials_path || @view.dirname, @data )
|
117
|
-
content =
|
117
|
+
content = ErbLatex::File.evaluate(@view, context.getBinding)
|
118
118
|
if layout
|
119
|
-
|
120
|
-
content
|
121
|
-
})
|
119
|
+
ErbLatex::File.evaluate(layout_file, context.getBinding{ content })
|
122
120
|
else
|
123
121
|
content
|
124
122
|
end
|
@@ -144,7 +142,7 @@ module ErbLatex
|
|
144
142
|
if @packages_path
|
145
143
|
ENV['TEXINPUTS'] = "#{@packages_path}:"
|
146
144
|
end
|
147
|
-
Open3.popen2e( ErbLatex.
|
145
|
+
Open3.popen2e( ErbLatex.config.xelatex_path,
|
148
146
|
"--no-shell-escape", "-shell-restricted",
|
149
147
|
"-jobname=output", "-output-directory=#{dir}",
|
150
148
|
) do |stdin, output, wait_thr|
|
data/lib/erb_latex/version.rb
CHANGED
data/test/erb_latex_test.rb
CHANGED
@@ -42,4 +42,11 @@ class ErbLatexTest < MiniTest::Test
|
|
42
42
|
assert_match "a test ’ of a partial", text_output
|
43
43
|
end
|
44
44
|
|
45
|
+
def test_path_with_extension
|
46
|
+
tmpl = ErbLatex::Template.new( document('with_partial.tex.erb') )
|
47
|
+
tmpl.to_file tmp_output_file
|
48
|
+
assert_match "a test ’ of a partial", text_output
|
49
|
+
end
|
50
|
+
|
51
|
+
|
45
52
|
end
|
data/test/helper.rb
CHANGED
@@ -1,14 +1,9 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'bundler'
|
3
|
-
|
4
|
-
|
5
|
-
rescue Bundler::BundlerError => e
|
6
|
-
$stderr.puts e.message
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
-
exit e.status_code
|
9
|
-
end
|
3
|
+
require 'minitest'
|
4
|
+
|
10
5
|
|
11
|
-
|
6
|
+
require 'minitest/autorun'
|
12
7
|
|
13
8
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
9
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
@@ -17,7 +12,7 @@ require 'erb_latex'
|
|
17
12
|
class MiniTest::Test
|
18
13
|
|
19
14
|
def document( name )
|
20
|
-
File.expand_path(File.join(File.dirname(__FILE__), "fixtures/#{name}
|
15
|
+
File.expand_path(File.join(File.dirname(__FILE__), "fixtures/#{name}"))
|
21
16
|
end
|
22
17
|
|
23
18
|
def tmp_output_file
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: erb_latex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Stitt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '10.5'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '10.5'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -83,8 +97,10 @@ files:
|
|
83
97
|
- Rakefile
|
84
98
|
- erb_latex.gemspec
|
85
99
|
- lib/erb_latex.rb
|
100
|
+
- lib/erb_latex/configuration.rb
|
86
101
|
- lib/erb_latex/context.rb
|
87
102
|
- lib/erb_latex/errors.rb
|
103
|
+
- lib/erb_latex/file_access.rb
|
88
104
|
- lib/erb_latex/guard.rb
|
89
105
|
- lib/erb_latex/guard_runner.rb
|
90
106
|
- lib/erb_latex/stringio.rb
|