prawn-markup 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f381738eb8b0791ae8943bce4028ca3578249aa25269d887f3953e6de2ed0075
4
- data.tar.gz: 45fd2e6656f9b50a2a3bc40ac67ed52dae462d134a4aa201e3459d00d10226ac
3
+ metadata.gz: e2a68c2f0773fd3769437fcee6aed0cba929e95808c6618b8e36dc2f7624c8fe
4
+ data.tar.gz: d379eb9ed4e28cbdbeca6048b06019d5dd4d8e741cb41ebd304a65a3a05be034
5
5
  SHA512:
6
- metadata.gz: 14b1b72017fe9fb5b2ed0b0529eb8026203c21a7ec653ec50d25f1cd20533dd72827f97b27f5eff711f08c64b8d6b971105931e3fb645eb0c0a5e8e7ac45c2b0
7
- data.tar.gz: f6f8a9a2cdebceece5946f31780d918d63981ff9ad0de5d5db5ecf8e20dc02df26fb2b27da46f98ec50b9c13ef1e4c82017d52f9549dec4229a07e61dbeba4f1
6
+ metadata.gz: 0da58a2bcd5b700753ae0f59f0c68c4014af194c74d2946e61e5028e29e8263fba91b255b023f2e9db5246a44a05cf5798b6808831309936091c7cdf53ff6c8f
7
+ data.tar.gz: 9129eaba7c308464c68c501dab041e2e54f79618734b0fd29c53554320b12cb6b2c18c25aa02bd77108eb3c17728720f95dce3412a4664f5fcc1d9c37beefccf
@@ -15,10 +15,6 @@ Metrics/ClassLength:
15
15
  Metrics/CyclomaticComplexity:
16
16
  Severity: error
17
17
 
18
- Metrics/LineLength:
19
- Max: 100
20
- Severity: error
21
-
22
18
  Metrics/MethodLength:
23
19
  Max: 10
24
20
  Severity: error
@@ -31,32 +27,36 @@ Metrics/ParameterLists:
31
27
  Max: 4
32
28
  Severity: warning
33
29
 
34
- # Keep for now, easier with superclass definitions
35
- ClassAndModuleChildren:
30
+ Layout/LineLength:
31
+ Max: 100
32
+ Severity: error
33
+
34
+ # We thinks that's fine for specs
35
+ Layout/EmptyLinesAroundBlockBody:
36
36
  Enabled: false
37
37
 
38
- # The ones we use must exist for the entire class hierarchy.
39
- ClassVars:
38
+ # We thinks that's fine
39
+ Layout/EmptyLinesAroundClassBody:
40
40
  Enabled: false
41
41
 
42
- # Well, well, well
43
- Documentation:
42
+ # We thinks that's fine
43
+ Layout/EmptyLinesAroundModuleBody:
44
44
  Enabled: false
45
45
 
46
- # Keep single line bodys for if and unless
47
- IfUnlessModifier:
46
+ # Keep for now, easier with superclass definitions
47
+ Style/ClassAndModuleChildren:
48
48
  Enabled: false
49
49
 
50
- # We thinks that's fine for specs
51
- Layout/EmptyLinesAroundBlockBody:
50
+ # The ones we use must exist for the entire class hierarchy.
51
+ Style/ClassVars:
52
52
  Enabled: false
53
53
 
54
- # We thinks that's fine
55
- Layout/EmptyLinesAroundClassBody:
54
+ # Well, well, well
55
+ Style/Documentation:
56
56
  Enabled: false
57
57
 
58
- # We thinks that's fine
59
- Layout/EmptyLinesAroundModuleBody:
58
+ # Keep single line bodys for if and unless
59
+ Style/IfUnlessModifier:
60
60
  Enabled: false
61
61
 
62
62
  # We think that's the developers choice
@@ -1,18 +1,12 @@
1
- sudo: false
2
-
3
1
  language: ruby
4
2
 
5
3
  rvm:
6
- - 2.5.1
4
+ - 2.5.7
7
5
 
8
6
  env:
9
7
  global:
10
8
  - CC_TEST_REPORTER_ID=d70fe39ffb8f2f7c5f837f0133d10a3a1c6784d0dd189153111577b60f74c603
11
9
 
12
- before_install:
13
- - gem update --system
14
- - gem install bundler
15
-
16
10
  before_script:
17
11
  - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
18
12
  - chmod +x ./cc-test-reporter
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- prawn-markup (0.2.1)
4
+ prawn-markup (0.2.2)
5
5
  nokogiri
6
6
  prawn
7
7
  prawn-table
@@ -12,17 +12,16 @@ GEM
12
12
  Ascii85 (1.0.3)
13
13
  afm (0.2.2)
14
14
  ast (2.4.0)
15
- byebug (11.0.1)
15
+ byebug (11.1.1)
16
16
  diff-lcs (1.3)
17
17
  docile (1.3.2)
18
18
  hashery (2.1.2)
19
19
  jaro_winkler (1.5.4)
20
- json (2.2.0)
21
20
  mini_portile2 (2.4.0)
22
- nokogiri (1.10.5)
21
+ nokogiri (1.10.9)
23
22
  mini_portile2 (~> 2.4.0)
24
23
  parallel (1.19.1)
25
- parser (2.6.5.0)
24
+ parser (2.7.0.4)
26
25
  ast (~> 2.4.0)
27
26
  pdf-core (0.7.0)
28
27
  pdf-inspector (1.3.0)
@@ -40,35 +39,36 @@ GEM
40
39
  prawn (>= 1.3.0, < 3.0.0)
41
40
  rainbow (3.0.0)
42
41
  rake (13.0.1)
42
+ rexml (3.2.4)
43
43
  rspec (3.9.0)
44
44
  rspec-core (~> 3.9.0)
45
45
  rspec-expectations (~> 3.9.0)
46
46
  rspec-mocks (~> 3.9.0)
47
- rspec-core (3.9.0)
48
- rspec-support (~> 3.9.0)
49
- rspec-expectations (3.9.0)
47
+ rspec-core (3.9.1)
48
+ rspec-support (~> 3.9.1)
49
+ rspec-expectations (3.9.1)
50
50
  diff-lcs (>= 1.2.0, < 2.0)
51
51
  rspec-support (~> 3.9.0)
52
- rspec-mocks (3.9.0)
52
+ rspec-mocks (3.9.1)
53
53
  diff-lcs (>= 1.2.0, < 2.0)
54
54
  rspec-support (~> 3.9.0)
55
- rspec-support (3.9.0)
56
- rubocop (0.77.0)
55
+ rspec-support (3.9.2)
56
+ rubocop (0.80.1)
57
57
  jaro_winkler (~> 1.5.1)
58
58
  parallel (~> 1.10)
59
- parser (>= 2.6)
59
+ parser (>= 2.7.0.1)
60
60
  rainbow (>= 2.2.2, < 4.0)
61
+ rexml
61
62
  ruby-progressbar (~> 1.7)
62
63
  unicode-display_width (>= 1.4.0, < 1.7)
63
64
  ruby-progressbar (1.10.1)
64
65
  ruby-rc4 (0.1.5)
65
- simplecov (0.17.1)
66
+ simplecov (0.18.5)
66
67
  docile (~> 1.1)
67
- json (>= 1.8, < 3)
68
- simplecov-html (~> 0.10.0)
69
- simplecov-html (0.10.2)
70
- ttfunk (1.5.1)
71
- unicode-display_width (1.6.0)
68
+ simplecov-html (~> 0.11)
69
+ simplecov-html (0.12.2)
70
+ ttfunk (1.6.2.1)
71
+ unicode-display_width (1.6.1)
72
72
 
73
73
  PLATFORMS
74
74
  ruby
data/README.md CHANGED
@@ -46,9 +46,9 @@ doc.markup_options = {
46
46
  doc.markup('<p>Hello World</p><hr/><p>KTHXBYE</p>', text: { align: :center })
47
47
  ```
48
48
 
49
- Options may be set for `text`, `table` (`cell` and `header`) and `list` (`content` and `bullet`).
49
+ Options may be set for `text`, `heading[1-6]`, `table` (subkeys `cell` and `header`) and `list` (subkeys `content` and `bullet`).
50
50
 
51
- Text options include all keys from Prawns [#text](http://prawnpdf.org/api-docs/2.0/Prawn/Text.html#text-instance_method) method: `font`, `size`, `color`, `style`, `align`, `valign`, `leading`,`direction`, `character_spacing`, `indent_paragraphs`, `kerning`, `mode`.
51
+ Text and heading options include all keys from Prawns [#text](http://prawnpdf.org/api-docs/2.0/Prawn/Text.html#text-instance_method) method: `font`, `size`, `color`, `style`, `align`, `valign`, `leading`,`direction`, `character_spacing`, `indent_paragraphs`, `kerning`, `mode`.
52
52
 
53
53
  Tables and lists are rendered with [prawn-table](https://github.com/prawnpdf/prawn-table) and have the following additional options: `padding`, `borders`, `border_width`, `border_color`, `background_color`, `border_lines`, `rotate`, `overflow`, `min_font_size`. Options from `text` may be overridden.
54
54
 
@@ -84,6 +84,9 @@ All other elements are ignored, their content is added to the parent element. Wi
84
84
 
85
85
  If no explicit loader is given (see above), images are loaded from `http(s)` addresses or may be contained in the `src` attribute as base64 encoded data URIs. Prawn only supports `PNG` and `JPG`.
86
86
 
87
+ ## Example
88
+
89
+ Have a look at [showcase.html](spec/fixtures/showcase.html), which is rendered by the corresponding [spec](spec/prawn/markup/showcase_spec.rb). Uncomment the `lookatit` call there to directly open the generated PDF when running the spec with `spec spec/prawn/markup/showcase_spec.rb`.
87
90
 
88
91
  ## Development
89
92
 
@@ -24,7 +24,10 @@ module Prawn
24
24
  end
25
25
 
26
26
  def draw
27
- make(true).draw
27
+ # fix https://github.com/prawnpdf/prawn-table/issues/120
28
+ pdf.font_size(column_cell_style(:content)[:size] || pdf.font_size) do
29
+ make(true).draw
30
+ end
28
31
  end
29
32
 
30
33
  private
@@ -49,10 +49,12 @@ module Prawn
49
49
  def extract_text_cell_style(hash)
50
50
  TEXT_STYLE_OPTIONS
51
51
  .each_with_object({}) { |key, h| h[key] = hash[key] }
52
- .tap do |options|
53
- options[:font_style] ||= options.delete(:style)
54
- options[:text_color] ||= options.delete(:color)
55
- end
52
+ .tap { |options| convert_style_options(options) }
53
+ end
54
+
55
+ def convert_style_options(hash)
56
+ hash[:font_style] ||= hash.delete(:style)
57
+ hash[:text_color] ||= hash.delete(:color)
56
58
  end
57
59
 
58
60
  def type_key(object)
@@ -22,7 +22,10 @@ module Prawn
22
22
  end
23
23
 
24
24
  def draw
25
- make.draw
25
+ # fix https://github.com/prawnpdf/prawn-table/issues/120
26
+ pdf.font_size(table_options[:cell][:size] || pdf.font_size) do
27
+ make.draw
28
+ end
26
29
  rescue Prawn::Errors::CannotFit => e
27
30
  if failover_on_error
28
31
  draw
@@ -233,11 +236,6 @@ module Prawn
233
236
  convert_style_options(opts[:header])
234
237
  end
235
238
 
236
- def convert_style_options(hash)
237
- hash[:font_style] ||= hash.delete(:style)
238
- hash[:text_color] ||= hash.delete(:color)
239
- end
240
-
241
239
  def default_table_options
242
240
  {
243
241
  cell: {
@@ -125,11 +125,17 @@ module Prawn
125
125
  end
126
126
 
127
127
  def default_text_margin_bottom
128
- with_font(text_options) do
129
- pdf.font.line_gap +
130
- pdf.font.descender +
131
- text_leading
132
- end
128
+ text_line_gap +
129
+ text_descender +
130
+ text_leading
131
+ end
132
+
133
+ def text_line_gap
134
+ @text_line_gap ||= with_font(text_options) { pdf.font.line_gap }
135
+ end
136
+
137
+ def text_descender
138
+ @text_descender ||= with_font(text_options) { pdf.font.descender }
133
139
  end
134
140
 
135
141
  def text_leading
@@ -87,12 +87,17 @@ module Prawn
87
87
  end
88
88
 
89
89
  def add_list(list)
90
- Builders::ListBuilder.new(pdf, list, pdf.bounds.width, options).draw
91
- put_bottom_margin(text_margin_bottom)
90
+ pdf.move_up(additional_cell_padding_top)
91
+ draw_list(list)
92
+ put_bottom_margin(text_margin_bottom + additional_cell_padding_top)
92
93
  rescue Prawn::Errors::CannotFit => e
93
94
  append_text(list_too_large_placeholder(e))
94
95
  end
95
96
 
97
+ def draw_list(list)
98
+ Builders::ListBuilder.new(pdf, list, pdf.bounds.width, options).draw
99
+ end
100
+
96
101
  def list_too_large_placeholder(error)
97
102
  placeholder_value(%i[list placeholder too_large], error) || '[list content too large]'
98
103
  end
@@ -96,15 +96,24 @@ module Prawn
96
96
  end
97
97
 
98
98
  def add_table(cells)
99
- Builders::TableBuilder.new(pdf, cells, pdf.bounds.width, options).draw
100
- put_bottom_margin(text_margin_bottom)
99
+ draw_table(cells)
100
+ put_bottom_margin(text_margin_bottom + additional_cell_padding_top + text_leading)
101
101
  rescue Prawn::Errors::CannotFit => e
102
102
  append_text(table_too_large_placeholder(e))
103
103
  end
104
104
 
105
+ def draw_table(cells)
106
+ Builders::TableBuilder.new(pdf, cells, pdf.bounds.width, options).draw
107
+ end
108
+
105
109
  def table_too_large_placeholder(error)
106
110
  placeholder_value(%i[table placeholder too_large], error) || '[table content too large]'
107
111
  end
112
+
113
+ def additional_cell_padding_top
114
+ # as used in Prawn::Table::Cell::Text#draw_content move_down
115
+ (text_line_gap + text_descender) / 2
116
+ end
108
117
  end
109
118
  end
110
119
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Prawn
4
4
  module Markup
5
- VERSION = '0.2.1'
5
+ VERSION = '0.2.2'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prawn-markup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pascal Zumkehr
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-12-04 00:00:00.000000000 Z
11
+ date: 2020-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -210,8 +210,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
210
210
  - !ruby/object:Gem::Version
211
211
  version: '0'
212
212
  requirements: []
213
- rubyforge_project:
214
- rubygems_version: 2.7.8
213
+ rubygems_version: 3.1.2
215
214
  signing_key:
216
215
  specification_version: 4
217
216
  summary: Parse simple HTML markup to include in Prawn PDFs