petit-felix 0.1.10 → 0.1.12
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/lib/felix/config.rb +6 -19
- data/lib/felix/generator.rb +2 -2
- data/lib/petit-felix.rb +23 -0
- data/lib/task/basic_pdf_classic_task.rb +3 -1
- data/lib/task/default_task.rb +7 -1
- data/lib/task/pdf_single_task.rb +3 -3
- data/lib/task/template_pdf_task.rb +4 -3
- data/lib/version.rb +1 -1
- data/lib/worker/pdf_writer/bounding_box.rb +3 -1
- data/lib/worker/pdf_writer.rb +59 -7
- data/lib/worker/template_pdf_writer.rb +17 -3
- data/lib/worker/templater/error.rb +1 -1
- data/lib/worker/templater/font.rb +4 -4
- data/lib/worker/templater/methods.rb +98 -56
- data/lib/worker/templater/validation.rb +3 -2
- data/templates/zine-single.json +88 -45
- metadata +23 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0385a01ed768fc17ba19eec8aa5d8b82334548ca7caf400914a3be469b103b24'
|
4
|
+
data.tar.gz: '02867002b1402b7e19094a4347935d86c9cd2cdc22a7f1fd1e9a01746937ccae'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9d5c534c9dc0e2c16a5aebedf69e8d724b57fcc7264a4e8acfa59cd25b0598c0120e295549fe1971663cf7a01e19d970046a2e0501dad5491466204a2de6696c
|
7
|
+
data.tar.gz: da55097dd604bf69554e2de46f332fe193fdcfb360cb1efaac044c305cda10a8890f38a77364e1446626983443052938a87fedfddea162d693c4638a28178817
|
data/lib/felix/config.rb
CHANGED
@@ -21,29 +21,12 @@ module PetitFelix
|
|
21
21
|
|
22
22
|
## Hash for custom command line argument calls
|
23
23
|
CL_DATA = {
|
24
|
-
|
25
|
-
"default_font_size" => -> (command, args, index, cl_args) { cl_add_config(command, args, index, cl_args).to_i },
|
26
|
-
"header1_size" => -> (command, args, index, cl_args) { cl_add_config(command, args, index, cl_args).to_i },
|
27
|
-
"header2_size" => -> (command, args, index, cl_args) { cl_add_config(command, args, index, cl_args).to_i },
|
28
|
-
"header3_size" => -> (command, args, index, cl_args) { cl_add_config(command, args, index, cl_args).to_i },
|
29
|
-
"header4_size" => -> (command, args, index, cl_args) { cl_add_config(command, args, index, cl_args).to_i },
|
30
|
-
"header5_size" => -> (command, args, index, cl_args) { cl_add_config(command, args, index, cl_args).to_i },
|
31
|
-
"header6_size" => -> (command, args, index, cl_args) { cl_add_config(command, args, index, cl_args).to_i },
|
32
|
-
"margin" => -> (command, args, index, cl_args) { cl_add_config(command, args, index, cl_args).to_i },
|
33
|
-
"font_normal" => -> (command, args, index, cl_args) { cl_add_config(command, args, index, cl_args) },
|
34
|
-
"font_italic" => -> (command, args, index, cl_args) { cl_add_config(command, args, index, cl_args) },
|
35
|
-
"font_bold" => -> (command, args, index, cl_args) { cl_add_config(command, args, index, cl_args) },
|
36
|
-
"font_bold_italic" => -> (command, args, index, cl_args) { cl_add_config(command, args, index, cl_args) },
|
37
|
-
"page_layout" => -> (command, args, index, cl_args) { cl_add_config(command, args, index, cl_args) },
|
38
|
-
"input_files" => -> (command, args, index, cl_args) { cl_add_config(command, args, index, cl_args) },
|
39
|
-
"image_dir" => -> (command, args, index, cl_args) { cl_add_config(command, args, index, cl_args) },
|
40
|
-
"task" => -> (command, args, index, cl_args) { cl_add_config(command, args, index, cl_args) },
|
41
|
-
"template" => -> (command, args, index, cl_args) { cl_add_config(command, args, index, cl_args) },
|
24
|
+
|
42
25
|
}
|
43
26
|
|
44
27
|
### Command Line Arguments
|
45
28
|
|
46
|
-
def
|
29
|
+
def cl_add_config command, args, index, cl_args
|
47
30
|
cl_args[command] = args[index + 1]
|
48
31
|
end
|
49
32
|
|
@@ -155,6 +138,10 @@ module PetitFelix
|
|
155
138
|
|
156
139
|
CL_DATA[command].call command, args, index, cl_args
|
157
140
|
|
141
|
+
else
|
142
|
+
|
143
|
+
cl_add_config command, args, index, cl_args
|
144
|
+
|
158
145
|
end
|
159
146
|
|
160
147
|
@processed_arguments << command
|
data/lib/felix/generator.rb
CHANGED
@@ -6,7 +6,7 @@ module PetitFelix
|
|
6
6
|
|
7
7
|
## Renders all the files in the given directory.
|
8
8
|
|
9
|
-
def render_files(wm, options)
|
9
|
+
def render_files(wm, options, override_options: {})
|
10
10
|
|
11
11
|
task = wm.get_task options["task"]
|
12
12
|
|
@@ -15,7 +15,7 @@ module PetitFelix
|
|
15
15
|
default_options = default_options.merge(options)
|
16
16
|
|
17
17
|
if !task.nil?
|
18
|
-
task.render_files default_options
|
18
|
+
task.render_files default_options, override_options
|
19
19
|
end
|
20
20
|
|
21
21
|
end
|
data/lib/petit-felix.rb
CHANGED
@@ -26,6 +26,29 @@ module PetitFelix
|
|
26
26
|
end
|
27
27
|
|
28
28
|
end
|
29
|
+
|
30
|
+
class Process
|
31
|
+
|
32
|
+
# cl_args - command line arguments passed from CLI
|
33
|
+
# options - hash passed by developer containing default rendering options
|
34
|
+
def initialize(cl_args: [], options: {})
|
35
|
+
|
36
|
+
# Creates a new worker manager, which has all the worker stuff
|
37
|
+
@wm = PetitFelix::TaskManager.new
|
38
|
+
|
39
|
+
## Loads options from default values, ./default.cfg
|
40
|
+
config = PetitFelix::Config.new
|
41
|
+
@loaded_options = config.load_config @wm, options, cl_args
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
def output(options: {})
|
46
|
+
|
47
|
+
## Starts producing stuff
|
48
|
+
PetitFelix::Generator.new.render_files @wm, @loaded_options, override_options: options
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
29
52
|
|
30
53
|
end
|
31
54
|
|
data/lib/task/default_task.rb
CHANGED
@@ -30,6 +30,10 @@ module PetitFelix
|
|
30
30
|
|
31
31
|
end
|
32
32
|
|
33
|
+
@override_options.keys.each do |key|
|
34
|
+
@metaoptions[key] = @override_options[key]
|
35
|
+
end
|
36
|
+
|
33
37
|
# Loads proper values from strings for certain params
|
34
38
|
page_layout = :portrait
|
35
39
|
print_scaling = :none
|
@@ -50,7 +54,9 @@ module PetitFelix
|
|
50
54
|
end
|
51
55
|
|
52
56
|
# gets the files from input files and renders them.
|
53
|
-
def render_files options
|
57
|
+
def render_files options, override_options
|
58
|
+
|
59
|
+
@override_options = override_options
|
54
60
|
|
55
61
|
if options.key? "input_files"
|
56
62
|
|
data/lib/task/pdf_single_task.rb
CHANGED
@@ -41,7 +41,7 @@ module PetitFelix
|
|
41
41
|
page_data = metadata_helper.split page
|
42
42
|
|
43
43
|
metadata = @metaoptions.merge(metadata_helper.get_metadata(page_data[0]))
|
44
|
-
|
44
|
+
|
45
45
|
# Always forces you to use this template
|
46
46
|
@metaoptions["template"] = File.join(File.dirname(__FILE__),"..","..", "templates","zine-single.json")
|
47
47
|
|
@@ -53,8 +53,8 @@ module PetitFelix
|
|
53
53
|
|
54
54
|
@metaoptions["output_file"] = File.basename(File.basename(@metaoptions["filename"], ".md"), ".markdown") + ".pdf"
|
55
55
|
|
56
|
-
pdf.set_options @metaoptions
|
57
|
-
|
56
|
+
pdf.set_options @metaoptions, override_options: @override_options
|
57
|
+
|
58
58
|
pdf.init_values @metaoptions, pdf
|
59
59
|
|
60
60
|
pdf.read_template
|
@@ -18,7 +18,8 @@ module PetitFelix
|
|
18
18
|
|
19
19
|
return {
|
20
20
|
"template" => (File.join(File.dirname(__FILE__),"..","..","templates","test.json")),
|
21
|
-
"output_file" => "test.pdf"
|
21
|
+
"output_file" => "test.pdf",
|
22
|
+
"right_to_left" => false
|
22
23
|
}
|
23
24
|
|
24
25
|
end
|
@@ -31,8 +32,8 @@ module PetitFelix
|
|
31
32
|
pdf = PetitFelix::Worker::TemplatePDFWriter.new(
|
32
33
|
page_layout: @metaoptions["page_layout"],
|
33
34
|
print_scaling: @metaoptions["print_scaling"])
|
34
|
-
|
35
|
-
pdf.set_options @metaoptions
|
35
|
+
|
36
|
+
pdf.set_options @metaoptions, override_options: @override_options
|
36
37
|
|
37
38
|
pdf.init_values @metaoptions, pdf
|
38
39
|
|
data/lib/version.rb
CHANGED
data/lib/worker/pdf_writer.rb
CHANGED
@@ -4,6 +4,7 @@ require "prawndown-ext"
|
|
4
4
|
require "felix/file"
|
5
5
|
require "worker/pdf_writer/column_box"
|
6
6
|
require "worker/pdf_writer/bounding_box"
|
7
|
+
require "felix/metadata"
|
7
8
|
|
8
9
|
## Prawn PDF writer that outputs template files
|
9
10
|
|
@@ -12,6 +13,22 @@ module PetitFelix
|
|
12
13
|
|
13
14
|
class DefaultPDFWriter < Prawn::Document
|
14
15
|
|
16
|
+
def right_to_left
|
17
|
+
return @right_to_left
|
18
|
+
end
|
19
|
+
|
20
|
+
def set_right_to_left val
|
21
|
+
@right_to_left = val
|
22
|
+
end
|
23
|
+
|
24
|
+
def alternates_pages
|
25
|
+
return @alternates_pages
|
26
|
+
end
|
27
|
+
|
28
|
+
def set_alternate_pages val
|
29
|
+
@alternates_pages = val
|
30
|
+
end
|
31
|
+
|
15
32
|
# Initializes fonts
|
16
33
|
def initialize_font
|
17
34
|
|
@@ -81,10 +98,20 @@ module PetitFelix
|
|
81
98
|
end
|
82
99
|
end
|
83
100
|
|
84
|
-
def set_options metaoptions
|
85
|
-
|
101
|
+
def set_options metaoptions, override_options: {}
|
102
|
+
@alternates_pages = false
|
103
|
+
@right_to_left = false
|
104
|
+
|
86
105
|
@options = metaoptions
|
87
106
|
|
107
|
+
md = PetitFelix::Metadata.new
|
108
|
+
|
109
|
+
metadata = md.get_metadata(md.split(File.read metaoptions["filename"])[0])
|
110
|
+
|
111
|
+
@options = @options.merge(metadata)
|
112
|
+
|
113
|
+
@override_options = override_options
|
114
|
+
|
88
115
|
end
|
89
116
|
|
90
117
|
def output
|
@@ -177,16 +204,31 @@ module PetitFelix
|
|
177
204
|
pages = []
|
178
205
|
pairs = []
|
179
206
|
|
180
|
-
#
|
181
|
-
# if
|
207
|
+
# Test if the pages line up to mod 4 for double print
|
208
|
+
# if not, fix it
|
182
209
|
|
183
|
-
|
184
|
-
|
210
|
+
modval = state.pages.count % 4
|
211
|
+
|
212
|
+
if modval > 0
|
213
|
+
|
214
|
+
modval = 4 - modval
|
215
|
+
|
216
|
+
go_to_page(2)
|
217
|
+
|
185
218
|
start_new_page
|
186
219
|
|
187
|
-
|
220
|
+
modval -= 1
|
221
|
+
|
222
|
+
go_to_page(-3)
|
223
|
+
|
224
|
+
(modval).times do
|
225
|
+
start_new_page
|
226
|
+
end
|
227
|
+
|
188
228
|
end
|
189
229
|
|
230
|
+
go_to_page(state.pages.count)
|
231
|
+
|
190
232
|
# Now that its even do the algorithm
|
191
233
|
center = (state.pages.count / 2) - 1
|
192
234
|
center_other = center + 1
|
@@ -200,11 +242,21 @@ module PetitFelix
|
|
200
242
|
|
201
243
|
end
|
202
244
|
|
245
|
+
counter = 0
|
246
|
+
|
203
247
|
pairs.each do |item|
|
204
248
|
|
249
|
+
counter += 1
|
250
|
+
|
205
251
|
pages.append item[0]
|
206
252
|
pages.append item[1]
|
207
253
|
|
254
|
+
if !@right_to_left && (counter % 4 == 1 || counter % 4 == 3)
|
255
|
+
pages[-2] = item[1]
|
256
|
+
pages[-1] = item[0]
|
257
|
+
|
258
|
+
end
|
259
|
+
|
208
260
|
end
|
209
261
|
|
210
262
|
reorder_pages pages
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require "prawn"
|
2
2
|
require 'fileutils'
|
3
3
|
require "prawndown-ext"
|
4
|
-
require "felix/metadata"
|
5
4
|
require "felix/error"
|
6
5
|
require "worker/pdf_writer"
|
7
6
|
require "worker/templater/methods"
|
@@ -26,7 +25,9 @@ module PetitFelix
|
|
26
25
|
|
27
26
|
@variables = {}
|
28
27
|
|
29
|
-
@options
|
28
|
+
if @options.nil? || @options.count == 0
|
29
|
+
@options = Marshal.load(Marshal.dump(options))
|
30
|
+
end
|
30
31
|
|
31
32
|
# Options to use for method calls and stuff
|
32
33
|
# Updated every time a template is loaded
|
@@ -74,6 +75,10 @@ module PetitFelix
|
|
74
75
|
|
75
76
|
end
|
76
77
|
|
78
|
+
@override_options.keys.each do |key|
|
79
|
+
@variables[key] = @override_options[key]
|
80
|
+
end
|
81
|
+
|
77
82
|
## add additional functional stuff
|
78
83
|
@variables["cursor"] = @pdf.cursor
|
79
84
|
@variables["bounds_height"] = @pdf.bounds.height
|
@@ -82,6 +87,14 @@ module PetitFelix
|
|
82
87
|
|
83
88
|
# the currently loaded markdown file
|
84
89
|
@variables["loaded_markdown"] = {}
|
90
|
+
|
91
|
+
if @variables.key?("right_to_left") && @variables["right_to_left"]
|
92
|
+
@right_to_left = @variables["right_to_left"]
|
93
|
+
end
|
94
|
+
|
95
|
+
if @variables.key?("alternates_pages") && @variables["alternates_pages"]
|
96
|
+
@alternates_pages = @variables["alternates_pages"]
|
97
|
+
end
|
85
98
|
|
86
99
|
end
|
87
100
|
|
@@ -256,7 +269,7 @@ module PetitFelix
|
|
256
269
|
return [4, counter]
|
257
270
|
|
258
271
|
end
|
259
|
-
|
272
|
+
|
260
273
|
comm = COMMAND[command].call obj, args
|
261
274
|
|
262
275
|
@counter_stack[-1] = counter
|
@@ -272,6 +285,7 @@ module PetitFelix
|
|
272
285
|
@command_stack.pop
|
273
286
|
else
|
274
287
|
# failed because command not found
|
288
|
+
@error_param["arg"] = command.to_s
|
275
289
|
return [3, counter]
|
276
290
|
|
277
291
|
end
|
@@ -11,7 +11,7 @@ module PetitFelix
|
|
11
11
|
"OK",
|
12
12
|
"Malformed command list.",
|
13
13
|
"No command defined. Use \"com\" or \"command\" to define commands.",
|
14
|
-
"Command not found.",
|
14
|
+
"Command \"{{arg}}\" not found.",
|
15
15
|
"Stack overflow.",
|
16
16
|
"Template ID \"{{arg}}\" not found.",
|
17
17
|
"Template method \"{{arg}}\" not found.",
|
@@ -15,19 +15,19 @@ module PetitFelix
|
|
15
15
|
|
16
16
|
if font.key?(:normal)
|
17
17
|
|
18
|
-
if font.key?(:italic)
|
18
|
+
if !font.key?(:italic)
|
19
19
|
|
20
20
|
font[:italic] = font[:normal]
|
21
21
|
|
22
22
|
end
|
23
23
|
|
24
|
-
if font.key?(:bold)
|
24
|
+
if !font.key?(:bold)
|
25
25
|
|
26
26
|
font[:bold] = font[:normal]
|
27
27
|
|
28
28
|
end
|
29
29
|
|
30
|
-
if font.key?(:bold_italic)
|
30
|
+
if !font.key?(:bold_italic)
|
31
31
|
|
32
32
|
font[:bold_italic] = font[:normal]
|
33
33
|
|
@@ -38,7 +38,7 @@ module PetitFelix
|
|
38
38
|
font[key] = replace_variable font[key]
|
39
39
|
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
font_families.update(font_name => font)
|
43
43
|
|
44
44
|
end
|
@@ -61,6 +61,8 @@ module PetitFelix
|
|
61
61
|
|
62
62
|
# special custom functions
|
63
63
|
:alternate_pages => -> (obj, args) { obj.com_alternate_pages args, obj },
|
64
|
+
:set_alternate_pages => -> (obj, args) { obj.com_set_alternate_pages args, obj },
|
65
|
+
:set_right_to_left => -> (obj, args) { obj.com_set_right_to_left args, obj },
|
64
66
|
}
|
65
67
|
|
66
68
|
## Debug test command
|
@@ -423,8 +425,10 @@ module PetitFelix
|
|
423
425
|
return validate
|
424
426
|
end
|
425
427
|
|
426
|
-
|
427
|
-
|
428
|
+
args_has_string :align_even, args
|
429
|
+
args_has_string :valign_even, args
|
430
|
+
args_has_string :align_odd, args
|
431
|
+
args_has_string :valign_odd, args
|
428
432
|
args_has_int :width, args
|
429
433
|
args_has_arr :at, args, :int
|
430
434
|
args_has_arr :odd_at, args, :int
|
@@ -436,63 +440,60 @@ module PetitFelix
|
|
436
440
|
if args.key?(:page_mode)
|
437
441
|
page_mode = args[:page_mode].to_sym
|
438
442
|
end
|
443
|
+
|
444
|
+
if !args.key?(:odd_start_count_at) && !args[:start_count_at].nil?
|
445
|
+
args[:odd_start_count_at] = args[:start_count_at]
|
446
|
+
end
|
439
447
|
|
440
|
-
if
|
448
|
+
if !args.key?(:even_start_count_at) && !args[:start_count_at].nil?
|
449
|
+
args[:even_start_count_at] = args[:start_count_at]
|
450
|
+
end
|
441
451
|
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
452
|
+
args_has_int :start_count_at, args
|
453
|
+
args_has_int :odd_start_count_at, args
|
454
|
+
args_has_int :even_start_count_at, args
|
455
|
+
|
456
|
+
if !args.key?(:page_finish)
|
457
|
+
args[:page_finish] = -1
|
458
|
+
end
|
459
|
+
|
460
|
+
args = args_correct_values args
|
461
|
+
|
462
|
+
odd_array = {
|
463
|
+
:start_count_at => args[:odd_start_count_at],
|
464
|
+
:at => args[:odd_at],
|
465
|
+
:align => args[:odd_align]
|
466
|
+
}
|
467
|
+
|
468
|
+
even_array = {
|
469
|
+
:start_count_at => args[:even_start_count_at],
|
470
|
+
:at => args[:even_at],
|
471
|
+
:align => args[:even_align]
|
472
|
+
}
|
473
|
+
|
474
|
+
args_has_int :page_start, args
|
475
|
+
args_has_int :page_finish, args
|
476
|
+
|
477
|
+
if !args.key?(:page_start)
|
478
|
+
@variables["paginator_start"] = @metaoptions["paginator_start"]
|
479
|
+
else
|
480
|
+
@variables["paginator_start"] = args[:page_start]
|
481
|
+
end
|
482
|
+
|
483
|
+
@variables["paginator_end"] = args[:page_finish]
|
484
|
+
|
485
|
+
if page_mode == :alternate
|
469
486
|
|
470
487
|
odd_options = odd_array.merge(args)
|
471
488
|
|
472
489
|
even_options = even_array.merge(args)
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
if !args.key?(:page_start)
|
480
|
-
@variables["paginator_start"] = @metaoptions["paginator_start"]
|
481
|
-
else
|
482
|
-
@variables["paginator_start"] = args[:page_start]
|
483
|
-
end
|
484
|
-
|
485
|
-
@variables["paginator_end"] = args[:page_finish]
|
490
|
+
|
491
|
+
|
492
|
+
even_options[:start_count_at] += 1
|
493
|
+
|
494
|
+
even_options[:page_filter] = ->(pg) { pg > @variables["paginator_start"] && (pg < @variables["paginator_end"] || @variables["paginator_end"] <= -1) && pg % 2 == 1 }
|
495
|
+
odd_options[:page_filter] = ->(pg) { pg > @variables["paginator_start"] && (pg < @variables["paginator_end"] || @variables["paginator_end"] <= -1) && pg % 2 == 0 }
|
486
496
|
|
487
|
-
if @metaoptions["paginator_switch"]
|
488
|
-
odd_options[:page_filter] = ->(pg) { pg > @variables["paginator_start"] && (pg < @variables["paginator_end"] || @variables["paginator_end"] <= -1) && pg % 2 == 1 }
|
489
|
-
even_options[:page_filter] = ->(pg) { pg > @variables["paginator_start"] && (pg < @variables["paginator_end"] || @variables["paginator_end"] <= -1) && pg % 2 == 0 }
|
490
|
-
|
491
|
-
else
|
492
|
-
even_options[:page_filter] = ->(pg) { pg > @variables["paginator_start"] && (pg < @variables["paginator_end"] || @variables["paginator_end"] <= -1) && pg % 2 == 1 }
|
493
|
-
odd_options[:page_filter] = ->(pg) { pg > @variables["paginator_start"] && (pg < @variables["paginator_end"] || @variables["paginator_end"] <= -1) && pg % 2 == 0 }
|
494
|
-
|
495
|
-
end
|
496
497
|
|
497
498
|
string = replace_variable args[:text]
|
498
499
|
|
@@ -500,8 +501,18 @@ module PetitFelix
|
|
500
501
|
number_pages string, even_options
|
501
502
|
|
502
503
|
else
|
504
|
+
|
505
|
+
odd_array = {
|
506
|
+
:start_count_at => args[:start_count_at],
|
507
|
+
:at => args[:odd_at],
|
508
|
+
:align => args[:align]
|
509
|
+
}
|
503
510
|
|
504
|
-
|
511
|
+
odd_options = odd_array.merge(args)
|
512
|
+
|
513
|
+
odd_options[:page_filter] = ->(pg) { pg > @variables["paginator_start"] && (pg < @variables["paginator_end"] || @variables["paginator_end"] <= -1) }
|
514
|
+
|
515
|
+
number_pages args[:text], odd_options
|
505
516
|
|
506
517
|
end
|
507
518
|
|
@@ -859,6 +870,7 @@ module PetitFelix
|
|
859
870
|
result = Eqn::Calculator.calc(args[:exp].strip)
|
860
871
|
rescue
|
861
872
|
# expression cannot be evaluated
|
873
|
+
@error_param["arg"] = replace_variable args[:exp].to_s
|
862
874
|
return 9
|
863
875
|
end
|
864
876
|
|
@@ -1094,28 +1106,58 @@ module PetitFelix
|
|
1094
1106
|
|
1095
1107
|
## sets a variable to a value
|
1096
1108
|
def com_set args, obj
|
1109
|
+
|
1097
1110
|
validate = args_has_int :val, args
|
1098
1111
|
|
1099
1112
|
if validate != 0
|
1100
1113
|
return validate
|
1101
1114
|
end
|
1102
|
-
|
1115
|
+
|
1103
1116
|
validate = args_has_string :var, args
|
1104
1117
|
|
1105
1118
|
if validate != 0
|
1106
1119
|
return validate
|
1107
1120
|
end
|
1108
|
-
|
1121
|
+
|
1109
1122
|
@variables[args[:var]] = args[:val]
|
1110
1123
|
|
1111
1124
|
return 0
|
1125
|
+
|
1112
1126
|
end
|
1113
1127
|
|
1114
1128
|
def com_alternate_pages args, obj
|
1115
|
-
|
1129
|
+
|
1116
1130
|
obj.reorder_pages_for_2_page
|
1117
1131
|
|
1118
1132
|
return 0
|
1133
|
+
|
1134
|
+
end
|
1135
|
+
|
1136
|
+
def com_set_alternate_pages args, obj
|
1137
|
+
|
1138
|
+
validate = args_has_int :val, args
|
1139
|
+
|
1140
|
+
if validate != 0
|
1141
|
+
return validate
|
1142
|
+
end
|
1143
|
+
|
1144
|
+
obj.set_alternate_pages args[:val]
|
1145
|
+
|
1146
|
+
return 0
|
1147
|
+
end
|
1148
|
+
|
1149
|
+
def com_set_right_to_left args, obj
|
1150
|
+
|
1151
|
+
validate = args_has_int :val, args
|
1152
|
+
|
1153
|
+
if validate != 0
|
1154
|
+
return validate
|
1155
|
+
end
|
1156
|
+
|
1157
|
+
obj.set_right_to_left args[:val]
|
1158
|
+
|
1159
|
+
return 0
|
1160
|
+
|
1119
1161
|
end
|
1120
1162
|
|
1121
1163
|
end
|
@@ -16,6 +16,7 @@ module PetitFelix
|
|
16
16
|
:mode,
|
17
17
|
:style,
|
18
18
|
:overflow,
|
19
|
+
:vposition,
|
19
20
|
:rotate_around
|
20
21
|
]
|
21
22
|
|
@@ -55,7 +56,7 @@ module PetitFelix
|
|
55
56
|
|
56
57
|
def args_has_int arg_name, args
|
57
58
|
|
58
|
-
if !args.key? arg_name
|
59
|
+
if args.nil? || !args.key?(arg_name) || args[arg_name].nil?
|
59
60
|
|
60
61
|
# text not defined
|
61
62
|
@error_param["arg"] = arg_name.to_s
|
@@ -80,7 +81,7 @@ module PetitFelix
|
|
80
81
|
|
81
82
|
def args_has_float arg_name, args
|
82
83
|
|
83
|
-
if !args.key? arg_name
|
84
|
+
if args.nil? || !args.key?(arg_name) || args[arg_name].nil?
|
84
85
|
# text not defined
|
85
86
|
@error_param["arg"] = arg_name.to_s
|
86
87
|
return 7
|
data/templates/zine-single.json
CHANGED
@@ -56,39 +56,39 @@
|
|
56
56
|
},
|
57
57
|
"header1": {
|
58
58
|
"normal": "${header1_font_normal}",
|
59
|
-
"italic": "${
|
60
|
-
"bold": "${
|
61
|
-
"bold_italic": "${
|
59
|
+
"italic": "${header1_font_normal}",
|
60
|
+
"bold": "${header1_font_normal}",
|
61
|
+
"bold_italic": "${header1_font_normal}"
|
62
62
|
},
|
63
63
|
"header2": {
|
64
64
|
"normal": "${header2_font_normal}",
|
65
|
-
"italic": "${
|
66
|
-
"bold": "${
|
67
|
-
"bold_italic": "${
|
65
|
+
"italic": "${header2_font_normal}",
|
66
|
+
"bold": "${header2_font_normal}",
|
67
|
+
"bold_italic": "${header2_font_normal}"
|
68
68
|
},
|
69
69
|
"header3": {
|
70
70
|
"normal": "${header3_font_normal}",
|
71
|
-
"italic": "${
|
72
|
-
"bold": "${
|
73
|
-
"bold_italic": "${
|
71
|
+
"italic": "${header3_font_normal}",
|
72
|
+
"bold": "${header3_font_normal}",
|
73
|
+
"bold_italic": "${header3_font_normal}"
|
74
74
|
},
|
75
75
|
"header4": {
|
76
76
|
"normal": "${header4_font_normal}",
|
77
|
-
"italic": "${
|
78
|
-
"bold": "${
|
79
|
-
"bold_italic": "${
|
77
|
+
"italic": "${header4_font_normal}",
|
78
|
+
"bold": "${header4_font_normal}",
|
79
|
+
"bold_italic": "${header4_font_normal}"
|
80
80
|
},
|
81
81
|
"header5": {
|
82
82
|
"normal": "${header5_font_normal}",
|
83
|
-
"italic": "${
|
84
|
-
"bold": "${
|
85
|
-
"bold_italic": "${
|
83
|
+
"italic": "${header5_font_normal}",
|
84
|
+
"bold": "${header5_font_normal}",
|
85
|
+
"bold_italic": "${header5_font_normal}"
|
86
86
|
},
|
87
87
|
"header6": {
|
88
88
|
"normal": "${header6_font_normal}",
|
89
|
-
"italic": "${
|
90
|
-
"bold": "${
|
91
|
-
"bold_italic": "${
|
89
|
+
"italic": "${header6_font_normal}",
|
90
|
+
"bold": "${header6_font_normal}",
|
91
|
+
"bold_italic": "${header6_font_normal}"
|
92
92
|
},
|
93
93
|
"quote": {
|
94
94
|
"normal": "${quote_font_normal}",
|
@@ -163,36 +163,20 @@
|
|
163
163
|
"quote_font_bold": "./assets/font/Unageo-ExtraBold.ttf",
|
164
164
|
"quote_font_bold_italic": "./assets/font/Unageo-ExtraBold-Italic.ttf",
|
165
165
|
"header1_font_normal": "./assets/font/Unageo-Regular.ttf",
|
166
|
-
"header1_font_italic": "./assets/font/Unageo-Regular-Italic.ttf",
|
167
|
-
"header1_font_bold": "./assets/font/Unageo-ExtraBold.ttf",
|
168
|
-
"header1_font_bold_italic": "./assets/font/Unageo-ExtraBold-Italic.ttf",
|
169
166
|
"header2_font_normal": "./assets/font/Unageo-Regular.ttf",
|
170
|
-
"header2_font_italic": "./assets/font/Unageo-Regular-Italic.ttf",
|
171
|
-
"header2_font_bold": "./assets/font/Unageo-ExtraBold.ttf",
|
172
|
-
"header2_font_bold_italic": "./assets/font/Unageo-ExtraBold-Italic.ttf",
|
173
167
|
"header3_font_normal": "./assets/font/Unageo-Regular.ttf",
|
174
|
-
"header3_font_italic": "./assets/font/Unageo-Regular-Italic.ttf",
|
175
|
-
"header3_font_bold": "./assets/font/Unageo-ExtraBold.ttf",
|
176
|
-
"header3_font_bold_italic": "./assets/font/Unageo-ExtraBold-Italic.ttf",
|
177
168
|
"header4_font_normal": "./assets/font/Unageo-Regular.ttf",
|
178
|
-
"header4_font_italic": "./assets/font/Unageo-Regular-Italic.ttf",
|
179
|
-
"header4_font_bold": "./assets/font/Unageo-ExtraBold.ttf",
|
180
|
-
"header4_font_bold_italic": "./assets/font/Unageo-ExtraBold-Italic.ttf",
|
181
169
|
"header5_font_normal": "./assets/font/Unageo-Regular.ttf",
|
182
|
-
"header5_font_italic": "./assets/font/Unageo-Regular-Italic.ttf",
|
183
|
-
"header5_font_bold": "./assets/font/Unageo-ExtraBold.ttf",
|
184
|
-
"header5_font_bold_italic": "./assets/font/Unageo-ExtraBold-Italic.ttf",
|
185
170
|
"header6_font_normal": "./assets/font/Unageo-Regular.ttf",
|
186
|
-
"header6_font_italic": "./assets/font/Unageo-Regular-Italic.ttf",
|
187
|
-
"header6_font_bold": "./assets/font/Unageo-ExtraBold.ttf",
|
188
|
-
"header6_font_bold_italic": "./assets/font/Unageo-ExtraBold-Italic.ttf",
|
189
171
|
|
190
172
|
"default_font_size" : 12,
|
191
173
|
"columns" : 1,
|
192
|
-
"
|
174
|
+
"alternates_pages" : true,
|
193
175
|
|
194
176
|
"front_cover" : false,
|
195
177
|
"front_extra_page" : true,
|
178
|
+
"front_extra_page_show" : false,
|
179
|
+
"front_extra_page_image" : "",
|
196
180
|
"front_title_size" : 32,
|
197
181
|
"front_author_size" : 16,
|
198
182
|
"front_author" : "",
|
@@ -206,6 +190,8 @@
|
|
206
190
|
|
207
191
|
"back_cover" : false,
|
208
192
|
"back_extra_page" : true,
|
193
|
+
"back_extra_page_show" : false,
|
194
|
+
"back_extra_page_image" : "",
|
209
195
|
"back_text_size" : 18,
|
210
196
|
"back_text" : "",
|
211
197
|
"back_text_line_spacing" : 0,
|
@@ -221,6 +207,10 @@
|
|
221
207
|
"paginator_start" : 1,
|
222
208
|
"paginator_switch" : false,
|
223
209
|
"page_mode" : "alternate",
|
210
|
+
"paginator_align" : "right",
|
211
|
+
"paginator_odd_align" : "left",
|
212
|
+
"paginator_even_align" : "right",
|
213
|
+
"paginator_y" : 0,
|
224
214
|
|
225
215
|
"markdown_margin_array": "[{\"left\":30,\"right\":30,\"top\":30,\"bottom\":30}]",
|
226
216
|
"back_text_margin": "[{\"left\":30, \"right\":30, \"top\":30, \"bottom\":30 }]"
|
@@ -235,11 +225,28 @@
|
|
235
225
|
"val" : "${page_start_increment} + 1"
|
236
226
|
}
|
237
227
|
},
|
228
|
+
{
|
229
|
+
"cmd" : "if",
|
230
|
+
"args" : {
|
231
|
+
"exp" : "${front_extra_page_show}",
|
232
|
+
"func" : "start_new_page_front_img"
|
233
|
+
}
|
234
|
+
},
|
238
235
|
{
|
239
236
|
"cmd": "start_new_page"
|
240
237
|
}
|
241
238
|
],
|
242
239
|
|
240
|
+
"start_new_page_front_img": [
|
241
|
+
{
|
242
|
+
"cmd" : "image",
|
243
|
+
"args" : {
|
244
|
+
"file" : "${front_extra_page_image}",
|
245
|
+
"vposition" : "center"
|
246
|
+
}
|
247
|
+
}
|
248
|
+
],
|
249
|
+
|
243
250
|
"start_new_page_back": [
|
244
251
|
{
|
245
252
|
"cmd": "set",
|
@@ -250,9 +257,25 @@
|
|
250
257
|
},
|
251
258
|
{
|
252
259
|
"cmd": "start_new_page"
|
260
|
+
},
|
261
|
+
{
|
262
|
+
"cmd" : "if",
|
263
|
+
"args" : {
|
264
|
+
"exp" : "${back_extra_page_show}",
|
265
|
+
"func" : "start_new_page_back_img"
|
266
|
+
}
|
253
267
|
}
|
254
268
|
],
|
255
269
|
|
270
|
+
"start_new_page_back_img": [
|
271
|
+
{
|
272
|
+
"cmd" : "image",
|
273
|
+
"args" : {
|
274
|
+
"file" : "${back_extra_page_image}"
|
275
|
+
}
|
276
|
+
}
|
277
|
+
],
|
278
|
+
|
256
279
|
"main_section": [
|
257
280
|
{
|
258
281
|
"cmd": "font",
|
@@ -376,9 +399,13 @@
|
|
376
399
|
}
|
377
400
|
},
|
378
401
|
{
|
379
|
-
"cmd": "
|
380
|
-
|
381
|
-
|
402
|
+
"cmd": "start_new_page"
|
403
|
+
},
|
404
|
+
{
|
405
|
+
"cmd": "set",
|
406
|
+
"args": {
|
407
|
+
"var": "page_start_increment",
|
408
|
+
"val" : "${page_start_increment} + 1"
|
382
409
|
}
|
383
410
|
},
|
384
411
|
{
|
@@ -714,10 +741,10 @@
|
|
714
741
|
"start_count_at" : "1",
|
715
742
|
"page_start" : "${page_start_increment}",
|
716
743
|
"page_finish" : "${pages} - ${page_end_increment} + 1",
|
717
|
-
"odd_at" : ["0","
|
718
|
-
"even_at" : ["0", "
|
719
|
-
"odd_align" : "
|
720
|
-
"even_align" : "
|
744
|
+
"odd_at" : ["0","-10+${paginator_y}"],
|
745
|
+
"even_at" : ["0", "-10+${paginator_y}"],
|
746
|
+
"odd_align" : "${paginator_odd_align}",
|
747
|
+
"even_align" : "${paginator_even_align}",
|
721
748
|
"width" : "${bounds_width}",
|
722
749
|
"height" : "${bounds_height}"
|
723
750
|
}
|
@@ -730,7 +757,23 @@
|
|
730
757
|
}
|
731
758
|
],
|
732
759
|
|
760
|
+
"set_alternate_output" : [
|
761
|
+
{
|
762
|
+
"cmd" : "set_alternate_pages",
|
763
|
+
"args" : {
|
764
|
+
"val" : true
|
765
|
+
}
|
766
|
+
}
|
767
|
+
],
|
768
|
+
|
733
769
|
"main": [
|
770
|
+
{
|
771
|
+
"cmd" : "if",
|
772
|
+
"args" : {
|
773
|
+
"exp" : "${alternates_pages}",
|
774
|
+
"func" : "set_alternate_output"
|
775
|
+
}
|
776
|
+
},
|
734
777
|
{
|
735
778
|
"cmd": "set",
|
736
779
|
"args": {
|
@@ -778,7 +821,7 @@
|
|
778
821
|
{
|
779
822
|
"cmd" : "if",
|
780
823
|
"args" : {
|
781
|
-
"exp" : "${
|
824
|
+
"exp" : "${alternates_pages}",
|
782
825
|
"func" : "alternate_output"
|
783
826
|
}
|
784
827
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: petit-felix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- PunishedFelix
|
@@ -35,14 +35,14 @@ dependencies:
|
|
35
35
|
requirements:
|
36
36
|
- - "~>"
|
37
37
|
- !ruby/object:Gem::Version
|
38
|
-
version: 0.1.
|
38
|
+
version: 0.1.15
|
39
39
|
type: :runtime
|
40
40
|
prerelease: false
|
41
41
|
version_requirements: !ruby/object:Gem::Requirement
|
42
42
|
requirements:
|
43
43
|
- - "~>"
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 0.1.
|
45
|
+
version: 0.1.15
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: eqn
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -57,6 +57,26 @@ dependencies:
|
|
57
57
|
- - "~>"
|
58
58
|
- !ruby/object:Gem::Version
|
59
59
|
version: 1.6.5
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: redcarpet
|
62
|
+
requirement: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - "~>"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 3.6.1
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 3.6.1
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 3.6.1
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 3.6.1
|
60
80
|
description: Converts markdown files into PDF documents using options passed in a
|
61
81
|
hash.
|
62
82
|
email:
|