prawn_hebrew 0.0.8 → 0.1.0

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/prawn_hebrew.rb +38 -25
  3. data/lib/version.rb +2 -2
  4. metadata +25 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5bce759324c9ddd6c50281d64a986b18df0390951268ec3b1d73070ab49f9484
4
- data.tar.gz: 1213589f341946c555682929bd737ffe8d715ee9400f174e01377751c9c7c64c
3
+ metadata.gz: d3650342bfc589db1e29d35c63fbb20a5964c27e2e3ce0e8bc75cff0b94999db
4
+ data.tar.gz: fa25fcaf654e29ef4a3a1c8ed2055a7dd018f8318119e84d5060ead6746732d2
5
5
  SHA512:
6
- metadata.gz: e9b463d274d655efcade8b1c3acab361e9f4776c9fce6c6aedc09dee0f6c8b9d7c3cd6cd2c8ae2a2f5f7e6888155477d550708e654b41561dddb765a113d4c01
7
- data.tar.gz: 787b80276ff7af3e9da4c3067192562a4b8ba0f5af9cd0cd52e75e7ffd5431e32cbfba215d671728407c5dcdd8cbd052bc19baaae65f61312db8c503faab4146
6
+ metadata.gz: cfe833774d37d4bf5e55e69a7b5907b98eba38bc3985b6a645353a5900bf923f9d8d6f7148d8f840645f29c8b171047b85bca64edc4c88fc323c4c3b0a98f065
7
+ data.tar.gz: f84b3caaaea673b4c2463b21ed69607c651b8ceef9a9c055848f339c0e3d87a2903f87a0424c220df23ddfbab36491b94e8bf92532407288d9fe088f1fb4bac3
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
- words = text.to_s.split(/(\s+|\n)/)
22
- hebrew_run = []
23
- fragments = []
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
- words.each do |word|
28
- if word.strip.empty?
29
- fragments << { text: word, font: english_font, size: size, styles: styles } if word != ' '
30
- next
31
- end
32
-
33
- if word =~ /\p{Hebrew}/
34
- hebrew_run << word
35
- else
36
- unless hebrew_run.empty?
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
- fragments << { text: ' ' }
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
- unless hebrew_run.empty?
49
- hebrew_run.reverse.each_with_index do |hw, idx|
50
- fragments << { text: hw, font: hebrew_font, size: size, direction: :rtl, styles: styles }
51
- fragments << { text: ' ', font: hebrew_font, size: size, direction: :rtl, styles: styles } if idx < hebrew_run.length - 1
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
- fragments
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
1
  module PrawnHebrew
2
- VERSION = "0.0.8"
3
- end
2
+ VERSION = "0.1.0"
3
+ end
metadata CHANGED
@@ -1,27 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prawn_hebrew
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
- - Ben Lite
7
+ - Benlite95
8
8
  bindir: bin
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
- dependencies: []
12
- description: Working with hebrew words in prawn
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.4'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '2.4'
26
+ description: Add Hebrew and bidirectional text support to Prawn PDF library
13
27
  email:
14
- - benlite96@gmail.com
28
+ - your-email@example.com
15
29
  executables: []
16
30
  extensions: []
17
31
  extra_rdoc_files: []
18
32
  files:
19
33
  - lib/prawn_hebrew.rb
20
34
  - lib/version.rb
21
- homepage: https://rubygems.org/gems/prawn_hebrew
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
25
41
  rdoc_options: []
26
42
  require_paths:
27
43
  - lib
@@ -29,7 +45,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
29
45
  requirements:
30
46
  - - ">="
31
47
  - !ruby/object:Gem::Version
32
- version: '0'
48
+ version: 2.6.0
33
49
  required_rubygems_version: !ruby/object:Gem::Requirement
34
50
  requirements:
35
51
  - - ">="
@@ -38,5 +54,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
38
54
  requirements: []
39
55
  rubygems_version: 3.6.7
40
56
  specification_version: 4
41
- summary: Hebrew Text in Prawn
57
+ summary: Hebrew text support for Prawn PDF
42
58
  test_files: []