indoctrinatr-tools 0.11.0 → 0.12.0
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.
- checksums.yaml +4 -4
- data/.arcconfig +3 -3
- data/.rubocop.yml +3 -0
- data/.rvmrc +1 -1
- data/.travis.yml +2 -2
- data/README.md +12 -3
- data/bin/indoctrinatr +40 -10
- data/features/demo.feature +7 -7
- data/features/doc_keepauxfiles.feature +13 -0
- data/features/documentation.feature +13 -4
- data/features/fieldnames_pdf.feature +9 -0
- data/features/fieldnames_pdf_auxfiles.feature +10 -0
- data/features/parse.feature +1 -1
- data/features/pdf.feature +2 -1
- data/features/pdf_keepauxfiles.feature +11 -0
- data/features/version.feature +1 -1
- data/features/workflow.feature +1 -0
- data/indoctrinatr-tools.gemspec +10 -10
- data/lib/indoctrinatr/templates/configuration.yaml +11 -3
- data/lib/indoctrinatr/templates/documentation/dkd-image-tools.sty +72 -0
- data/lib/indoctrinatr/templates/documentation/indoctrinatr-technical-documentation-content.tex.erb +17 -12
- data/lib/indoctrinatr/templates/documentation/indoctrinatr-technical-documentation.tex.erb +8 -0
- data/lib/indoctrinatr/templates/template.tex.erb +10 -3
- data/lib/indoctrinatr/tools/configuration_extractor.rb +1 -1
- data/lib/indoctrinatr/tools/content_for_tex_files.rb +36 -0
- data/lib/indoctrinatr/tools/default_values.rb +3 -28
- data/lib/indoctrinatr/tools/field_name_values.rb +57 -0
- data/lib/indoctrinatr/tools/pdf_generator.rb +36 -0
- data/lib/indoctrinatr/tools/template_documentation_content.rb +26 -16
- data/lib/indoctrinatr/tools/template_documentation_helpers.rb +13 -0
- data/lib/indoctrinatr/tools/template_documentation_source_file.rb +12 -12
- data/lib/indoctrinatr/tools/template_pack_configuration.rb +1 -1
- data/lib/indoctrinatr/tools/template_pack_default_values_compiler.rb +12 -4
- data/lib/indoctrinatr/tools/template_pack_default_values_parser.rb +4 -0
- data/lib/indoctrinatr/tools/template_pack_documentation.rb +32 -11
- data/lib/indoctrinatr/tools/template_pack_error_checker.rb +104 -0
- data/lib/indoctrinatr/tools/template_pack_fieldnames_creator.rb +79 -0
- data/lib/indoctrinatr/tools/template_pack_helpers.rb +34 -4
- data/lib/indoctrinatr/tools/template_pack_scaffold.rb +2 -2
- data/lib/indoctrinatr/tools/version.rb +1 -1
- data/lib/redcloth_latex_formatter_patch/patch.rb +2 -1
- data/spec/indoctrinatr/templates/configuration_file_spec.rb +1 -1
- data/spec/indoctrinatr/templates/tex_file_spec.rb +1 -1
- data/spec/indoctrinatr/tools/version_spec.rb +1 -1
- metadata +33 -17
data/lib/indoctrinatr/templates/documentation/indoctrinatr-technical-documentation-content.tex.erb
CHANGED
@@ -22,15 +22,20 @@
|
|
22
22
|
|
23
23
|
<% end %>
|
24
24
|
|
25
|
-
\
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
25
|
+
\begin{landscape}
|
26
|
+
\chapter{Variables}
|
27
|
+
|
28
|
+
\begin{longtabu}{ l l X l X }
|
29
|
+
\tabletoprule
|
30
|
+
\textbf{Variable} & \textbf{Presentation} & \textbf{Default Value} & \textbf{Required} & \textbf{Description} \\
|
31
|
+
\tabletoprule
|
32
|
+
\endhead
|
33
|
+
<% @attributes.each do |attribute| %>
|
34
|
+
\texttt{<%= attribute['name'].to_latex -%>}
|
35
|
+
& <%= attribute['presentation'].to_latex if attribute['presentation'] -%>
|
36
|
+
& <%= attribute['default_value'].to_latex -%>
|
37
|
+
& <%= 'true' if attribute['required'] == 'true' -%> <%# empty if false or not set. Wish by Søren for better readability-%>
|
38
|
+
& <%= attribute['description'].to_latex if attribute['description'] -%>\\ <%# if condition to ignore errors on empty description field -%>
|
39
|
+
<% end %>
|
40
|
+
\end{longtabu}
|
41
|
+
\end{landscape}
|
@@ -9,7 +9,11 @@
|
|
9
9
|
|
10
10
|
% use dkd-letter style to apply design styles
|
11
11
|
\usepackage{indoctrinatr-technical-documentation}
|
12
|
+
% use custom image macros to show image placeholders
|
13
|
+
\usepackage{dkd-image-tools}
|
12
14
|
|
15
|
+
% use "pdflscape" package to be able to have several landscape pages in the document
|
16
|
+
\usepackage{pdflscape}
|
13
17
|
|
14
18
|
%define labels to use in this document
|
15
19
|
\newcommand{\dkd}{\emph{dkd}}
|
@@ -72,6 +76,10 @@
|
|
72
76
|
% include the prerendered template
|
73
77
|
% pages=- selects all pages
|
74
78
|
\includepdf[pages=-]{<%= @default_values_pdf_path -%>} % template_with_default_values.pdf "#{@template_name}_with_default_values.pdf"
|
79
|
+
<% if @pdf_with_field_names_path %>
|
80
|
+
\chapter{Templated filled with field names}
|
81
|
+
\includepdf[pages=-]{<%= @pdf_with_field_names_path -%>}
|
82
|
+
<% end %>
|
75
83
|
% restore wallpaper
|
76
84
|
\ULCornerWallPaper{1}{indoctrinatr_letterpaper.pdf}
|
77
85
|
|
@@ -2,7 +2,14 @@
|
|
2
2
|
\documentclass{article}
|
3
3
|
|
4
4
|
\begin{document}
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
\section{Hello <%= variable1 -%>}
|
6
|
+
|
7
|
+
The <%= variable1 -%> is <%= variable2 -%>!
|
8
|
+
|
9
|
+
Today is \textbf{<%= date -%>}.
|
10
|
+
|
11
|
+
% This is is the raw, unescaped input of \texttt{variable1}:
|
12
|
+
\begin{verbatim}
|
13
|
+
<%= raw_variable1 -%>
|
14
|
+
\end{verbatim}
|
8
15
|
\end{document}
|
@@ -11,7 +11,7 @@ module Indoctrinatr
|
|
11
11
|
@template_pack_name = template_pack_name
|
12
12
|
end
|
13
13
|
|
14
|
-
def call
|
14
|
+
def call
|
15
15
|
config_file = YAML.load_file config_file_path
|
16
16
|
configuration = TemplatePackConfiguration.new
|
17
17
|
configuration.template_asset_path = assets_path.to_s
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'redcloth'
|
2
|
+
|
3
|
+
module Indoctrinatr
|
4
|
+
module Tools
|
5
|
+
class ContentForTexFiles
|
6
|
+
# a class that DefaultValues, TemplateDocumentationContent, and field_names_as_variables should inherit from
|
7
|
+
# or to be precise: When we want use variables in an indoctrinatr tex.erb file, we should use this class
|
8
|
+
def initialize configuration
|
9
|
+
@_configuration = configuration
|
10
|
+
_build_from_configuration
|
11
|
+
end
|
12
|
+
|
13
|
+
def textile2latex textile
|
14
|
+
RedCloth.new(textile).to_latex
|
15
|
+
end
|
16
|
+
|
17
|
+
def retrieve_binding
|
18
|
+
binding
|
19
|
+
end
|
20
|
+
|
21
|
+
def customized_output_file_name
|
22
|
+
@_customized_output_file_name ||= eval('"' + @_output_file_name + '"') # rubocop:disable Lint/Eval
|
23
|
+
end
|
24
|
+
|
25
|
+
def template_asset_path
|
26
|
+
@_template_asset_path
|
27
|
+
end
|
28
|
+
|
29
|
+
def _build_from_configuration
|
30
|
+
@_template_asset_path = @_configuration.template_asset_path
|
31
|
+
@_output_file_name = @_configuration.output_file_name # does this fit here?
|
32
|
+
@_default_file_name = @_configuration.default_file_name # does this fit here?
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -1,29 +1,8 @@
|
|
1
|
-
require '
|
1
|
+
require 'indoctrinatr/tools/content_for_tex_files'
|
2
2
|
|
3
3
|
module Indoctrinatr
|
4
4
|
module Tools
|
5
|
-
class DefaultValues
|
6
|
-
def initialize configuration
|
7
|
-
@_configuration = configuration
|
8
|
-
_build_from_configuration
|
9
|
-
end
|
10
|
-
|
11
|
-
def textile2latex textile
|
12
|
-
RedCloth.new(textile).to_latex
|
13
|
-
end
|
14
|
-
|
15
|
-
def retrieve_binding
|
16
|
-
binding
|
17
|
-
end
|
18
|
-
|
19
|
-
def customized_output_file_name
|
20
|
-
@_customized_output_file_name ||= eval('"' + @_output_file_name + '"') # rubocop:disable Lint/Eval
|
21
|
-
end
|
22
|
-
|
23
|
-
def template_asset_path
|
24
|
-
@_template_asset_path
|
25
|
-
end
|
26
|
-
|
5
|
+
class DefaultValues < ContentForTexFiles
|
27
6
|
def output_file_name
|
28
7
|
@_output_file_name
|
29
8
|
end
|
@@ -32,11 +11,7 @@ module Indoctrinatr
|
|
32
11
|
@_default_file_name
|
33
12
|
end
|
34
13
|
|
35
|
-
def
|
36
|
-
@_template_asset_path = @_configuration.template_asset_path
|
37
|
-
@_output_file_name = @_configuration.output_file_name
|
38
|
-
@_default_file_name = @_configuration.default_file_name
|
39
|
-
|
14
|
+
def _use_default_values # rubocop:disable Metrics/AbcSize
|
40
15
|
@_configuration.attributes_as_hashes_in_array.each do |attribute_hash|
|
41
16
|
instance_variable_set("@_#{attribute_hash['name']}", attribute_hash['default_value'])
|
42
17
|
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'indoctrinatr/tools/content_for_tex_files'
|
2
|
+
|
3
|
+
module Indoctrinatr
|
4
|
+
module Tools
|
5
|
+
# This class defines the content for a document that has the field names as content.
|
6
|
+
class FieldNameValues < ContentForTexFiles
|
7
|
+
# TODO: extensive list of possibilities
|
8
|
+
PICTURE_FILE_ENDINGS = %w(.png .jpeg .jpg .bmp .gif .pdf).freeze
|
9
|
+
def _field_names_as_values # rubocop:disable Metrics/AbcSize
|
10
|
+
@_configuration.attributes_as_hashes_in_array.each do |attribute_hash|
|
11
|
+
# Usage of \textless to avoid issues with the < > characters.
|
12
|
+
# Usage of * character because it does not produce any issues when it's used in arguments of LaTeX commands.
|
13
|
+
# Initially the intention was to use texttt, but that had this problem.
|
14
|
+
instance_variable_set("@_#{attribute_hash['name']}",
|
15
|
+
"\\textless***#{attribute_hash['name'].to_latex}***\\textgreater")
|
16
|
+
|
17
|
+
define_singleton_method "raw_#{attribute_hash['name']}".to_sym do
|
18
|
+
"raw\\_#{instance_variable_get("@_#{attribute_hash['name']}")}"
|
19
|
+
end
|
20
|
+
|
21
|
+
define_singleton_method attribute_hash['name'].to_sym do
|
22
|
+
# No usage of to_latex because we escaped variable name already and want no escaping for the other stuff
|
23
|
+
instance_variable_get("@_#{attribute_hash['name']}")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
# This overwrites the instance attributes and methods again
|
27
|
+
overwrite_picture_file_names_output @_configuration.attributes_as_hashes_in_array
|
28
|
+
end
|
29
|
+
|
30
|
+
# The LaTeX compilation would fail if the \includegraphics tries to include a file that does not exist.
|
31
|
+
# Because of that it makes sense to simply use the default values again if user sets file names.
|
32
|
+
def overwrite_picture_file_names_output attributes_as_hashes # rubocop:disable Metrics/AbcSize
|
33
|
+
attributes_as_hashes.each do |attribute_hash|
|
34
|
+
# search for typical picture file endings
|
35
|
+
next unless detect_picture_file_names attribute_hash['default_value']
|
36
|
+
instance_variable_set("@_#{attribute_hash['name']}", attribute_hash['default_value'])
|
37
|
+
|
38
|
+
define_singleton_method "raw_#{attribute_hash['name']}".to_sym do
|
39
|
+
"raw\\_#{instance_variable_get("@_#{attribute_hash['name']}")}"
|
40
|
+
end
|
41
|
+
|
42
|
+
define_singleton_method attribute_hash['name'].to_sym do
|
43
|
+
instance_variable_get("@_#{attribute_hash['name']}").to_latex
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# Indoctrinatr has no picture data type. This means that the only way to check for pictures is to check for
|
49
|
+
# file endings. If an user has obscure file type the possibility list would have to get updated.
|
50
|
+
def detect_picture_file_names string_to_check
|
51
|
+
PICTURE_FILE_ENDINGS.any? do |picture_file_ending|
|
52
|
+
string_to_check.downcase.include? picture_file_ending # http://stackoverflow.com/a/3686568
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# Unify the command usage for all pdf creation features
|
2
|
+
module Indoctrinatr
|
3
|
+
module Tools
|
4
|
+
module PdfGenerator
|
5
|
+
# Compiles a PDF from a tex file with XeLaTeX
|
6
|
+
# @param tex_file a Pathname that points to the tex file
|
7
|
+
# @return false if error, nil if system command unknown
|
8
|
+
def make_pdf tex_file, output_dir = nil, cleanup = true
|
9
|
+
args = ['-xelatex',
|
10
|
+
'-shell-escape',
|
11
|
+
'-interaction=batchmode', # more silent output
|
12
|
+
"-output-directory=#{output_dir}", # without this xelatex tries to use the current working directory
|
13
|
+
tex_file.to_s]
|
14
|
+
if output_dir.nil?
|
15
|
+
args.delete_at 3 # Remove argument if no output dir is wished for. This probably could be done better.
|
16
|
+
end
|
17
|
+
latexmk_successful = system('latexmk', *args) # latexmk instead of running 2.times
|
18
|
+
latex_cleanup output_dir if latexmk_successful == true && cleanup
|
19
|
+
latexmk_successful
|
20
|
+
end
|
21
|
+
|
22
|
+
# Cleans up LaTeX helper files in a specific directory
|
23
|
+
# @param working_directory a Pathname that points the directory that should get cleaned up
|
24
|
+
# @return false if error, nil if system command unknown
|
25
|
+
def latex_cleanup working_directory
|
26
|
+
# latexmk -c apparently cannot cleanup a specified subdirectory. So we have to change the working directory,
|
27
|
+
# run the cleanup command in it and then change back to the directory that we were in. http://tex.stackexchange.com/q/301366/17834
|
28
|
+
current_dir = Dir.getwd
|
29
|
+
Dir.chdir working_directory.to_s if working_directory
|
30
|
+
latexmk_successful = system 'latexmk -c'
|
31
|
+
Dir.chdir current_dir # should be the same as ../../.. # Dir.chdir '../../..'
|
32
|
+
latexmk_successful
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'indoctrinatr/tools/content_for_tex_files'
|
1
2
|
require 'indoctrinatr/tools/template_pack_configuration'
|
2
3
|
require 'indoctrinatr/tools/directory_helpers'
|
3
4
|
require 'indoctrinatr/tools/template_documentation_source_file'
|
@@ -5,12 +6,14 @@ require 'indoctrinatr/tools/default_values'
|
|
5
6
|
|
6
7
|
module Indoctrinatr
|
7
8
|
module Tools
|
8
|
-
class TemplateDocumentationContent
|
9
|
+
class TemplateDocumentationContent < ContentForTexFiles
|
9
10
|
include DirectoryHelpers
|
10
11
|
include TemplatePackHelpers
|
11
12
|
|
12
13
|
attr_accessor :template_pack_name, :list_of_files
|
13
14
|
|
15
|
+
# Overwrite the initialize method because the content is built up much more complex than for the other
|
16
|
+
# ContentForTexFile children.
|
14
17
|
def initialize template_pack_name, configuration
|
15
18
|
@configuration = configuration
|
16
19
|
@template_pack_name = template_pack_name
|
@@ -18,33 +21,40 @@ module Indoctrinatr
|
|
18
21
|
@attributes = configuration.attributes_as_hashes_in_array # we need: name, presentation, default_value, description
|
19
22
|
@template_name = configuration.template_name
|
20
23
|
@files = read_template_files_content
|
21
|
-
@default_values_pdf_path =
|
22
|
-
|
23
|
-
fail IOError, "template with default values does not exist in current directory. Run indoctrinatr pdf #{template_pack_name}" unless File.exist? @default_values_pdf_path
|
24
|
-
end
|
25
|
-
|
26
|
-
def retrieve_binding
|
27
|
-
binding
|
24
|
+
@default_values_pdf_path = default_values_example
|
25
|
+
@pdf_with_field_names_path = fieldname_values_example
|
28
26
|
end
|
29
27
|
|
30
28
|
private
|
31
29
|
|
32
30
|
def read_template_files_content
|
33
31
|
filenames = list_files_of_type template_pack_name
|
32
|
+
filenames.reject! { |f| f.include?(pack_documentation_examples_dir_path.relative_path_from(Pathname.new(Dir.pwd)).to_s) }
|
34
33
|
filenames.inject [] do |files, filename|
|
35
34
|
files.push TemplateDocumentationSourceFile.new filename
|
36
35
|
end
|
37
36
|
end
|
38
37
|
|
39
|
-
def
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
38
|
+
def default_values_example
|
39
|
+
default_values_compiler = TemplatePackDefaultValuesCompiler.new(template_pack_name)
|
40
|
+
unless default_values_compiler.pdf_exists?
|
41
|
+
TemplatePackDefaultValuesParser.new(template_pack_name).call
|
42
|
+
default_values_compiler.call
|
43
|
+
end
|
44
|
+
pdf_with_default_values_file_path @configuration
|
45
|
+
end
|
46
|
+
|
47
|
+
def fieldname_values_example
|
48
|
+
fieldnames_creator = TemplatePackFieldnamesCreator.new(template_pack_name)
|
49
|
+
# This gives user the option to customize the FieldNameValues Example that is appended in the documentation
|
50
|
+
return pdf_with_fieldname_values_file_path if fieldnames_creator.pdf_exists?
|
51
|
+
|
52
|
+
if fieldnames_creator.call
|
53
|
+
puts 'INFO: Example with field names has been automatically generated for the documentation' # More user information and for testing
|
54
|
+
pdf_with_fieldname_values_file_path
|
46
55
|
else
|
47
|
-
|
56
|
+
puts 'ERROR: Example with field names could not be created and is not included in documentation'
|
57
|
+
nil
|
48
58
|
end
|
49
59
|
end
|
50
60
|
end
|
@@ -17,6 +17,10 @@ module Indoctrinatr
|
|
17
17
|
documentation_files_path.join 'indoctrinatr-technical-documentation.sty'
|
18
18
|
end
|
19
19
|
|
20
|
+
def source_image_tools_package_file_path
|
21
|
+
documentation_files_path.join 'dkd-image-tools.sty'
|
22
|
+
end
|
23
|
+
|
20
24
|
def source_letterpaper_file_path
|
21
25
|
documentation_files_path.join 'indoctrinatr_letterpaper.pdf'
|
22
26
|
end
|
@@ -29,6 +33,10 @@ module Indoctrinatr
|
|
29
33
|
documentation_compile_dir_path_name.join 'indoctrinatr-technical-documentation.sty'
|
30
34
|
end
|
31
35
|
|
36
|
+
def image_tools_package_destination_path
|
37
|
+
documentation_compile_dir_path_name.join 'dkd-image-tools.sty'
|
38
|
+
end
|
39
|
+
|
32
40
|
def letterpaper_file_destination_path
|
33
41
|
documentation_compile_dir_path_name.join 'indoctrinatr_letterpaper.pdf'
|
34
42
|
end
|
@@ -49,6 +57,11 @@ module Indoctrinatr
|
|
49
57
|
documentation_compile_dir_path_name.join 'indoctrinatr-technical-documentation.log'
|
50
58
|
end
|
51
59
|
|
60
|
+
# Accessor method to the attribute for classes that include this module
|
61
|
+
def documentation_temp_dir
|
62
|
+
documentation_compile_dir_path_name
|
63
|
+
end
|
64
|
+
|
52
65
|
private
|
53
66
|
|
54
67
|
def documentation_files_path
|
@@ -12,18 +12,18 @@ module Indoctrinatr
|
|
12
12
|
private
|
13
13
|
|
14
14
|
def set_programming_language
|
15
|
-
case File.extname(@name)
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
15
|
+
language = case File.extname(@name)
|
16
|
+
when '.tex'
|
17
|
+
'TeX'
|
18
|
+
when '.sty'
|
19
|
+
'TeX'
|
20
|
+
when '.erb' # .erb files are just supposed to be tex.erb files. TODO: more correct
|
21
|
+
'TeX'
|
22
|
+
when '.rb'
|
23
|
+
'Ruby'
|
24
|
+
else # probably YAML
|
25
|
+
'unspecified'
|
26
|
+
end
|
27
27
|
language
|
28
28
|
end
|
29
29
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Indoctrinatr
|
2
2
|
module Tools
|
3
|
-
class TemplatePackConfiguration
|
3
|
+
class TemplatePackConfiguration # wrapper class for config. See ConfigurationExtractor for details
|
4
4
|
attr_accessor :template_asset_path, :default_file_name, :template_name, :textual_description, :output_file_name, :attributes_as_hashes_in_array
|
5
5
|
end
|
6
6
|
end
|
@@ -1,15 +1,18 @@
|
|
1
1
|
require 'indoctrinatr/tools/configuration_extractor'
|
2
|
+
require 'indoctrinatr/tools/pdf_generator'
|
2
3
|
require 'fileutils'
|
3
4
|
|
4
5
|
module Indoctrinatr
|
5
6
|
module Tools
|
6
7
|
class TemplatePackDefaultValuesCompiler
|
7
8
|
include TemplatePackHelpers
|
9
|
+
include PdfGenerator
|
8
10
|
|
9
11
|
attr_accessor :template_pack_name
|
10
12
|
|
11
|
-
def initialize template_pack_name
|
13
|
+
def initialize template_pack_name, keep_aux_files = false
|
12
14
|
@template_pack_name = template_pack_name
|
15
|
+
@keep_aux_files = keep_aux_files
|
13
16
|
end
|
14
17
|
|
15
18
|
def call
|
@@ -18,15 +21,20 @@ module Indoctrinatr
|
|
18
21
|
rename_if_necessary
|
19
22
|
end
|
20
23
|
|
24
|
+
def pdf_exists?
|
25
|
+
check_for_folder
|
26
|
+
file_path = pdf_with_default_values_file_path ConfigurationExtractor.new(template_pack_name).call
|
27
|
+
File.exist? file_path
|
28
|
+
end
|
29
|
+
|
21
30
|
private
|
22
31
|
|
23
32
|
def compile_tex_file
|
24
|
-
|
25
|
-
2.times { system('xelatex', *args) } # run two times for proper table-of-contents and page count handling. TODO: use latexmk
|
33
|
+
make_pdf tex_with_default_values_file_path, pack_documentation_examples_dir_path, !@keep_aux_files
|
26
34
|
end
|
27
35
|
|
28
36
|
def rename_if_necessary
|
29
|
-
configuration = ConfigurationExtractor.new(template_pack_name).call
|
37
|
+
configuration = ConfigurationExtractor.new(template_pack_name).call # TODO: avoid repeated calling of the ConfigurationExtrator
|
30
38
|
@default_values = DefaultValues.new configuration
|
31
39
|
return if @default_values.customized_output_file_name == @default_values.default_file_name
|
32
40
|
|