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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1d2e8b23995447848c4ca2a9aa1fc32d714d13c103474af97b4de7b15a9b909e
4
- data.tar.gz: 7ce09991565bb9129a30f9ed51024d669b41077b8462e1343ab40091f7471f18
3
+ metadata.gz: 82ba0abf4e4be87492250ec8f37a2cb22027814cc252797c1190c116f021502f
4
+ data.tar.gz: 00eb7dc5805b645ec303dfe834cb1280683f00e05bdc274ec7d0d04b005be95a
5
5
  SHA512:
6
- metadata.gz: 001ade81df3dc72cb4672cea3c295cda649d47a8a55d55290a3e141c68b38faf338a0f6e7f9875aefd1e1ab7f6fb3c58807626fc14bbfa5ac09b8e661718a780
7
- data.tar.gz: 86c720c74ecd9181c6b6527187af8511241cb50d67760c8a454142476fce8ab9ae1aaacab0527daece7522be9bc0f4830d8f58ecda3edae5f8ecb6bec76a1772
6
+ metadata.gz: f418b6d4945978a25c87b92a75b84dc5bfde73c46934c7ad4ac54af483f6d61def7d1cddf7aa47578764e1a127227f8baf8bcb037d28d3727210cfc788ed1d8f
7
+ data.tar.gz: 55c6f050fe39efe473faa078ec2c8306c1c7cacf7fe227f1f59917790ecccbbe1a345cb0be8384ae84ec5cc91f8554ad98f6cdb842fe755e9cc88588ec7879d5
@@ -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
 
@@ -119,7 +119,9 @@ module PetitFelix
119
119
  end
120
120
  end
121
121
 
122
- def prepare_options options
122
+ def prepare_options options, override_options
123
+
124
+ options.merge(override_options)
123
125
 
124
126
  # stores options + metadata. metadata overrides options.
125
127
  @metaoptions = {}
@@ -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
 
@@ -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
@@ -4,6 +4,6 @@
4
4
 
5
5
  module PetitFelix
6
6
  module Felix
7
- VERSION = "0.1.11"
7
+ VERSION = "0.1.13"
8
8
  end
9
9
  end
@@ -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 = true
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
- # first test if page count is odd.
190
- # if its odd add an extra page before the back cover
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
- if state.pages.count % 2 == 1
193
- go_to_page(-2)
216
+ go_to_page(2)
217
+
194
218
  start_new_page
195
219
 
196
- go_to_page(state.pages.count)
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 = Marshal.load(Marshal.dump(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
- args = args_correct_values args
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 page_mode == :alternate
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
- if !args.key?(:odd_start_count_at) && !args[:start_count_at].nil?
444
- args[:odd_start_count_at] = args[:start_count_at]
445
- end
446
-
447
- if !args.key?(:even_start_count_at) && !args[:start_count_at].nil?
448
- args[:even_start_count_at] = args[:start_count_at]
449
- end
450
-
451
- args_has_int :start_count_at, args
452
- args_has_int :odd_start_count_at, args
453
- args_has_int :even_start_count_at, args
454
-
455
- if !args.key?(:page_finish)
456
- args[:page_finish] = -1
457
- end
458
-
459
- odd_array = {
460
- :start_count_at => args[:odd_start_count_at],
461
- :at => args[:odd_at],
462
- :align => args[:odd_align]
463
- }
464
-
465
- even_array = {
466
- :start_count_at => args[:even_start_count_at],
467
- :at => args[:even_at],
468
- :align => args[:even_align]
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
- args_has_int :page_start, args
476
- args_has_int :page_finish, args
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
- odd_options[:start_count_at] += 1
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
- obj.number_pages args[:text], args
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
- #obj.reorder_pages [3,2,0,1]
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
- obj.set_alternate_pages
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
@@ -56,39 +56,39 @@
56
56
  },
57
57
  "header1": {
58
58
  "normal": "${header1_font_normal}",
59
- "italic": "${header1_font_italic}",
60
- "bold": "${header1_font_bold}",
61
- "bold_italic": "${header1_font_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": "${header2_font_italic}",
66
- "bold": "${header2_font_bold}",
67
- "bold_italic": "${header2_font_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": "${header3_font_italic}",
72
- "bold": "${header3_font_bold}",
73
- "bold_italic": "${header3_font_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": "${header4_font_italic}",
78
- "bold": "${header4_font_bold}",
79
- "bold_italic": "${header4_font_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": "${header5_font_italic}",
84
- "bold": "${header5_font_bold}",
85
- "bold_italic": "${header5_font_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": "${header6_font_italic}",
90
- "bold": "${header6_font_bold}",
91
- "bold_italic": "${header6_font_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
- "alternate_output" : false,
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": "call",
380
- "args" : {
381
- "func" : "start_new_page_front"
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","0"],
718
- "even_at" : ["0", "0"],
719
- "odd_align" : "left",
720
- "even_align" : "right",
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" : "${alternate_output}",
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" : "${alternate_output}",
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.11
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.14
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.14
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: