petit-felix 0.1.11 → 0.1.13
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/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 +3 -2
- data/lib/version.rb +1 -1
- data/lib/worker/pdf_writer.rb +51 -8
- 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 +91 -67
- data/lib/worker/templater/validation.rb +3 -2
- data/templates/zine-single.json +77 -47
- 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: 82ba0abf4e4be87492250ec8f37a2cb22027814cc252797c1190c116f021502f
|
4
|
+
data.tar.gz: 00eb7dc5805b645ec303dfe834cb1280683f00e05bdc274ec7d0d04b005be95a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f418b6d4945978a25c87b92a75b84dc5bfde73c46934c7ad4ac54af483f6d61def7d1cddf7aa47578764e1a127227f8baf8bcb037d28d3727210cfc788ed1d8f
|
7
|
+
data.tar.gz: 55c6f050fe39efe473faa078ec2c8306c1c7cacf7fe227f1f59917790ecccbbe1a345cb0be8384ae84ec5cc91f8554ad98f6cdb842fe755e9cc88588ec7879d5
|
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
|
@@ -32,7 +33,7 @@ module PetitFelix
|
|
32
33
|
page_layout: @metaoptions["page_layout"],
|
33
34
|
print_scaling: @metaoptions["print_scaling"])
|
34
35
|
|
35
|
-
pdf.set_options @metaoptions
|
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,12 +13,20 @@ 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
|
+
|
15
24
|
def alternates_pages
|
16
25
|
return @alternates_pages
|
17
26
|
end
|
18
27
|
|
19
|
-
def set_alternate_pages
|
20
|
-
@alternates_pages =
|
28
|
+
def set_alternate_pages val
|
29
|
+
@alternates_pages = val
|
21
30
|
end
|
22
31
|
|
23
32
|
# Initializes fonts
|
@@ -89,11 +98,20 @@ module PetitFelix
|
|
89
98
|
end
|
90
99
|
end
|
91
100
|
|
92
|
-
def set_options metaoptions
|
101
|
+
def set_options metaoptions, override_options: {}
|
93
102
|
@alternates_pages = false
|
103
|
+
@right_to_left = false
|
94
104
|
|
95
105
|
@options = metaoptions
|
96
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
|
+
|
97
115
|
end
|
98
116
|
|
99
117
|
def output
|
@@ -186,16 +204,31 @@ module PetitFelix
|
|
186
204
|
pages = []
|
187
205
|
pairs = []
|
188
206
|
|
189
|
-
#
|
190
|
-
# if
|
207
|
+
# Test if the pages line up to mod 4 for double print
|
208
|
+
# if not, fix it
|
209
|
+
|
210
|
+
modval = state.pages.count % 4
|
211
|
+
|
212
|
+
if modval > 0
|
213
|
+
|
214
|
+
modval = 4 - modval
|
191
215
|
|
192
|
-
|
193
|
-
|
216
|
+
go_to_page(2)
|
217
|
+
|
194
218
|
start_new_page
|
195
219
|
|
196
|
-
|
220
|
+
modval -= 1
|
221
|
+
|
222
|
+
go_to_page(-3)
|
223
|
+
|
224
|
+
(modval).times do
|
225
|
+
start_new_page
|
226
|
+
end
|
227
|
+
|
197
228
|
end
|
198
229
|
|
230
|
+
go_to_page(state.pages.count)
|
231
|
+
|
199
232
|
# Now that its even do the algorithm
|
200
233
|
center = (state.pages.count / 2) - 1
|
201
234
|
center_other = center + 1
|
@@ -209,11 +242,21 @@ module PetitFelix
|
|
209
242
|
|
210
243
|
end
|
211
244
|
|
245
|
+
counter = 0
|
246
|
+
|
212
247
|
pairs.each do |item|
|
213
248
|
|
249
|
+
counter += 1
|
250
|
+
|
214
251
|
pages.append item[0]
|
215
252
|
pages.append item[1]
|
216
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
|
+
|
217
260
|
end
|
218
261
|
|
219
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
|
@@ -62,6 +62,7 @@ module PetitFelix
|
|
62
62
|
# special custom functions
|
63
63
|
:alternate_pages => -> (obj, args) { obj.com_alternate_pages args, obj },
|
64
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 },
|
65
66
|
}
|
66
67
|
|
67
68
|
## Debug test command
|
@@ -424,8 +425,10 @@ module PetitFelix
|
|
424
425
|
return validate
|
425
426
|
end
|
426
427
|
|
427
|
-
|
428
|
-
|
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
|
429
432
|
args_has_int :width, args
|
430
433
|
args_has_arr :at, args, :int
|
431
434
|
args_has_arr :odd_at, args, :int
|
@@ -437,74 +440,60 @@ module PetitFelix
|
|
437
440
|
if args.key?(:page_mode)
|
438
441
|
page_mode = args[:page_mode].to_sym
|
439
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
|
440
447
|
|
441
|
-
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
|
442
451
|
|
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
|
-
|
469
|
-
|
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
|
470
486
|
|
471
487
|
odd_options = odd_array.merge(args)
|
472
488
|
|
473
489
|
even_options = even_array.merge(args)
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
if !args.key?(:page_start)
|
479
|
-
@variables["paginator_start"] = @metaoptions["paginator_start"]
|
480
|
-
else
|
481
|
-
@variables["paginator_start"] = args[:page_start]
|
482
|
-
end
|
483
|
-
|
484
|
-
@variables["paginator_end"] = args[:page_finish]
|
485
|
-
|
486
|
-
if obj.alternates_pages
|
487
|
-
even_options[:start_count_at] = ((obj.page_count - 1) * 0.5).floor
|
488
|
-
|
489
|
-
even_options[:page_filter] = ->(pg) { pg > @variables["paginator_start"] && (pg < @variables["paginator_end"] || @variables["paginator_end"] <= -1) && pg > obj.page_count * 0.5 }
|
490
|
-
|
491
|
-
odd_options[:page_filter] = ->(pg) { pg > @variables["paginator_start"] && (pg < @variables["paginator_end"] || @variables["paginator_end"] <= -1) && pg <= obj.page_count * 0.5 }
|
492
|
-
|
493
|
-
else
|
490
|
+
|
491
|
+
|
492
|
+
even_options[:start_count_at] += 1
|
494
493
|
|
495
|
-
|
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 }
|
496
496
|
|
497
|
-
if @metaoptions["paginator_switch"]
|
498
|
-
odd_options[:page_filter] = ->(pg) { pg > @variables["paginator_start"] && (pg < @variables["paginator_end"] || @variables["paginator_end"] <= -1) && pg % 2 == 1 }
|
499
|
-
even_options[:page_filter] = ->(pg) { pg > @variables["paginator_start"] && (pg < @variables["paginator_end"] || @variables["paginator_end"] <= -1) && pg % 2 == 0 }
|
500
|
-
|
501
|
-
else
|
502
|
-
even_options[:page_filter] = ->(pg) { pg > @variables["paginator_start"] && (pg < @variables["paginator_end"] || @variables["paginator_end"] <= -1) && pg % 2 == 1 }
|
503
|
-
odd_options[:page_filter] = ->(pg) { pg > @variables["paginator_start"] && (pg < @variables["paginator_end"] || @variables["paginator_end"] <= -1) && pg % 2 == 0 }
|
504
|
-
|
505
|
-
end
|
506
|
-
|
507
|
-
end
|
508
497
|
|
509
498
|
string = replace_variable args[:text]
|
510
499
|
|
@@ -512,8 +501,18 @@ module PetitFelix
|
|
512
501
|
number_pages string, even_options
|
513
502
|
|
514
503
|
else
|
504
|
+
|
505
|
+
odd_array = {
|
506
|
+
:start_count_at => args[:start_count_at],
|
507
|
+
:at => args[:odd_at],
|
508
|
+
:align => args[:align]
|
509
|
+
}
|
515
510
|
|
516
|
-
|
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
|
517
516
|
|
518
517
|
end
|
519
518
|
|
@@ -871,6 +870,7 @@ module PetitFelix
|
|
871
870
|
result = Eqn::Calculator.calc(args[:exp].strip)
|
872
871
|
rescue
|
873
872
|
# expression cannot be evaluated
|
873
|
+
@error_param["arg"] = replace_variable args[:exp].to_s
|
874
874
|
return 9
|
875
875
|
end
|
876
876
|
|
@@ -1106,34 +1106,58 @@ module PetitFelix
|
|
1106
1106
|
|
1107
1107
|
## sets a variable to a value
|
1108
1108
|
def com_set args, obj
|
1109
|
+
|
1109
1110
|
validate = args_has_int :val, args
|
1110
1111
|
|
1111
1112
|
if validate != 0
|
1112
1113
|
return validate
|
1113
1114
|
end
|
1114
|
-
|
1115
|
+
|
1115
1116
|
validate = args_has_string :var, args
|
1116
1117
|
|
1117
1118
|
if validate != 0
|
1118
1119
|
return validate
|
1119
1120
|
end
|
1120
|
-
|
1121
|
+
|
1121
1122
|
@variables[args[:var]] = args[:val]
|
1122
1123
|
|
1123
1124
|
return 0
|
1125
|
+
|
1124
1126
|
end
|
1125
1127
|
|
1126
1128
|
def com_alternate_pages args, obj
|
1127
|
-
|
1129
|
+
|
1128
1130
|
obj.reorder_pages_for_2_page
|
1129
1131
|
|
1130
1132
|
return 0
|
1133
|
+
|
1131
1134
|
end
|
1132
1135
|
|
1133
1136
|
def com_set_alternate_pages args, obj
|
1134
|
-
|
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
|
1135
1156
|
|
1157
|
+
obj.set_right_to_left args[:val]
|
1158
|
+
|
1136
1159
|
return 0
|
1160
|
+
|
1137
1161
|
end
|
1138
1162
|
|
1139
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
|
}
|
@@ -732,7 +759,10 @@
|
|
732
759
|
|
733
760
|
"set_alternate_output" : [
|
734
761
|
{
|
735
|
-
"cmd" : "set_alternate_pages"
|
762
|
+
"cmd" : "set_alternate_pages",
|
763
|
+
"args" : {
|
764
|
+
"val" : true
|
765
|
+
}
|
736
766
|
}
|
737
767
|
],
|
738
768
|
|
@@ -740,7 +770,7 @@
|
|
740
770
|
{
|
741
771
|
"cmd" : "if",
|
742
772
|
"args" : {
|
743
|
-
"exp" : "${
|
773
|
+
"exp" : "${alternates_pages}",
|
744
774
|
"func" : "set_alternate_output"
|
745
775
|
}
|
746
776
|
},
|
@@ -791,7 +821,7 @@
|
|
791
821
|
{
|
792
822
|
"cmd" : "if",
|
793
823
|
"args" : {
|
794
|
-
"exp" : "${
|
824
|
+
"exp" : "${alternates_pages}",
|
795
825
|
"func" : "alternate_output"
|
796
826
|
}
|
797
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.13
|
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:
|