prawn_hebrew 0.0.8 → 0.1.1
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 +4 -4
- data/lib/prawn_hebrew.rb +38 -25
- data/lib/version.rb +3 -3
- metadata +25 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 186bb2aea7a5ccd10a5346b4847823432d635de32257683a16b5cba3eeec9f7d
|
|
4
|
+
data.tar.gz: 6e8961d9ecfc709a3dedbe73680c85d7745e9efbc90ab502c34d880e9cd9720c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 999a1b333faf3e1e2ac6034de9bdf9abdf6320f06b086dfcf5086b50084416ea14aa3c202e031837abe18c8a6c715855eb126e34acf0f677efa49ca779a99004
|
|
7
|
+
data.tar.gz: 533e97ded68db1248e666351677077b49243b059877763d65d00e27761845de55e60a089737b10726cb943348f61a84e6c01dcf3f83f7b7898b3e672b883838c
|
data/lib/prawn_hebrew.rb
CHANGED
|
@@ -18,40 +18,52 @@ module PrawnHebrew
|
|
|
18
18
|
|
|
19
19
|
def hebrew_formatted_text(text, size: 12, style: :normal, hebrew_font: DEFAULT_HEBREW_FONT, english_font: DEFAULT_ENGLISH_FONT)
|
|
20
20
|
text = sanitize_text(text)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
|
|
22
|
+
# Split by newlines first to process each line independently
|
|
23
|
+
lines = text.to_s.split("\n")
|
|
24
|
+
all_fragments = []
|
|
24
25
|
|
|
25
26
|
styles = style.is_a?(Array) ? style : [style].compact
|
|
27
|
+
|
|
28
|
+
lines.each_with_index do |line, line_idx|
|
|
29
|
+
words = line.split(/(\s+)/)
|
|
30
|
+
hebrew_run = []
|
|
31
|
+
|
|
32
|
+
words.each do |word|
|
|
33
|
+
if word.strip.empty?
|
|
34
|
+
all_fragments << { text: word, font: english_font, size: size, styles: styles } if word != ' '
|
|
35
|
+
next
|
|
36
|
+
end
|
|
26
37
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
hebrew_run.reverse.each_with_index do |hw, idx|
|
|
38
|
-
fragments << { text: hw, font: hebrew_font, size: size, direction: :rtl, styles: styles }
|
|
39
|
-
fragments << { text: ' ', font: hebrew_font, size: size, direction: :rtl, styles: styles } if idx < hebrew_run.length - 1
|
|
38
|
+
if word =~ /\p{Hebrew}/
|
|
39
|
+
hebrew_run << word
|
|
40
|
+
else
|
|
41
|
+
unless hebrew_run.empty?
|
|
42
|
+
hebrew_run.reverse.each_with_index do |hw, idx|
|
|
43
|
+
all_fragments << { text: hw, font: hebrew_font, size: size, direction: :rtl, styles: styles }
|
|
44
|
+
all_fragments << { text: ' ', font: hebrew_font, size: size, direction: :rtl, styles: styles } if idx < hebrew_run.length - 1
|
|
45
|
+
end
|
|
46
|
+
all_fragments << { text: ' ' }
|
|
47
|
+
hebrew_run.clear
|
|
40
48
|
end
|
|
41
|
-
|
|
42
|
-
hebrew_run.clear
|
|
49
|
+
all_fragments << { text: "#{word} ", font: english_font, size: size, styles: styles }
|
|
43
50
|
end
|
|
44
|
-
fragments << { text: "#{word} ", font: english_font, size: size, styles: styles }
|
|
45
51
|
end
|
|
46
|
-
end
|
|
47
52
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
53
|
+
unless hebrew_run.empty?
|
|
54
|
+
hebrew_run.reverse.each_with_index do |hw, idx|
|
|
55
|
+
all_fragments << { text: hw, font: hebrew_font, size: size, direction: :rtl, styles: styles }
|
|
56
|
+
all_fragments << { text: ' ', font: hebrew_font, size: size, direction: :rtl, styles: styles } if idx < hebrew_run.length - 1
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Add newline between lines (except after the last line)
|
|
61
|
+
if line_idx < lines.length - 1
|
|
62
|
+
all_fragments << { text: "\n", font: english_font, size: size, styles: styles }
|
|
52
63
|
end
|
|
53
64
|
end
|
|
54
|
-
|
|
65
|
+
|
|
66
|
+
all_fragments
|
|
55
67
|
end
|
|
56
68
|
|
|
57
69
|
def hebrew_text_box(text, size: 12, style: :normal,
|
|
@@ -116,6 +128,7 @@ module PrawnHebrew
|
|
|
116
128
|
# Add leading to box_opts if specified
|
|
117
129
|
box_opts[:leading] = leading if leading > 0
|
|
118
130
|
|
|
131
|
+
# Don't set direction or alignment - let the reversed fragments handle it
|
|
119
132
|
formatted_text_box(fragments, box_opts)
|
|
120
133
|
end
|
|
121
134
|
end
|
data/lib/version.rb
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module PrawnHebrew
|
|
2
|
-
VERSION = "0.
|
|
3
|
-
end
|
|
1
|
+
module PrawnHebrew
|
|
2
|
+
VERSION = "0.1.1"
|
|
3
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: prawn_hebrew
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ben Lite
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
-
dependencies:
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: prawn
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '2.0'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '2.0'
|
|
12
26
|
description: Working with hebrew words in prawn
|
|
13
27
|
email:
|
|
14
28
|
- benlite96@gmail.com
|
|
@@ -18,10 +32,15 @@ extra_rdoc_files: []
|
|
|
18
32
|
files:
|
|
19
33
|
- lib/prawn_hebrew.rb
|
|
20
34
|
- lib/version.rb
|
|
21
|
-
homepage: https://
|
|
35
|
+
homepage: https://github.com/Benlite95/prawn_hebrew2
|
|
22
36
|
licenses:
|
|
23
37
|
- MIT
|
|
24
|
-
metadata:
|
|
38
|
+
metadata:
|
|
39
|
+
homepage_uri: https://github.com/Benlite95/prawn_hebrew2
|
|
40
|
+
source_code_uri: https://github.com/Benlite95/prawn_hebrew2
|
|
41
|
+
changelog_uri: https://github.com/Benlite95/prawn_hebrew2/releases
|
|
42
|
+
bug_tracker_uri: https://github.com/Benlite95/prawn_hebrew2/issues
|
|
43
|
+
documentation_uri: https://rubydoc.info/gems/prawn_hebrew
|
|
25
44
|
rdoc_options: []
|
|
26
45
|
require_paths:
|
|
27
46
|
- lib
|
|
@@ -29,12 +48,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
29
48
|
requirements:
|
|
30
49
|
- - ">="
|
|
31
50
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '
|
|
51
|
+
version: '2.7'
|
|
33
52
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
34
53
|
requirements:
|
|
35
54
|
- - ">="
|
|
36
55
|
- !ruby/object:Gem::Version
|
|
37
|
-
version: '0'
|
|
56
|
+
version: '3.0'
|
|
38
57
|
requirements: []
|
|
39
58
|
rubygems_version: 3.6.7
|
|
40
59
|
specification_version: 4
|