prawn-markup 0.3.6 → 0.3.7

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: df28b18b9cd1867a3ddf1b3d0a38be2bc6a222ba3162b7c030cec7e4819dabae
4
- data.tar.gz: 707f1c55495e420935df46b7d8430c03155a67fefe5b5feeb2e8fa5a5acc5539
3
+ metadata.gz: 3224b605102e828f529ef5acdd6ba99910237a58e7a609a631c670b1bb025559
4
+ data.tar.gz: fc939e927be4748051a2ab4d9f0b8c4155aacd1234c3c7dc41eb1e9861d5533c
5
5
  SHA512:
6
- metadata.gz: 80702b603383f5613368db4ee66a6a1b3d3eb287f1d9ee90a941361638023dc90876df0f7faf91eb65d42cfca271670eecdbcdf28d525434ed4874bb550ad800
7
- data.tar.gz: 803c32a2293ff0b6c73cda474a301af6a3ecdaadd0a85f84639aad4ecd2783386185a2c309f6d95286bcec1156833f87b92a7ca36d51320c1c86af82f39031af
6
+ metadata.gz: 5099a48640adb9c06a706cd63bf70767365f74361e1c80dc0501fda5c0e23999d6d7ff1264edfe8aaf45aa05af06dfb285d8d9324f8e6a750b9817184c676dcc
7
+ data.tar.gz: b6725ba940801a114a41d3645605406f947c4f6dcb0e35bc7901ee12cc10241591aee889bfae956ab11f26e7a835e45aa5a18395f712748b4cd0d08e14b7c838
data/README.md CHANGED
@@ -37,12 +37,12 @@ doc.markup('<p>Hello World</p><hr/><p>KTHXBYE</p>')
37
37
 
38
38
  This gem parses the given HTML and layouts the following elements in a vertical order:
39
39
 
40
- * Text blocks: `p`, `div`, `ol`, `ul`, `li`, `hr`, `br`
41
- * Text semantics: `a`, `b`, `strong`, `i`, `em`, `u`, `s`, `del`, `sub`, `sup`, `color`
42
- * Headings: `h1`, `h2`, `h3`, `h4`, `h5`, `h6`
43
- * Tables: `table`, `tr`, `td`, `th`
44
- * Media: `img`, `iframe`
45
- * Inputs: `type=checkbox`, `type=radio`
40
+ - Text blocks: `p`, `div`, `ol`, `ul`, `li`, `hr`, `br`
41
+ - Text semantics: `a`, `b`, `strong`, `i`, `em`, `u`, `s`, `del`, `sub`, `sup`, `color`
42
+ - Headings: `h1`, `h2`, `h3`, `h4`, `h5`, `h6`
43
+ - Tables: `table`, `tr`, `td`, `th`
44
+ - Media: `img`, `iframe`
45
+ - Inputs: `type=checkbox`, `type=radio`
46
46
 
47
47
  All other elements are ignored, their content is added to the parent element. With a few exceptions, no CSS is processed. One exception is the `width` property of `img`, `td` and `th`, which may contain values in `cm`, `mm`, `px`, `pt`, `%` or `auto`. Another exception is the `rgb` or `cmyk` properties of the Prawn-specific `color` tag.
48
48
 
@@ -75,40 +75,40 @@ Tables and lists are rendered with [prawn-table](https://github.com/prawnpdf/pra
75
75
 
76
76
  Beside these options handled by Prawn / prawn-table, the following values may be customized:
77
77
 
78
- * `:text`
79
- * `:preprocessor`: A proc/callable that is called each time before a chunk of text is rendered.
80
- * `:margin_bottom`: Margin after each `<p>`, `<ol>`, `<ul>` or `<table>`. Defaults to about half a line.
81
- * `:heading1-6`
82
- * `:margin_top`: Margin before a heading. Default is 0.
83
- * `:margin_bottom`: Margin after a heading. Default is 0.
84
- * `:table`
85
- * `:placeholder`
86
- * `:too_large`: If the table content does not fit into the current bounding box, this text/callable is rendered instead. Defaults to '[table content too large]'.
87
- * `:subtable_too_large`: If the content of a subtable cannot be fitted into the table, this text is rendered instead. Defaults to '[nested tables with automatic width are not supported]'.
88
- * `:list`
89
- * `:vertical_margin`: Margin at the top and the bottom of a list. Default is 5.
90
- * `:bullet`
91
- * `:char`: The text used as bullet in unordered lists. Default is '•'.
92
- * `:margin`: Margin before the bullet. Default is 10.
93
- * `:content`
94
- * `:margin`: Margin between the bullet and the content. Default is 10.
95
- * `:placeholder`
96
- * `:too_large`: If the list content does not fit into the current bounding box, this text/callable is rendered instead. Defaults to '[list content too large]'.
97
- * `:image`
98
- * `:loader`: A callable that accepts the `src` attribute as an argument an returns a value understood by Prawn's `image` method. Loads `http(s)` URLs and base64 encoded data URIs by default.
99
- * `:placeholder`: If an image is not supported, this text/callable is rendered instead. Defaults to '[unsupported image]'.
100
- * `:iframe`
101
- * `:placeholder`: If the HTML contains IFrames, this text/callable is rendered instead.
102
- A callable gets the URL of the IFrame as an argument. Defaults to ignore iframes.
103
- * `:input`
104
- * `:symbol_font`: A special font to print checkboxes and radios. Prawn's standard fonts do not support special unicode characters. Do not forget to update the document's `font_families`.
105
- * `:symbol_font_size`: The size of the special font to print checkboxes and radios.
106
- * `:checkbox`
107
- * `:checked`: The char to print for a checked checkbox. Default is '☑'.
108
- * `:unchecked`: The char to print for an unchecked checkbox. Default is '☐'.
109
- * `:radio`
110
- * `:checked`: The char to print for a checked radio. Default is '◉'.
111
- * `:unchecked`: The char to print for an unchecked radio. Default is '○'.
78
+ - `:text`
79
+ - `:preprocessor`: A proc/callable that is called each time before a chunk of text is rendered.
80
+ - `:margin_bottom`: Margin after each `<p>`, `<ol>`, `<ul>` or `<table>`. Defaults to about half a line.
81
+ - `:heading1-6`
82
+ - `:margin_top`: Margin before a heading. Default is 0.
83
+ - `:margin_bottom`: Margin after a heading. Default is 0.
84
+ - `:table`
85
+ - `:placeholder`
86
+ - `:too_large`: If the table content does not fit into the current bounding box, this text/callable is rendered instead. Defaults to '[table content too large]'.
87
+ - `:subtable_too_large`: If the content of a subtable cannot be fitted into the table, this text is rendered instead. Defaults to '[nested tables with automatic width are not supported]'.
88
+ - `:list`
89
+ - `:vertical_margin`: Margin at the top and the bottom of a list. Default is 5.
90
+ - `:bullet`
91
+ - `:char`: The text used as bullet in unordered lists. Default is '•'.
92
+ - `:margin`: Margin before the bullet. Default is 10.
93
+ - `:content`
94
+ - `:margin`: Margin between the bullet and the content. Default is 10.
95
+ - `:placeholder`
96
+ - `:too_large`: If the list content does not fit into the current bounding box, this text/callable is rendered instead. Defaults to '[list content too large]'.
97
+ - `:image`
98
+ - `:loader`: A callable that accepts the `src` attribute as an argument an returns a value understood by Prawn's `image` method. Loads `http(s)` URLs and base64 encoded data URIs by default.
99
+ - `:placeholder`: If an image is not supported, this text/callable is rendered instead. Defaults to '[unsupported image]'.
100
+ - `:iframe`
101
+ - `:placeholder`: If the HTML contains IFrames, this text/callable is rendered instead.
102
+ A callable gets the URL of the IFrame as an argument. Defaults to ignore iframes.
103
+ - `:input`
104
+ - `:symbol_font`: A special font to print checkboxes and radios. Prawn's standard fonts do not support special unicode characters. Do not forget to update the document's `font_families`.
105
+ - `:symbol_font_size`: The size of the special font to print checkboxes and radios.
106
+ - `:checkbox`
107
+ - `:checked`: The char to print for a checked checkbox. Default is '☑'.
108
+ - `:unchecked`: The char to print for an unchecked checkbox. Default is '☐'.
109
+ - `:radio`
110
+ - `:checked`: The char to print for a checked radio. Default is '◉'.
111
+ - `:unchecked`: The char to print for an unchecked radio. Default is '○'.
112
112
 
113
113
  ## Development
114
114
 
@@ -128,4 +128,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
128
128
 
129
129
  ## Code of Conduct
130
130
 
131
- Everyone interacting in the Prawn::Markup project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/puzzle/prawn-markup/blob/master/CODE_OF_CONDUCT.md).
131
+ Everyone interacting in the Prawn::Markup project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/puzzle/prawn-markup/blob/main/CODE_OF_CONDUCT.md).
@@ -110,9 +110,10 @@ module Prawn
110
110
  end
111
111
 
112
112
  def bullet_text_width
113
+ largest_string = bullet('0' * list.items.size.digits.size)
113
114
  font = bullet_font
115
+ encoded = font.normalize_encoding(largest_string)
114
116
  font_size = column_cell_style(:bullet)[:size] || pdf.font_size
115
- encoded = font.normalize_encoding(bullet(list.items.size))
116
117
  font.compute_width_of(encoded, size: font_size)
117
118
  end
118
119
 
@@ -34,10 +34,12 @@ module Prawn
34
34
  hash.dup.tap do |image_hash|
35
35
  image_hash.delete(:width)
36
36
  image_hash[:image_width] = SizeConverter.new(max_width).parse(hash[:width])
37
- if max_width
38
- natural_width, _height = natural_image_dimensions(image_hash)
39
- image_hash[:fit] = [max_width, 999_999] if max_width < natural_width
37
+ natural_width, _height = natural_image_dimensions(image_hash)
38
+ if max_width && (max_width < natural_width)
39
+ image_hash[:fit] = [max_width, 999_999]
40
40
  end
41
+ rescue Prawn::Errors::UnsupportedImageType
42
+ image_hash.clear
41
43
  end
42
44
  end
43
45
 
@@ -125,7 +125,11 @@ module Prawn
125
125
  def style_properties
126
126
  style = current_attrs['style']
127
127
  if style
128
- style.split(';').map { |p| p.split(':', 2).map(&:strip) }.to_h
128
+ style
129
+ .split(';')
130
+ .map { |p| p.split(':', 2).map(&:strip) }
131
+ .select { |tuple| tuple.size == 2 }
132
+ .to_h
129
133
  else
130
134
  {}
131
135
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Prawn
4
4
  module Markup
5
- VERSION = '0.3.6'
5
+ VERSION = '0.3.7'
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.3.6
4
+ version: 0.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pascal Zumkehr
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-11 00:00:00.000000000 Z
11
+ date: 2022-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -202,7 +202,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
202
202
  - !ruby/object:Gem::Version
203
203
  version: '0'
204
204
  requirements: []
205
- rubygems_version: 3.1.4
205
+ rubygems_version: 3.3.19
206
206
  signing_key:
207
207
  specification_version: 4
208
208
  summary: Parse simple HTML markup to include in Prawn PDFs