tables 0.0.14
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.
- data/LICENSE +3 -0
- data/README +3 -0
- data/Rakefile +35 -0
- data/lib/tables.rb +14 -0
- data/lib/tables/excel_table_reader.rb +175 -0
- data/lib/tables/table.rb +260 -0
- data/lib/tables/table_reader.rb +65 -0
- data/lib/tables/word_table_reader.rb +83 -0
- data/lib/tables/word_table_writer.rb +64 -0
- data/spec/copy_spec.rb +33 -0
- data/spec/excel_table_reader_spec.rb +132 -0
- data/spec/office_copy_spec.rb +55 -0
- data/spec/table_spec.rb +237 -0
- data/spec/text_handling_spec.rb +37 -0
- data/spec/word_table_reader_spec.rb +70 -0
- data/spec/word_table_writer_spec.rb +37 -0
- metadata +64 -0
@@ -0,0 +1,37 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Saul Caganoff (mailto:scaganoff@gmail.com)
|
3
|
+
# Copyright:: Copyright (c) 2010, Saul Caganoff
|
4
|
+
# License:: Creative Commons Attribution 3.0 Australia License (http://creativecommons.org/licenses/by/3.0/au/)
|
5
|
+
#
|
6
|
+
|
7
|
+
require 'tables'
|
8
|
+
|
9
|
+
describe Tables::ExcelTableReader do
|
10
|
+
|
11
|
+
it "should extract a table" do
|
12
|
+
filename=File.dirname(__FILE__)+"/../test/rtm2.xlsx"
|
13
|
+
@xtr = Tables::ExcelTableReader.new(filename)
|
14
|
+
t=@xtr.extract_table("Requirements",{:rtf_columns=>[2], :progress=>true})
|
15
|
+
|
16
|
+
t[7][2].should=="The message content should have the following fields.
|
17
|
+
- Message Id (Mandatory)
|
18
|
+
- Message Priority (Mandatory)
|
19
|
+
- Message Delivery Method (e.g. Portal, IHD ) (Mandatory)
|
20
|
+
- Message Type (e.g. Alert , General) (Mandatory)
|
21
|
+
- Message Text (Mandatory)
|
22
|
+
- Link(s) (embedded in text) (Optional)
|
23
|
+
- Message Start Timestamp (Mandatory)
|
24
|
+
- Message End timestamp (Mandatory)
|
25
|
+
- Recipient ID list (e.g. NMI) ( Mandatory)
|
26
|
+
- Group ID (Optional)
|
27
|
+
- Message Action (Mandatory)
|
28
|
+
- Sender (i.e. who is instigating the message)"
|
29
|
+
|
30
|
+
t[5][2].should==""
|
31
|
+
t[5][0].should=="CACP.OA.04"
|
32
|
+
|
33
|
+
@xtr.exit
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
@@ -0,0 +1,70 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Saul Caganoff (mailto:scaganoff@gmail.com)
|
3
|
+
# Copyright:: Copyright (c) 2010, Saul Caganoff
|
4
|
+
# License:: Creative Commons Attribution 3.0 Australia License (http://creativecommons.org/licenses/by/3.0/au/)
|
5
|
+
#
|
6
|
+
|
7
|
+
require 'tables'
|
8
|
+
|
9
|
+
describe Tables::WordTableReader do
|
10
|
+
|
11
|
+
it "should read a word document" do
|
12
|
+
filename=File.dirname(__FILE__)+"/../test/rtm.docx"
|
13
|
+
@wtr = Tables::WordTableReader.new(filename)
|
14
|
+
@wtr.doc.should_not==nil
|
15
|
+
@wtr.exit
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should count the tables" do
|
19
|
+
filename=File.dirname(__FILE__)+"/../test/rtm.docx"
|
20
|
+
@wtr = Tables::WordTableReader.new(filename)
|
21
|
+
@wtr.doc.should_not==nil
|
22
|
+
@wtr.doc.tables.count.should==55
|
23
|
+
@wtr.exit
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should extract a table" do
|
27
|
+
filename=File.dirname(__FILE__)+"/../test/rtm.docx"
|
28
|
+
@wtr = Tables::WordTableReader.new(filename)
|
29
|
+
t=@wtr.extract_table(21)
|
30
|
+
t.rows.should==13
|
31
|
+
t[0][0].should=~/Unique ID/
|
32
|
+
t[1][0].should=~/CAMM\.SC\.101/
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should extract all tables" do
|
36
|
+
filename=File.dirname(__FILE__)+"/../test/rtm.docx"
|
37
|
+
@wtr = Tables::WordTableReader.new(filename)
|
38
|
+
@wtr.extract_all_tables((0..53).to_a) # TODO: Problem extracting last table should be 0..55
|
39
|
+
@wtr.tables.count.should==54
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should filter tables on extract" do
|
43
|
+
filename=File.dirname(__FILE__)+"/../test/rtm.docx"
|
44
|
+
@wtr = Tables::WordTableReader.new(filename)
|
45
|
+
@wtr.extract_all_tables((0..53).to_a) {|table| table[0][0]=~/Unique ID/} # TODO: Problem extracting last table should be 0..55
|
46
|
+
@wtr.tables.count.should==35
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should merge similar tables" do
|
50
|
+
filename=File.dirname(__FILE__)+"/../test/rtm.docx"
|
51
|
+
@wtr = Tables::WordTableReader.new(filename)
|
52
|
+
@wtr.extract_all_tables((0..53).to_a) # TODO: Problem extracting last table should be 0..55
|
53
|
+
@wtr.merge_tables
|
54
|
+
@wtr.tables.count.should==19
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should return tables matching a filter" do
|
58
|
+
filename=File.dirname(__FILE__)+"/../test/rtm.docx"
|
59
|
+
@wtr = Tables::WordTableReader.new(filename)
|
60
|
+
@wtr.extract_all_tables((0..53).to_a) # TODO: Problem extracting last table should be 0..55
|
61
|
+
@wtr.merge_tables
|
62
|
+
tables=@wtr.get_tables {|table| table[0][0]=~/Unique ID/}
|
63
|
+
tables.count.should==1
|
64
|
+
column1=[]
|
65
|
+
tables[0].each_row {|row| column1<< row[0] }
|
66
|
+
column1.count.should==382
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Saul Caganoff (mailto:scaganoff@gmail.com)
|
3
|
+
# Copyright:: Copyright (c) 2010, Saul Caganoff
|
4
|
+
# License:: Creative Commons Attribution 3.0 Australia License (http://creativecommons.org/licenses/by/3.0/au/)
|
5
|
+
#
|
6
|
+
require "rspec"
|
7
|
+
require 'tables'
|
8
|
+
|
9
|
+
describe Tables::WordTableWriter do
|
10
|
+
|
11
|
+
before(:each) do
|
12
|
+
@wtw=Tables::WordTableWriter.new
|
13
|
+
@table=Tables::Table.new([
|
14
|
+
["Header 1", "Header 2", "Header 3"],
|
15
|
+
["Cell(2,1)","Cell(2,2)","Cell(2,3)"],
|
16
|
+
["Cell(3,1)","Cell(3,2)","Cell(3,3)"],
|
17
|
+
["Cell(4,1)","Cell(4,2)","Cell(4,3)"],
|
18
|
+
["Cell(5,1)","Cell(5,2)","Cell(5,3)"],
|
19
|
+
["Cell(6,1)","Cell(6,2)","Cell(6,3)"]
|
20
|
+
])
|
21
|
+
@outfile=File.dirname(__FILE__)+"/../test/table_writer_test.docx"
|
22
|
+
begin; File.delete(@outfile); rescue; end
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should write a table to word" do
|
26
|
+
File.exists?(@outfile).should==false
|
27
|
+
@wtw.append_table(@table, "This is my very nice table.")
|
28
|
+
@wtw.save_as(@outfile)
|
29
|
+
@wtw.exit
|
30
|
+
File.exists?(@outfile).should==true
|
31
|
+
|
32
|
+
@wtr=Tables::WordTableReader.new(@outfile)
|
33
|
+
t_result=@wtr.extract_table(0)
|
34
|
+
t_result.should.eql? @table
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
metadata
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tables
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.14
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Saul Caganoff
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-09-07 00:00:00.000000000 +10:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
description: Manage two-dimensional text tables including read/write to Word and Excel.
|
16
|
+
email: scaganoff@gmail.com
|
17
|
+
executables: []
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files:
|
20
|
+
- README
|
21
|
+
- LICENSE
|
22
|
+
files:
|
23
|
+
- LICENSE
|
24
|
+
- README
|
25
|
+
- Rakefile
|
26
|
+
- lib/tables/excel_table_reader.rb
|
27
|
+
- lib/tables/table.rb
|
28
|
+
- lib/tables/table_reader.rb
|
29
|
+
- lib/tables/word_table_reader.rb
|
30
|
+
- lib/tables/word_table_writer.rb
|
31
|
+
- lib/tables.rb
|
32
|
+
- spec/copy_spec.rb
|
33
|
+
- spec/excel_table_reader_spec.rb
|
34
|
+
- spec/office_copy_spec.rb
|
35
|
+
- spec/table_spec.rb
|
36
|
+
- spec/text_handling_spec.rb
|
37
|
+
- spec/word_table_reader_spec.rb
|
38
|
+
- spec/word_table_writer_spec.rb
|
39
|
+
has_rdoc: true
|
40
|
+
homepage:
|
41
|
+
licenses: []
|
42
|
+
post_install_message:
|
43
|
+
rdoc_options: []
|
44
|
+
require_paths:
|
45
|
+
- lib
|
46
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
47
|
+
none: false
|
48
|
+
requirements:
|
49
|
+
- - ! '>='
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '0'
|
52
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ! '>='
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
requirements: []
|
59
|
+
rubyforge_project:
|
60
|
+
rubygems_version: 1.5.2
|
61
|
+
signing_key:
|
62
|
+
specification_version: 3
|
63
|
+
summary: Manage two-dimensional text tables including read/write to Word and Excel.
|
64
|
+
test_files: []
|