rtf 0.3.0 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,5 +1,8 @@
1
1
  == CHANGES
2
2
 
3
+ 0.3.2
4
+ * Added support for utf-8 thanks to clbustos
5
+
3
6
  0.3.0
4
7
  * Resolve problems on Ruby 1.9.1 with ImageNode#read_source. Peter uses IO#getc, which returns a String on Ruby 1.9.1, not a Integer, so I replaced with getbyte. [clbustos]
5
8
  * Deleted duplicated definition of ImageNode#style= with attr_writer and def. [clbustos]
data/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
- ---
1
+ ---
2
2
  :major: 0
3
3
  :minor: 3
4
- :patch: 0
5
- :build:
4
+ :patch: 2
5
+ :build:
@@ -1,5 +1,9 @@
1
+ # encoding: utf-8
1
2
  #!/usr/bin/env ruby
2
3
 
4
+ $LOAD_PATH.unshift(File.dirname(__FILE__)+"/../lib/")
5
+
6
+
3
7
  require 'rubygems'
4
8
  require 'rtf'
5
9
 
@@ -48,4 +52,4 @@ end
48
52
 
49
53
  File.open('example01.rtf', 'w') do |file|
50
54
  file.write(document.to_rtf)
51
- end
55
+ end
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__)+"/../lib/")
2
3
 
3
4
  require 'rubygems'
4
5
  require 'rtf'
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__)+"/../lib/")
2
3
 
3
4
  require 'rubygems'
4
5
  require 'rtf'
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__)+"/../lib/")
2
3
 
3
4
  require 'rubygems'
4
5
  require 'rtf'
data/lib/rtf/node.rb CHANGED
@@ -118,7 +118,22 @@ module RTF
118
118
  # This method generates the RTF equivalent for a TextNode object. This
119
119
  # method escapes any special sequences that appear in the text.
120
120
  def to_rtf
121
- @text == nil ? '' : @text.gsub("{", "\\{").gsub("}", "\\}").gsub("\\", "\\\\")
121
+ rtf=(@text == nil ? '' : @text.gsub("{", "\\{").gsub("}", "\\}").gsub("\\", "\\\\"))
122
+ # This is from lfarcy / rtf-extensions
123
+ # I don't see the point of coding different 128<n<256 range
124
+
125
+ #f1=lambda { |n| n < 128 ? n.chr : n < 256 ? "\\'#{n.to_s(16)}" : "\\u#{n}\\'3f" }
126
+ # Encode as Unicode.
127
+
128
+ f=lambda { |n| n < 128 ? n.chr : "\\u#{n}\\'3f" }
129
+ # Ruby 1.9 is safe, cause detect original encoding
130
+ # and convert text to utf-16 first
131
+ if RUBY_VERSION>"1.9.0"
132
+ return rtf.encode("UTF-16LE", :undef=>:replace).each_codepoint.map(&f).join('')
133
+ else
134
+ # You SHOULD use UTF-8 as input, ok?
135
+ return rtf.unpack('U*').map(&f).join('')
136
+ end
122
137
  end
123
138
  end # End of the TextNode class.
124
139
 
@@ -521,7 +536,7 @@ module RTF
521
536
  class TableNode < ContainerNode
522
537
  # Cell margin. Default to 100
523
538
  attr_accessor :cell_margin
524
-
539
+
525
540
  # This is a constructor for the TableNode class.
526
541
  #
527
542
  # ==== Parameters
@@ -540,7 +555,7 @@ module RTF
540
555
  rows.times {entries.push(TableRowNode.new(self, columns, *widths))}
541
556
  entries
542
557
  end
543
-
558
+
544
559
  elsif block
545
560
  block.arity<1 ? self.instance_eval(&block) : block.call(self)
546
561
  else
@@ -753,7 +768,7 @@ module RTF
753
768
  attr_accessor :width
754
769
  # Attribute accessor.
755
770
  attr_reader :shading_colour, :style
756
-
771
+
757
772
  # This is the constructor for the TableCellNode class.
758
773
  #
759
774
  # ==== Parameters
@@ -1262,7 +1277,7 @@ module RTF
1262
1277
  if size > 0
1263
1278
  total = 0
1264
1279
  while @source.eof? == false && total < size
1265
-
1280
+
1266
1281
  @read << @source.getbyte
1267
1282
  total += 1
1268
1283
  end
@@ -1660,4 +1675,4 @@ module RTF
1660
1675
  text.string
1661
1676
  end
1662
1677
  end # End of the Document class.
1663
- end # End of the RTF module.
1678
+ end # End of the RTF module.
data/test/test_helper.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'rubygems'
2
2
  require 'test/unit'
3
3
 
4
+ $LOAD_PATH.unshift(File.dirname(__FILE__)+"/../lib/")
4
5
  $LOAD_PATH.unshift(File.dirname(__FILE__))
5
6
  require 'rtf'
6
7
  include RTF
@@ -1,3 +1,4 @@
1
+ # encoding:UTF-8
1
2
  require 'test_helper'
2
3
 
3
4
  # Information class unit test class.
@@ -5,7 +6,7 @@ class TextNodeTest < Test::Unit::TestCase
5
6
  def setup
6
7
  @node = Node.new(nil)
7
8
  end
8
-
9
+
9
10
  def test01
10
11
  nodes = []
11
12
  nodes.push(TextNode.new(@node))
@@ -13,25 +14,25 @@ class TextNodeTest < Test::Unit::TestCase
13
14
  nodes.push(TextNode.new(@node))
14
15
  nodes.push(TextNode.new(@node, ''))
15
16
 
16
- assert(nodes[0].text == nil)
17
- assert(nodes[1].text == 'Node 2')
18
- assert(nodes[2].text == nil)
17
+ assert(nodes[0].text == nil)
18
+ assert(nodes[1].text == 'Node 2')
19
+ assert(nodes[2].text == nil)
19
20
  assert(nodes[3].text == '')
20
-
21
+
21
22
  nodes[0].text = 'This is the altered text for node 1.'
22
23
  assert(nodes[0].text == 'This is the altered text for node 1.')
23
-
24
+
24
25
  nodes[1].append('La la la')
25
26
  nodes[2].append('La la la')
26
27
  assert(nodes[1].text == 'Node 2La la la')
27
28
  assert(nodes[2].text == 'La la la')
28
-
29
+
29
30
  nodes[2].text = nil
30
31
  nodes[1].insert(' - ', 6)
31
32
  nodes[2].insert('TEXT', 2)
32
33
  assert(nodes[1].text == 'Node 2 - La la la')
33
34
  assert(nodes[2].text == 'TEXT')
34
-
35
+
35
36
  nodes[2].text = nil
36
37
  nodes[3].text = '{\}'
37
38
  assert(nodes[0].to_rtf == 'This is the altered text for node 1.')
@@ -39,7 +40,7 @@ class TextNodeTest < Test::Unit::TestCase
39
40
  assert(nodes[2].to_rtf == '')
40
41
  assert(nodes[3].to_rtf == '\{\\\}')
41
42
  end
42
-
43
+
43
44
  def test02
44
45
  begin
45
46
  TextNode.new(nil)
@@ -47,4 +48,19 @@ class TextNodeTest < Test::Unit::TestCase
47
48
  rescue => error
48
49
  end
49
50
  end
51
+ def test_utf8
52
+ nodes = []
53
+ nodes.push(TextNode.new(@node))
54
+ nodes.push(TextNode.new(@node))
55
+
56
+ nodes[0].text="ASCCI"
57
+ assert_equal("ASCCI", nodes[0].to_rtf)
58
+
59
+
60
+ utf8="Á"
61
+ exp="\\u#{utf8.unpack("U")[0]}\\'3f"
62
+ nodes[0].text=utf8
63
+ assert_equal(exp, nodes[0].to_rtf)
64
+
65
+ end
50
66
  end
metadata CHANGED
@@ -1,29 +1,26 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rtf
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2
4
5
  prerelease:
5
- version: 0.3.0
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Peter Wood
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-04-15 00:00:00 +01:00
12
+ date: 2011-09-07 00:00:00.000000000 +01:00
14
13
  default_executable:
15
14
  dependencies: []
16
-
17
- description: Ruby RTF is a library that can be used to create rich text format (RTF) documents. RTF is a text based standard for laying out document content.
15
+ description: Ruby RTF is a library that can be used to create rich text format (RTF)
16
+ documents. RTF is a text based standard for laying out document content.
18
17
  email: paw220470@yahoo.ie
19
18
  executables: []
20
-
21
19
  extensions: []
22
-
23
- extra_rdoc_files:
20
+ extra_rdoc_files:
24
21
  - LICENSE
25
22
  - README.rdoc
26
- files:
23
+ files:
27
24
  - CHANGES
28
25
  - LICENSE
29
26
  - README.rdoc
@@ -74,54 +71,26 @@ files:
74
71
  has_rdoc: true
75
72
  homepage: http://github.com/thechrisoshow/rtf
76
73
  licenses: []
77
-
78
74
  post_install_message:
79
75
  rdoc_options: []
80
-
81
- require_paths:
76
+ require_paths:
82
77
  - lib
83
- required_ruby_version: !ruby/object:Gem::Requirement
78
+ required_ruby_version: !ruby/object:Gem::Requirement
84
79
  none: false
85
- requirements:
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: "0"
89
- required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ! '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
85
  none: false
91
- requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- version: "0"
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
95
90
  requirements: []
96
-
97
91
  rubyforge_project:
98
- rubygems_version: 1.5.2
92
+ rubygems_version: 1.6.2
99
93
  signing_key:
100
94
  specification_version: 3
101
95
  summary: Ruby library to create rich text format documents.
102
- test_files:
103
- - examples/example01.rb
104
- - examples/example02.rb
105
- - examples/example03.rb
106
- - examples/example04.rb
107
- - test/character_style_test.rb
108
- - test/colour_table_test.rb
109
- - test/colour_test.rb
110
- - test/command_node_test.rb
111
- - test/container_node_test.rb
112
- - test/document_style_test.rb
113
- - test/document_test.rb
114
- - test/font_table_test.rb
115
- - test/font_test.rb
116
- - test/footer_node_test.rb
117
- - test/header_node_test.rb
118
- - test/image_node_test.rb
119
- - test/information_test.rb
120
- - test/node_test.rb
121
- - test/paragraph_style_test.rb
122
- - test/style_test.rb
123
- - test/table_cell_node_test.rb
124
- - test/table_node_test.rb
125
- - test/table_row_node_test.rb
126
- - test/test_helper.rb
127
- - test/text_node_test.rb
96
+ test_files: []