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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2709ae62f534f69b2f394dfb49ca307fd6602ffcbdae735803abf565dc0da54c
4
- data.tar.gz: c1beb16e7c071dba1f13dc43c7e19912fa09715bc28b05423af6c2ede3740a2c
3
+ metadata.gz: '0385a01ed768fc17ba19eec8aa5d8b82334548ca7caf400914a3be469b103b24'
4
+ data.tar.gz: '02867002b1402b7e19094a4347935d86c9cd2cdc22a7f1fd1e9a01746937ccae'
5
5
  SHA512:
6
- metadata.gz: c0f453504b5a168de33733685603a6a29fe19c4226cbd023f9446fef141e927afde08392677c07610c600abed939c16fb1154161f955ef9ce297a28f49b65223
7
- data.tar.gz: 20dc63d0e0d917ecccb81adfe85ad8d181a06522c1dea4ac8865437a599c77d1ca11e00af13af9439a4a61fcfbcaed0334d48120190dae584db7d60cd8d21457
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
- "columns" => -> (command, args, index, cl_args) { cl_add_config(command, args, index, cl_args).to_i },
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 self.cl_add_config command,args, index, cl_args
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
@@ -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
@@ -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
@@ -4,6 +4,6 @@
4
4
 
5
5
  module PetitFelix
6
6
  module Felix
7
- VERSION = "0.1.10"
7
+ VERSION = "0.1.12"
8
8
  end
9
9
  end
@@ -35,7 +35,9 @@ module Prawn
35
35
  @margins = {}
36
36
 
37
37
  if @base_margins.count > 0
38
- @margins = @base_margins[@document.page_count % @base_margins.count]
38
+
39
+ @margins = @base_margins[(@document.page_count - 1) % @base_margins.count]
40
+
39
41
  end
40
42
  end
41
43
 
@@ -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
- # first test if page count is odd.
181
- # 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
182
209
 
183
- if state.pages.count % 2 == 1
184
- go_to_page(-2)
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
- 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
+
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 = 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
@@ -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
- args = args_correct_values args
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 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
441
451
 
442
- if !args.key?(:odd_start_count_at) && !args[:start_count_at].nil?
443
- args[:odd_start_count_at] = args[:start_count_at]
444
- end
445
-
446
- if !args.key?(:even_start_count_at) && !args[:start_count_at].nil?
447
- args[:even_start_count_at] = args[:start_count_at]
448
- end
449
-
450
- args_has_int :start_count_at, args
451
- args_has_int :odd_start_count_at, args
452
- args_has_int :even_start_count_at, args
453
-
454
- if !args.key?(:page_finish)
455
- args[:page_finish] = -1
456
- end
457
-
458
- odd_array = {
459
- :start_count_at => args[:odd_start_count_at],
460
- :at => args[:odd_at],
461
- :align => args[:odd_align]
462
- }
463
-
464
- even_array = {
465
- :start_count_at => args[:even_start_count_at],
466
- :at => args[:even_at],
467
- :align => args[:even_align]
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
- args_has_int :page_start, args
475
- args_has_int :page_finish, args
476
-
477
- odd_options[:start_count_at] += 1
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
- 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
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
- #obj.reorder_pages [3,2,0,1]
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
@@ -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
  }
@@ -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" : "${alternate_output}",
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.10
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.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: