rodf 0.3.7 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +77 -0
  3. data/LICENSE +7 -0
  4. data/README.md +244 -64
  5. data/Rakefile +9 -17
  6. data/lib/rodf/cell.rb +171 -0
  7. data/lib/rodf/column.rb +21 -0
  8. data/lib/rodf/container.rb +18 -0
  9. data/lib/rodf/data_style.rb +46 -0
  10. data/lib/rodf/document.rb +133 -0
  11. data/lib/rodf/hyperlink.rb +33 -0
  12. data/lib/rodf/master_page.rb +11 -0
  13. data/lib/rodf/page_layout.rb +41 -0
  14. data/lib/rodf/paragraph.rb +28 -0
  15. data/lib/rodf/paragraph_container.rb +30 -0
  16. data/lib/rodf/property.rb +138 -0
  17. data/lib/rodf/row.rb +56 -0
  18. data/lib/{odf → rodf}/skeleton/manifest.xml.erb +0 -0
  19. data/lib/{odf → rodf}/skeleton/styles.pxml +0 -0
  20. data/lib/rodf/skeleton.rb +17 -0
  21. data/lib/rodf/span.rb +45 -0
  22. data/lib/rodf/spreadsheet.rb +113 -0
  23. data/lib/rodf/style.rb +77 -0
  24. data/lib/rodf/style_section.rb +33 -0
  25. data/lib/rodf/tab.rb +17 -0
  26. data/lib/rodf/table.rb +95 -0
  27. data/lib/rodf/text.rb +126 -0
  28. data/lib/rodf/version.rb +3 -0
  29. data/lib/rodf.rb +31 -0
  30. metadata +76 -115
  31. data/CHANGELOG +0 -17
  32. data/Gemfile +0 -9
  33. data/LICENSE.LGPL +0 -166
  34. data/Manifest +0 -48
  35. data/lib/odf/cell.rb +0 -104
  36. data/lib/odf/column.rb +0 -33
  37. data/lib/odf/compatibility.rb +0 -25
  38. data/lib/odf/container.rb +0 -57
  39. data/lib/odf/data_style.rb +0 -45
  40. data/lib/odf/document.rb +0 -67
  41. data/lib/odf/hyperlink.rb +0 -51
  42. data/lib/odf/master_page.rb +0 -33
  43. data/lib/odf/page_layout.rb +0 -39
  44. data/lib/odf/paragraph.rb +0 -46
  45. data/lib/odf/paragraph_container.rb +0 -35
  46. data/lib/odf/property.rb +0 -131
  47. data/lib/odf/row.rb +0 -44
  48. data/lib/odf/skeleton.rb +0 -34
  49. data/lib/odf/span.rb +0 -70
  50. data/lib/odf/spreadsheet.rb +0 -64
  51. data/lib/odf/style.rb +0 -65
  52. data/lib/odf/style_section.rb +0 -42
  53. data/lib/odf/tab.rb +0 -38
  54. data/lib/odf/table.rb +0 -50
  55. data/lib/odf/text.rb +0 -66
  56. data/rodf.gemspec +0 -48
  57. data/spec/cell_spec.rb +0 -189
  58. data/spec/data_style_spec.rb +0 -61
  59. data/spec/file_storage_spec.rb +0 -47
  60. data/spec/hyperlink_spec.rb +0 -62
  61. data/spec/master_page_spec.rb +0 -35
  62. data/spec/page_layout_spec.rb +0 -45
  63. data/spec/paragraph_spec.rb +0 -75
  64. data/spec/property_spec.rb +0 -270
  65. data/spec/row_spec.rb +0 -59
  66. data/spec/skeleton_spec.rb +0 -33
  67. data/spec/span_spec.rb +0 -65
  68. data/spec/spec_helper.rb +0 -23
  69. data/spec/spreadsheet_spec.rb +0 -123
  70. data/spec/style_section_spec.rb +0 -42
  71. data/spec/style_spec.rb +0 -109
  72. data/spec/tab_spec.rb +0 -34
  73. data/spec/table_spec.rb +0 -90
  74. data/spec/text_spec.rb +0 -79
@@ -1,62 +0,0 @@
1
- # Copyright (c) 2010 Thiago Arrais
2
- #
3
- # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
-
18
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
19
-
20
- require 'odf/hyperlink'
21
-
22
- describe ODF::Hyperlink do
23
- it "should receive content text in first argument" do
24
- output = ODF::Hyperlink.new('link somewhere', :href => 'http://www.example.org/').xml
25
- output.should have_tag('//text:a')
26
-
27
- link = Hpricot(output).at('text:a')
28
- link.innerHTML.should == 'link somewhere'
29
- link['xlink:href'].should == 'http://www.example.org/'
30
- end
31
-
32
- it "should accept ref both in second argument as in argument hash" do
33
- Hpricot(ODF::Hyperlink.new('link somewhere', :href => 'http://www.example.org/').xml).
34
- at('text:a')['xlink:href'].should == 'http://www.example.org/'
35
-
36
- Hpricot(ODF::Hyperlink.new('link somewhere', 'http://www.example.org/').xml).
37
- at('text:a')['xlink:href'].should == 'http://www.example.org/'
38
- end
39
-
40
- it "should allow nested span elements" do
41
- output = ODF::Hyperlink.create 'http://www.example.com/' do |link|
42
- link.strong 'important link'
43
- end
44
-
45
- output.should have_tag('//text:a/*', :count => 1)
46
- tree = Hpricot(output)
47
- tree.at('//text:a')['xlink:href'].should == 'http://www.example.com/'
48
- span = tree.at('//text:span')
49
- span['text:style-name'].should == 'strong'
50
- span.innerHTML.should == 'important link'
51
- end
52
-
53
- it "should accept parameterless blocks" do
54
- output = ODF::Hyperlink.create 'http://www.example.com/' do
55
- strong 'important link'
56
- end
57
-
58
- output.should have_tag('//text:a/*')
59
- output.should have_tag('//text:span/*')
60
- end
61
- end
62
-
@@ -1,35 +0,0 @@
1
- # Copyright (c) 2010 Thiago Arrais
2
- #
3
- # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
-
18
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
19
-
20
- require 'odf/master_page'
21
-
22
- describe ODF::MasterPage do
23
- it "should have a name" do
24
- output = ODF::MasterPage.new('my-master-page').xml
25
- output.should have_tag('//style:master-page')
26
-
27
- Hpricot(output).at('style:master-page')['style:name'].should == 'my-master-page'
28
- end
29
-
30
- it "should accept a layout reference" do
31
- Hpricot(ODF::MasterPage.new('my-master-page', :layout => 'A4').xml).
32
- at('style:master-page')['style:page-layout-name'].should == 'A4'
33
- end
34
- end
35
-
@@ -1,45 +0,0 @@
1
- # Copyright (c) 2010 Thiago Arrais
2
- #
3
- # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
-
18
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
19
-
20
- require 'odf/page_layout'
21
-
22
- describe ODF::PageLayout do
23
- it "should have a name" do
24
- output = ODF::PageLayout.new('main-layout').xml
25
- output.should have_tag('style:page-layout')
26
- Hpricot(output).at('style:page-layout')['style:name'].should == 'main-layout'
27
- end
28
-
29
- it "should have properties" do
30
- output = ODF::PageLayout.create 'main-layout' do |l|
31
- l.property 'page-layout'
32
- end
33
- output.should have_tag('//style:page-layout/*', :count => 1)
34
- output.should have_tag('style:page-layout-properties')
35
- end
36
-
37
- it "should accept parameterless blocks" do
38
- output = ODF::PageLayout.create 'main-layout' do
39
- property 'page-layout'
40
- end
41
- output.should have_tag('//style:page-layout/*', :count => 1)
42
- output.should have_tag('style:page-layout-properties')
43
- end
44
- end
45
-
@@ -1,75 +0,0 @@
1
- # Copyright (c) 2010 Thiago Arrais
2
- #
3
- # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
-
18
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
19
-
20
- require 'odf/paragraph'
21
-
22
- describe ODF::Paragraph do
23
- it "should allow text content inside" do
24
- output = ODF::Paragraph.new('Hello').xml
25
- output.should have_tag('//text:p')
26
- Hpricot(output).at('text:p').innerHTML.should == 'Hello'
27
- end
28
-
29
- it "should accept an input sequence" do
30
- output = ODF::Paragraph.create { |p|
31
- p << "Hello, "
32
- p << "world!"
33
- }
34
- output.should have_tag('//text:p')
35
- Hpricot(output).at('text:p').innerHTML.should == 'Hello, world!'
36
- end
37
-
38
- it "should accept styled spans" do
39
- output = ODF::Paragraph.create { |p|
40
- p << "Hello, "
41
- p.span :bold, "world! "
42
- p << "This is not bold. "
43
- p.bold "But this is."
44
- }
45
- spans = Hpricot(output).at('text:p').search('text:span')
46
- spans.first.innerHTML.should == 'world! '
47
- spans.first['text:style-name'].should == 'bold'
48
- spans.last.innerHTML.should == 'But this is.'
49
- spans.last['text:style-name'].should == 'bold'
50
- end
51
-
52
- it "should be able to hold hyperlinks" do
53
- output = ODF::Paragraph.create {|p|
54
- p << "please visit "
55
- p.a "example.org", :href => "http://www.example.org/"
56
- p << " for more details"
57
- }
58
- output.should have_tag("//text:p/*", :count => 3)
59
- output.should have_tag("//text:a")
60
-
61
- Hpricot(output).at('text:a').innerHTML.should == 'example.org'
62
- end
63
-
64
- it "should support style attribute" do
65
- Hpricot(ODF::Paragraph.create('styled paragraph', :style => 'highlight')).
66
- at('text:p')['text:style-name'].should == 'highlight'
67
- end
68
-
69
- it "should accept attributes in the first parameter too" do
70
- para = Hpricot(ODF::Paragraph.create(:style => 'testing')).at('text:p')
71
- para.innerHTML.should be_empty
72
- para['text:style-name'].should == 'testing'
73
- end
74
- end
75
-
@@ -1,270 +0,0 @@
1
- # Copyright (c) 2008 Thiago Arrais
2
- #
3
- # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
-
18
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
19
-
20
- require 'odf/property'
21
-
22
- describe ODF::Property do
23
- it "should accept either strings or symbols as keys" do
24
- property = ODF::Property.new :text, :color=>'#4c4c4c', 'font-weight'=>'bold'
25
- elem = Hpricot(property.xml).at('style:text-properties')
26
- elem['fo:color'].should == '#4c4c4c'
27
- elem['fo:font-weight'].should == 'bold'
28
- end
29
-
30
- it "should prefix style properties with looked up namespace" do
31
- Hpricot(ODF::Property.new(:cell, 'rotation-angle' => '-90').xml).
32
- at('//style:table-cell-properties')['style:rotation-angle'].should == '-90'
33
- Hpricot(ODF::Property.new(:row, 'row-height' => '2cm').xml).
34
- at('//style:table-row-properties')['style:row-height'].should == '2cm'
35
- Hpricot(ODF::Property.new(:column, 'column-width' => '2cm').xml).
36
- at('//style:table-column-properties')['style:column-width'].should == '2cm'
37
- Hpricot(ODF::Property.new(:text, 'text-underline-type' => 'single').xml).
38
- at('style:text-properties')['style:text-underline-type'].should == 'single'
39
- Hpricot(ODF::Property.new(:paragraph, 'tab-stop-distance' => '0.4925in').xml).
40
- at('style:paragraph-properties')['style:tab-stop-distance'].should == '0.4925in'
41
- Hpricot(ODF::Property.new(:page_layout, 'border-line-width' => '2px').xml).
42
- at('style:page-layout-properties')['style:border-line-width'].should == '2px'
43
- Hpricot(ODF::Property.new(:header_footer, 'border-line-width' => '2px').xml).
44
- at('style:header-footer-properties')['style:border-line-width'].should == '2px'
45
- Hpricot(ODF::Property.new(:ruby, 'ruby-position' => 'above').xml).
46
- at('style:ruby-properties')['style:ruby-position'].should == 'above'
47
- Hpricot(ODF::Property.new(:section, 'editable' => true).xml).
48
- at('style:section-properties')['style:editable'].should == 'true'
49
- Hpricot(ODF::Property.new(:table, 'align' => 'left').xml).
50
- at('style:table-properties')['table:align'].should == 'left'
51
- Hpricot(ODF::Property.new(:list_level, 'space-before' => '2em').xml).
52
- at('style:list-level-properties')['text:space-before'].should == '2em'
53
- # style:graphic-properties
54
- # style:chart-properties
55
- # style:drawing-page-properties
56
- end
57
-
58
- it "should generate row properties tag" do
59
- property = ODF::Property.new :row, 'background-color' => '#f5f57a'
60
-
61
- property.xml.should have_tag('//style:table-row-properties')
62
- end
63
-
64
- it "should accept full perimeter border specs" do
65
- property = ODF::Property.new :cell, :border => "0.025in solid #000000"
66
-
67
- Hpricot(property.xml).at('//style:table-cell-properties')['fo:border'].
68
- should == "0.025in solid #000000"
69
- end
70
-
71
- it "should accept splited full perimeter border specs" do
72
- property = ODF::Property.new :cell, :border_width => '0.025in',
73
- :border_color => '#000000',
74
- :border_style => 'solid'
75
-
76
- Hpricot(property.xml).at('//style:table-cell-properties')['fo:border'].
77
- should == "0.025in solid #000000"
78
- end
79
-
80
- it "should use the first value for vertical and second for horizontal border side specs" do
81
- property = ODF::Property.new :cell, :border_width => '0.025in 0.3in',
82
- :border_color => '#ff0000 #0000ff',
83
- :border_style => 'solid'
84
-
85
- elem= Hpricot(property.xml).at('//style:table-cell-properties')
86
- elem['fo:border-top'].should == "0.025in solid #ff0000"
87
- elem['fo:border-right'].should == "0.3in solid #0000ff"
88
- elem['fo:border-bottom'].should == "0.025in solid #ff0000"
89
- elem['fo:border-left'].should == "0.3in solid #0000ff"
90
- end
91
-
92
- it "should use the third value for bottom border specs when present" do
93
- property = ODF::Property.new :cell, :border_width => '0.025in 0.3in 0.4in',
94
- :border_color => '#ff0000 #0000ff',
95
- :border_style => 'dotted solid solid'
96
-
97
- elem = Hpricot(property.xml).at('//style:table-cell-properties')
98
- elem['fo:border-bottom'].should == "0.4in solid #ff0000"
99
-
100
- property = ODF::Property.new :cell, :border_width => '0.025in',
101
- :border_color => '#ff0000 #0000ff #00ff00',
102
- :border_style => 'dotted solid'
103
-
104
- elem = Hpricot(property.xml).at('//style:table-cell-properties')
105
- elem['fo:border-bottom'].should == "0.025in dotted #00ff00"
106
- end
107
-
108
- it "should cascade left border specs from fourth to second to first" do
109
- property = ODF::Property.new :cell, :border_width => '0.1in 0.2in 0.3in 0.4in',
110
- :border_color => '#ff0000 #0000ff #00ff00',
111
- :border_style => 'dotted solid'
112
-
113
- elem = Hpricot(property.xml).at('//style:table-cell-properties')
114
- elem['fo:border-left'].should == "0.4in solid #0000ff"
115
-
116
- property = ODF::Property.new :cell, :border_width => '0.1in 0.2in 0.3in',
117
- :border_color => '#ff0000 #0000ff',
118
- :border_style => 'dotted'
119
-
120
- elem = Hpricot(property.xml).at('//style:table-cell-properties')
121
- elem['fo:border-left'].should == "0.2in dotted #0000ff"
122
-
123
- property = ODF::Property.new :cell, :border_width => '0.1in 0.2in',
124
- :border_color => '#ff0000',
125
- :border_style => 'dotted solid dashed double'
126
-
127
- elem = Hpricot(property.xml).at('//style:table-cell-properties')
128
- elem['fo:border-left'].should == "0.2in double #ff0000"
129
-
130
- property = ODF::Property.new :cell, :border_width => '0.1in',
131
- :border_color => '#ff0000 #0000ff #00ff00 #ffff00',
132
- :border_style => 'dotted solid dashed'
133
-
134
- elem = Hpricot(property.xml).at('//style:table-cell-properties')
135
- elem['fo:border-left'].should == "0.1in solid #ffff00"
136
- end
137
-
138
- it "should support paragraph properties" do
139
- ODF::Property.new(:paragraph).xml.
140
- should have_tag('style:paragraph-properties')
141
- end
142
-
143
- it "should know the namespace for style:text-properties style properties" do
144
- #see http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1416402_253892949
145
- ['country-asian', 'country-complex', 'font-charset', 'font-charset-asian',
146
- 'font-charset-complex', 'font-family-asian', 'font-family-complex', 'font-family-generic',
147
- 'font-family-generic-asian', 'font-family-generic-complex', 'font-name', 'font-name-asian',
148
- 'font-name-complex', 'font-pitch', 'font-pitch-asian', 'font-pitch-complex', 'font-relief',
149
- 'font-size-asian', 'font-size-complex', 'font-size-rel', 'font-size-rel-asian',
150
- 'font-size-rel-complex', 'font-style-asian', 'font-style-complex', 'font-style-name',
151
- 'font-style-name-asian', 'font-style-name-complex', 'font-weight-asian', 'font-weight-complex',
152
- 'language-asian', 'language-complex', 'letter-kerning', 'rfc-language-tag',
153
- 'rfc-language-tag-asian', 'rfc-language-tag-complex', 'script-asian', 'script-complex',
154
- 'script-type', 'text-blinking', 'text-combine', 'text-combine-end-char',
155
- 'text-combine-start-char', 'text-emphasize', 'text-line-through-color',
156
- 'text-line-through-mode', 'text-line-through-style', 'text-line-through-text',
157
- 'text-line-through-text-style', 'text-line-through-type', 'text-line-through-width',
158
- 'text-outline', 'text-overline-color', 'text-overline-mode', 'text-overline-style',
159
- 'text-overline-type', 'text-overline-width', 'text-position', 'text-rotation-angle',
160
- 'text-rotation-scale', 'text-scale', 'text-underline-color', 'text-underline-mode',
161
- 'text-underline-style', 'text-underline-type', 'text-underline-width', 'use-window-font-color'].
162
- each do |prop|
163
- ODF::Property.lookup_namespace_for(prop).should == 'style'
164
- end
165
- end
166
-
167
- it "should know the namespace for style:table-cell-properties style properties" do
168
- #see http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1416518_253892949
169
- ['border-line-width', 'border-line-width-bottom', 'border-line-width-left',
170
- 'border-line-width-right', 'border-line-width-top', 'cell-protect', 'decimal-places',
171
- 'diagonal-bl-tr', 'diagonal-bl-tr-widths', 'diagonal-tl-br', 'diagonal-tl-br-widths',
172
- 'direction', 'glyph-orientation-vertical', 'print-content', 'repeat-content',
173
- 'rotation-align', 'rotation-angle', 'shadow', 'shrink-to-fit', 'text-align-source',
174
- 'vertical-align', 'writing-mode'].
175
- each do |prop|
176
- ODF::Property.lookup_namespace_for(prop).should == 'style'
177
- end
178
- end
179
-
180
- it "should know the namespace for style:table-cell-properties style properties" do
181
- #see http://docs.oasis-open.org/office/v1.2/os/opendocument-v1.2-os-part1.html#__refheading__1416516_253892949
182
- ['min-row-height', 'row-height', 'use-optimal-row-height'].each do |prop|
183
- ODF::Property.lookup_namespace_for(prop).should == 'style'
184
- end
185
- end
186
-
187
- it "should know the namespace for style:table-row-properties style properties" do
188
- # see http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1416514_253892949
189
- ['column-width', 'rel-column-width', 'use-optimal-column-width'].each do |prop|
190
- ODF::Property.lookup_namespace_for(prop).should == 'style'
191
- end
192
- end
193
-
194
- it "should know the namespace for style:paragraph-properties style properties" do
195
- # see http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1416494_253892949
196
- ['auto-text-indent', 'background-transparency', 'border-line-width', 'border-line-width-bottom',
197
- 'border-line-width-left', 'border-line-width-right', 'border-line-width-top',
198
- 'font-independent-line-spacing', 'join-border', 'justify-single-word', 'line-break',
199
- 'line-height-at-least', 'line-spacing', 'page-number', 'punctuation-wrap', 'register-true',
200
- 'shadow', 'snap-to-layout-grid', 'tab-stop-distance', 'text-autospace', 'vertical-align',
201
- 'writing-mode', 'writing-mode-automatic'].
202
- each do |prop|
203
- ODF::Property.lookup_namespace_for(prop).should == 'style'
204
- end
205
- end
206
-
207
- it "should know the namespace for style:page-layout-properties style properties" do
208
- # see http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1416486_253892949
209
- ['border-line-width', 'border-line-width-bottom', 'border-line-width-left', 'border-line-width-right',
210
- 'border-line-width-top', 'first-page-number', 'footnote-max-height', 'layout-grid-base-height',
211
- 'layout-grid-base-width', 'layout-grid-color', 'layout-grid-display', 'layout-grid-lines',
212
- 'layout-grid-mode', 'layout-grid-print', 'layout-grid-ruby-below', 'layout-grid-ruby-height',
213
- 'layout-grid-snap-to', 'layout-grid-standard-mode', 'num-format', 'num-letter-sync',
214
- 'num-prefix', 'num-suffix', 'paper-tray-name', 'print', 'print-orientation', 'print-page-order',
215
- 'register-truth-ref-style-name', 'scale-to', 'scale-to-pages', 'shadow', 'table-centering',
216
- 'writing-mode'].
217
- each do |prop|
218
- ODF::Property.lookup_namespace_for(prop).should == 'style'
219
- end
220
- end
221
-
222
- it "should know the namespace for style:header-footer-properties style and svg properties" do
223
- # see http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1416492_253892949
224
- ['border-line-width', 'border-line-width-bottom', 'border-line-width-left', 'border-line-width-right',
225
- 'border-line-width-top', 'dynamic-spacing', 'shadow'].
226
- each do |prop|
227
- ODF::Property.lookup_namespace_for(prop).should == 'style'
228
- end
229
- ODF::Property.lookup_namespace_for('height').should == 'svg'
230
- end
231
-
232
- it "should know the namespace for style:ruby-properties style properties" do
233
- # see http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1416502_253892949
234
- ['ruby-align', 'ruby-position'].each do |prop|
235
- ODF::Property.lookup_namespace_for(prop).should == 'style'
236
- end
237
- end
238
-
239
- it "should know the namespace for style:section-properties style and text properties" do
240
- # see http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#element-style_section-properties
241
- ['editable', 'protect', 'writing-mode'].each do |prop|
242
- ODF::Property.lookup_namespace_for(prop).should == 'style'
243
- end
244
- ODF::Property.lookup_namespace_for('dont-balance-text-columns').should == 'text'
245
- end
246
-
247
- it "should know the namespace for style:table-properties style and table properties" do
248
- # see http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#element-style_table-properties
249
- ['may-break-between-rows', 'page-number', 'rel-width', 'shadow', 'width', 'writing-mode'].
250
- each do |prop|
251
- ODF::Property.lookup_namespace_for(prop).should == 'style'
252
- end
253
- ['align', 'border-model', 'display'].each do |prop|
254
- ODF::Property.lookup_namespace_for(prop).should == 'table'
255
- end
256
- end
257
-
258
- it "should know the namespace for style:list-level-properties style, svg and text properties" do
259
- ['font-name', 'vertical-pos', 'vertical-rel'].each do |prop|
260
- ODF::Property.lookup_namespace_for(prop).should == 'style'
261
- end
262
- ODF::Property.lookup_namespace_for('y').should == 'svg'
263
- ['list-level-position-and-space-mode', 'min-label-distance', 'min-label-width',
264
- 'space-before'].
265
- each do |prop|
266
- ODF::Property.lookup_namespace_for(prop).should == 'text'
267
- end
268
- end
269
- end
270
-
data/spec/row_spec.rb DELETED
@@ -1,59 +0,0 @@
1
- # Copyright (c) 2008 Thiago Arrais
2
- #
3
- # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
-
18
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
19
-
20
- require 'odf/row'
21
-
22
- describe ODF::Row do
23
- it "should allow cells to be added" do
24
- output = ODF::Row.create
25
- output.should have_tag('//table:table-row')
26
- output.should_not have_tag('//table:table-row/*')
27
-
28
- output = ODF::Row.create {|r|
29
- r.cell
30
- r.cell
31
- }
32
- output.should have_tag('//table:table-row/*', :count => 2)
33
- output.should have_tag('//table:table-cell')
34
- end
35
-
36
- it "should accept parameterless blocks" do
37
- output = ODF::Row.create do
38
- cell
39
- cell
40
- end
41
- output.should have_tag('//table:table-row/*', :count => 2)
42
- output.should have_tag('//table:table-cell')
43
- end
44
-
45
- it "should be stylable in the initialization" do
46
- output = ODF::Row.create 0, :style => 'dark' do
47
- cell
48
- end
49
- Hpricot(output).at('table:table-row')['table:style-name'].
50
- should == 'dark'
51
- end
52
-
53
- it "should be attr_writer stylable" do
54
- row = ODF::Row.new
55
- row.style = 'dark'
56
- Hpricot(row.xml).at('table:table-row')['table:style-name'].
57
- should == 'dark'
58
- end
59
- end
@@ -1,33 +0,0 @@
1
- # Copyright (c) 2012 Foivos Zakkak
2
- #
3
- # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
-
18
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
19
-
20
- require 'odf/skeleton'
21
-
22
- describe ODF::Skeleton do
23
- it "should have the expected structure" do
24
- output = ODF::Skeleton.new.styles
25
- output.should have_tag('//office:document-styles/*')
26
- output.should have_tag('//office:font-face-decls')
27
- output.should have_tag('//office:styles', :count => 1)
28
- output.should have_tag('//style:style', :count => 1)
29
- output.should have_tag('//number:number-style', :count => 2)
30
- output.should have_tag('//number:date-style', :count => 1)
31
- end
32
- end
33
-
data/spec/span_spec.rb DELETED
@@ -1,65 +0,0 @@
1
- # Copyright (c) 2010 Thiago Arrais
2
- #
3
- # This file is part of rODF.
4
- #
5
- # rODF is free software: you can redistribute it and/or modify
6
- # it under the terms of the GNU Lesser General Public License as
7
- # published by the Free Software Foundation, either version 3 of
8
- # the License, or (at your option) any later version.
9
-
10
- # rODF is distributed in the hope that it will be useful,
11
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Lesser General Public License for more details.
14
-
15
- # You should have received a copy of the GNU Lesser General Public License
16
- # along with rODF. If not, see <http://www.gnu.org/licenses/>.
17
-
18
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
19
-
20
- require 'odf/span'
21
-
22
- describe ODF::Span do
23
- it "should print non-styled spans in pure text" do
24
- ODF::Span.new('no style').xml.should == 'no style'
25
- end
26
-
27
- it "should wrap styled output in span tags" do
28
- output = ODF::Span.new(:italics, 'styled text').xml
29
- output.should have_tag('text:span')
30
- span = Hpricot(output).at('text:span')
31
- span['text:style-name'].should == 'italics'
32
- span.innerHTML.should == 'styled text'
33
- end
34
-
35
- it "should allow nesting" do
36
- output = ODF::Span.create :bold do |s|
37
- s.italics 'highlighted text'
38
- end
39
-
40
- output.should have_tag('//text:span/*', :count => 2)
41
- Hpricot(output).search('//text:span')[1].
42
- innerHTML.should == 'highlighted text'
43
- end
44
-
45
- it "should allow links" do
46
- output = ODF::Span.create :bold do |s|
47
- s.link 'there', 'http://www.example.org/'
48
- s << ' and '
49
- s.a 'back again', 'http://www.example.com/'
50
- end
51
-
52
- output.should have_tag('//text:a', :count => 2)
53
- elem = Hpricot(output)
54
-
55
- links = elem.search('//text:a')
56
- links.first.innerHTML.should == 'there'
57
- links.last.innerHTML.should == 'back again'
58
-
59
- elem.at('//text:span').children[1].to_plain_text.should == " and "
60
- end
61
-
62
- it "should escape entities" do
63
- ODF::Span.create('Fish & Chips').should == 'Fish &amp; Chips'
64
- end
65
- end