prawndown-ext 0.1.3 → 0.1.5

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: fd619d59e60b9e2febbd337fe13b2305e715f114595ceeef87696b8785a41ff4
4
- data.tar.gz: 49756da2ec59eb28a26c59b858fd8e25f7ed0032c46aca28899afdd1d43a0ede
3
+ metadata.gz: 9faf10d4050bcb223f71cfb4e70709b24472e7a07e6bf7c98ccbf06d3008a621
4
+ data.tar.gz: 22e2ffd2f536b89d52d2a89a2257b41015a053ea7e9212ae4cd76afbd29bb0f0
5
5
  SHA512:
6
- metadata.gz: 7270965459f9fe64cffb85b19bcbdf4e3a0b6965c66f23c4485a52b5719f9d68e78c50f4e267b450e6037e29d5bf9be0ce93ffc4ede4ef032c0a050ce6794ae5
7
- data.tar.gz: 85c9aecc4f40b3a3ecc88de4a484b30fd1721b8d5d9954c6c473ecb59ca22fb245ddbe51740114b6c6b39be36068264359f0a06cd869f666b1b9616a426918e8
6
+ metadata.gz: 1c8fe0e1339f041eafa92742a300e219dab5b7ef60c28dfe27a5995e76b7b2aaa81564ec5351b78aadc48e402c8ec93cc96cd1758a777f4bbdb5b220739cdfea
7
+ data.tar.gz: b5bd8aa3b0223302771abbd4692e9fc439e6329a5cad6045f4714c60bad1e27a5c9cfe5065f0a5b02f8af25f9519cf1952370491bca958f4fd44e091fb0910e1
@@ -1,6 +1,17 @@
1
1
  module PrawndownExt
2
2
  # Markdown to Prawn parser
3
3
  class Parser
4
+
5
+ DEFAULT_OPTIONS = {
6
+ "header1_size" => 28,
7
+ "header2_size" => 24,
8
+ "header3_size" => 20,
9
+ "header4_size" => 18,
10
+ "header5_size" => 16,
11
+ "header6_size" => 14,
12
+ "quote_size" => 14
13
+ }
14
+
4
15
  MATCHERS = {
5
16
  ## Regular markdown
6
17
  /^# (.+)/ => '<font size="HEADER1_SIZE"><b>\1</b></font>', # Header 1
@@ -19,7 +30,7 @@ module PrawndownExt
19
30
 
20
31
  # Images
21
32
  /!\[([^\[]+)\]\(([^\)]+)\)/ => '<command_break>{"command":"img", "alt":"\1", "path":"\2"}<command_break>',
22
- /^> (.+)/ => '<command_break>{"command":"quote","margin":20,"text":"\\1"}<command_break>', # Quote
33
+ /^> (.+)/ => '<command_break>{"command":"quote","margin":20,"text":"<font size=\'QUOTE_SIZE\'>\\1</font>"}<command_break>', # Quote
23
34
 
24
35
  # Stuff to process last
25
36
  /\[([^\[]+)\]\(([^\)]+)\)/ => '<link href="\2">\1</link>', # Link
@@ -31,62 +42,42 @@ module PrawndownExt
31
42
 
32
43
  # Initialize a new +Prawndown::Parser+.
33
44
  # +text+ must a a valid Markdown string that only contains supported tags.
34
- #
35
- # Supported tags are: Header 1-6, bold, italic, strikethrough and link.
36
45
  def initialize(text, options)
37
46
 
38
47
  #@text = text.to_s
39
48
  @text = escape_text text.to_s
40
- @header1_size = 28
41
- @header2_size = 24
42
- @header3_size = 20
43
- @header4_size = 18
44
- @header5_size = 16
45
- @header6_size = 14
46
-
47
- if !options.nil?
48
- if options.key?("header1_size")
49
- @header1_size = options["header1_size"]
50
- end
51
- if options.key?("header2_size")
52
- @header2_size = options["header2_size"]
53
- end
54
- if options.key?("header3_size")
55
- @header3_size = options["header3_size"]
56
- end
57
- if options.key?("header4_size")
58
- @header4_size = options["header4_size"]
59
- end
60
- if options.key?("header5_size")
61
- @header5_size = options["header5_size"]
62
- end
63
- if options.key?("header6_size")
64
- @header6_size = options["header6_size"]
65
- end
66
- end
49
+
50
+ # this way a default is always loaded so no weird crashes
51
+ @options = Marshal.load(Marshal.dump(DEFAULT_OPTIONS))
52
+
53
+ options.keys.each do |key|
54
+ @options[key] = options[key]
55
+ end
67
56
 
68
57
  end
69
58
 
59
+ def replace_options text
60
+ DEFAULT_OPTIONS.keys.each do |replacer|
61
+ if @options.key?(replacer)
62
+ text = text.gsub(replacer.upcase, @options[replacer].to_s)
63
+ end
64
+ end
65
+
66
+ text
67
+ end
68
+
70
69
  # Parses the Markdown text and outputs a Prawn compatible string
71
70
  def to_prawn
72
71
 
73
72
  # variable replacement
74
73
  _match = Marshal.load(Marshal.dump(MATCHERS))
75
-
76
- _match.each {
77
- |x| puts
78
- x[1].gsub!("HEADER1_SIZE", @header1_size.to_s)
79
- x[1].gsub!("HEADER2_SIZE", @header2_size.to_s)
80
- x[1].gsub!("HEADER3_SIZE", @header3_size.to_s)
81
- x[1].gsub!("HEADER4_SIZE", @header4_size.to_s)
82
- x[1].gsub!("HEADER5_SIZE", @header5_size.to_s)
83
- x[1].gsub!("HEADER6_SIZE", @header6_size.to_s)
84
- }
85
74
 
86
75
  result = _match.inject(@text) do |final_string, (markdown_matcher, prawn_tag)|
87
76
  final_string.gsub(markdown_matcher, prawn_tag)
88
77
  end
89
78
 
79
+ result = replace_options result
80
+
90
81
  result = result.split("<command_break>")
91
82
 
92
83
  result
@@ -2,6 +2,6 @@
2
2
 
3
3
  module PrawndownExt
4
4
  module Ext
5
- VERSION = "0.1.3"
5
+ VERSION = "0.1.5"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prawndown-ext
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - PunishedFelix