mexico 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +15 -0
  2. data/.document +5 -0
  3. data/.gitmodules +3 -0
  4. data/.project +14 -0
  5. data/.rspec +2 -0
  6. data/Gemfile +31 -0
  7. data/LICENSE.txt +165 -0
  8. data/README.md +116 -0
  9. data/Rakefile +66 -0
  10. data/VERSION +1 -0
  11. data/assets/TESTCORPUS/Corpus.xml +26 -0
  12. data/assets/fiesta/b6/layer_connectors.fst +16 -0
  13. data/assets/fiesta/b6/match_jones_161_CM_neu_checked.parsed.xml +1225 -0
  14. data/assets/fiesta/elan/ElanFileFormat.eaf +76 -0
  15. data/assets/fiesta/elan/ElanFileFormat.pfsx +8 -0
  16. data/assets/fiesta/elan/ElanFileFormatComplexInterLayerLinks.eaf +107 -0
  17. data/assets/fiesta/elan/reflinks_example.eaf +270 -0
  18. data/assets/fiesta/elan/test_all_interlayerrelations.fst +43 -0
  19. data/assets/fiesta/head/head.fst +24 -0
  20. data/assets/fiesta/praat/mexico.ShortTextGrid +81 -0
  21. data/assets/fiesta/praat/mexico.TextGrid +104 -0
  22. data/assets/helpers/collection_ref_handler.rb +29 -0
  23. data/assets/helpers/id_ref_handler.rb +29 -0
  24. data/assets/helpers/roxml_attribute_handler.rb +57 -0
  25. data/assets/out_only/construct_and_write_spec.toe +99 -0
  26. data/assets/spec.html +554 -0
  27. data/bin/mexico +5 -0
  28. data/features/mexico.feature +9 -0
  29. data/features/step_definitions/mexico_steps.rb +0 -0
  30. data/features/support/env.rb +15 -0
  31. data/info/releasenotes/0.0.1.md +5 -0
  32. data/info/releasenotes/0.0.2.md +5 -0
  33. data/info/releasenotes/0.0.3.md +5 -0
  34. data/info/releasenotes/0.0.4.md +5 -0
  35. data/info/releasenotes/0.0.5.md +8 -0
  36. data/info/releasenotes/0.0.6.md +3 -0
  37. data/info/releasenotes/0.0.7.md +4 -0
  38. data/info/releasenotes/0.0.8.md +9 -0
  39. data/info/releasenotes/0.0.9.md +7 -0
  40. data/lib/mexico/cmd.rb +210 -0
  41. data/lib/mexico/constants.rb +82 -0
  42. data/lib/mexico/constraints/constraint.rb +85 -0
  43. data/lib/mexico/constraints/fiesta_constraints.rb +209 -0
  44. data/lib/mexico/constraints.rb +27 -0
  45. data/lib/mexico/core/corpus_core.rb +39 -0
  46. data/lib/mexico/core/design_core.rb +31 -0
  47. data/lib/mexico/core/media_type.rb +61 -0
  48. data/lib/mexico/core.rb +36 -0
  49. data/lib/mexico/fiesta/interfaces/b6_chat_game_interface.rb +222 -0
  50. data/lib/mexico/fiesta/interfaces/elan_interface.rb +143 -0
  51. data/lib/mexico/fiesta/interfaces/short_text_grid_interface.rb +99 -0
  52. data/lib/mexico/fiesta/interfaces/text_grid_interface.rb +103 -0
  53. data/lib/mexico/fiesta/interfaces.rb +31 -0
  54. data/lib/mexico/fiesta.rb +27 -0
  55. data/lib/mexico/file_system/bound_to_corpus.rb +37 -0
  56. data/lib/mexico/file_system/corpus.rb +207 -0
  57. data/lib/mexico/file_system/data.rb +96 -0
  58. data/lib/mexico/file_system/design.rb +75 -0
  59. data/lib/mexico/file_system/design_component.rb +78 -0
  60. data/lib/mexico/file_system/entry.rb +59 -0
  61. data/lib/mexico/file_system/fiesta_document.rb +344 -0
  62. data/lib/mexico/file_system/fiesta_map.rb +112 -0
  63. data/lib/mexico/file_system/head.rb +33 -0
  64. data/lib/mexico/file_system/id_ref.rb +46 -0
  65. data/lib/mexico/file_system/implicit_item_link.rb +19 -0
  66. data/lib/mexico/file_system/interval_link.rb +84 -0
  67. data/lib/mexico/file_system/item.rb +166 -0
  68. data/lib/mexico/file_system/item_link.rb +98 -0
  69. data/lib/mexico/file_system/item_links_proxy.rb +13 -0
  70. data/lib/mexico/file_system/layer.rb +89 -0
  71. data/lib/mexico/file_system/layer_connector.rb +74 -0
  72. data/lib/mexico/file_system/layer_link.rb +75 -0
  73. data/lib/mexico/file_system/local_file.rb +101 -0
  74. data/lib/mexico/file_system/participant.rb +69 -0
  75. data/lib/mexico/file_system/participant_role.rb +43 -0
  76. data/lib/mexico/file_system/point_link.rb +79 -0
  77. data/lib/mexico/file_system/property.rb +35 -0
  78. data/lib/mexico/file_system/property_map.rb +37 -0
  79. data/lib/mexico/file_system/resource.rb +174 -0
  80. data/lib/mexico/file_system/scale.rb +125 -0
  81. data/lib/mexico/file_system/section.rb +41 -0
  82. data/lib/mexico/file_system/static_collection_ref.rb +64 -0
  83. data/lib/mexico/file_system/template.rb +23 -0
  84. data/lib/mexico/file_system/trial.rb +87 -0
  85. data/lib/mexico/file_system/url.rb +65 -0
  86. data/lib/mexico/file_system.rb +62 -0
  87. data/lib/mexico/not_yet_implemented_error.rb +28 -0
  88. data/lib/mexico/util/fancy_container.rb +57 -0
  89. data/lib/mexico/util.rb +51 -0
  90. data/lib/mexico.rb +36 -0
  91. data/spec/constraints/constraints_spec.rb +306 -0
  92. data/spec/core/media_type_spec.rb +50 -0
  93. data/spec/fiesta/b6_spec.rb +43 -0
  94. data/spec/fiesta/elan_spec.rb +43 -0
  95. data/spec/fiesta/head_spec.rb +54 -0
  96. data/spec/fiesta/praat_spec.rb +54 -0
  97. data/spec/fiesta/read_spec.rb +76 -0
  98. data/spec/file_system_based/better_collection_spec.rb +142 -0
  99. data/spec/file_system_based/corpus_spec.rb +194 -0
  100. data/spec/file_system_based/design_spec.rb +100 -0
  101. data/spec/file_system_based/inter_links_spec.rb +100 -0
  102. data/spec/file_system_based/item_links_spec.rb +76 -0
  103. data/spec/file_system_based/rdf_spec.rb +177 -0
  104. data/spec/file_system_based/resource_spec.rb +111 -0
  105. data/spec/file_system_based/trial_spec.rb +129 -0
  106. data/spec/spec_helper.rb +14 -0
  107. data/spec/toe/construct_and_write_spec.rb +82 -0
  108. data/spec/toe/construction_spec.rb +110 -0
  109. data/spec/toe/item_spec.rb +58 -0
  110. data/spec/toe/layer_spec.rb +63 -0
  111. data/spec/toe/scale_spec.rb +89 -0
  112. data/spec/toe/toe_document_spec.rb +39 -0
  113. data/test/helper.rb +19 -0
  114. data/test/test_mexico.rb +7 -0
  115. metadata +357 -0
@@ -0,0 +1,177 @@
1
+ # This file is part of the MExiCo gem.
2
+ # Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
3
+ # http://www.sfb673.org
4
+ #
5
+ # MExiCo 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
+ # MExiCo 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
16
+ # License along with MExiCo. If not, see
17
+ # <http://www.gnu.org/licenses/>.
18
+
19
+ require 'spec_helper'
20
+
21
+ describe Mexico::FileSystem::Corpus do
22
+
23
+ # def write_corpus
24
+ # doc = Nokogiri::XML::Document.new
25
+ # doc.root = @corpus.to_xml
26
+ # open(File.join(@basepath, "Corpus.OUT.xml"), 'w') do |file|
27
+ # file << doc.serialize
28
+ # end
29
+ # end
30
+
31
+ # context 'Corpus' do
32
+ #
33
+ # # set up an initial corpus representation from the example file
34
+ # before(:each) do
35
+ # @basepath = File.join(File.dirname(__FILE__), '..','..','assets','mexico-testcorpus', 'mexico')
36
+ # @corpus = Mexico::FileSystem::Corpus.open(@basepath)
37
+ # @corpus.resources[1].load
38
+ # end
39
+ #
40
+ # it 'should output RDF ntriples' do
41
+ # rdf = @corpus.to_rdf
42
+ # File.open(File.join(File.dirname(__FILE__), '..','..','assets','rdf-output','corpus.nt'), 'w:utf-8') do |f|
43
+ # f << rdf
44
+ # end
45
+ # rdf.should_not be nil
46
+ # end
47
+ #
48
+ # it 'should output RDF RDFXML' do
49
+ # rdf = @corpus.to_rdf(:format => :rdfxml, :base_uri => 'http://phoibos.sfb673.org/corpora/',
50
+ # :prefixes => {:cats=>'http://cats.sfb673.org/',:phoibos=>'http://phoibos.sfb673.org/corpora/'})
51
+ # File.open(File.join(File.dirname(__FILE__), '..','..','assets','rdf-output','corpus.rdf'), 'w:utf-8') do |f|
52
+ # f << rdf
53
+ # end
54
+ # rdf.should_not be nil
55
+ # end
56
+ #
57
+ # end
58
+
59
+ context 'Fiesta Document' do
60
+
61
+ before :each do
62
+ @basepath = File.join(File.dirname(__FILE__), '..','..','assets','mexico-testcorpus', 'mexico')
63
+ @corpus = Mexico::FileSystem::Corpus.open(@basepath)
64
+ @corpus.resources[1].load
65
+ @document = @corpus.resources[1].document
66
+ end
67
+
68
+ # it 'should output RDF XML' do
69
+ # rdf = @document.to_rdf(:format => :rdfxml, :base_uri => 'http://phoibos.sfb673.org/corpora/',
70
+ # :prefixes => {:cats=>'http://cats.sfb673.org/',:phoibos=>'http://phoibos.sfb673.org/corpora/'})
71
+ # File.open(File.join(File.dirname(__FILE__), '..','..','assets','rdf-output','document.rdf'), 'w:utf-8') do |f|
72
+ # f << rdf
73
+ # end
74
+ # rdf.should_not be nil
75
+ # end
76
+
77
+ end
78
+
79
+ context 'Scale' do
80
+
81
+ before :each do
82
+ @basepath = File.join(File.dirname(__FILE__), '..','..','assets','mexico-testcorpus', 'mexico')
83
+ @corpus = Mexico::FileSystem::Corpus.open(@basepath)
84
+ @corpus.resources[1].load
85
+ @document = @corpus.resources[1].document
86
+ end
87
+
88
+ # it 'outputs correct rdf for scales' do
89
+ #
90
+ # puts "SCALE CLASS"
91
+ # puts "*" * 40
92
+ # puts Mexico::FileSystem::Scale.to_turtle
93
+ # puts "*" * 40
94
+ # puts @document.scales.first.to_turtle
95
+ # puts "*" * 40
96
+ #
97
+ #
98
+ # end
99
+
100
+ end
101
+
102
+ context 'B6 Document' do
103
+
104
+ before :each do
105
+ @basepath = File.join(File.dirname(__FILE__),'..','..','assets','fiesta', 'b6')
106
+ @filename = File.join @basepath, 'match_jones_161_CM_neu_checked.parsed.xml'
107
+ @document = ::Mexico::Fiesta::Interfaces::B6ChatGameInterface.instance.import(File.read(@filename))
108
+ puts "DCN: %s " % @document.class.name
109
+ @document.self_uri('http://phoibos.sfb673.org/corpora/example/b6.fst')
110
+ end
111
+
112
+ # it 'should output RDF XML' do
113
+ # rdf = @document.to_rdf(:format => :rdfxml, :base_uri => 'http://phoibos.sfb673.org/corpora/',
114
+ # :prefixes => {:cats=>'http://cats.sfb673.org/',:phoibos=>'http://phoibos.sfb673.org/corpora/'})
115
+ # File.open(File.join(File.dirname(__FILE__), '..','..','assets','rdf-output','b6.rdf'), 'w:utf-8') do |f|
116
+ # f << rdf
117
+ # end
118
+ # File.open(File.join(File.dirname(__FILE__), '..','..','assets','rdf-output','b6.fst'),'w') do |f|
119
+ # f << @document.to_xml
120
+ # end
121
+ # rdf.should_not be nil
122
+ # end
123
+
124
+ # it 'should output RDF Turtle' do
125
+ #
126
+ # # check document
127
+ #
128
+ # @document.items.each do |i|
129
+ # i.layer_links.each do |ll|
130
+ # puts "%s, %s" % [ll, ll.document]
131
+ # end
132
+ # end
133
+ #
134
+ # puts @document.self_uri
135
+ # # return
136
+ #
137
+ # asrdf = @document.as_rdf
138
+ # asrdf.statements.each do |s|
139
+ # puts s
140
+ # end
141
+ #
142
+ # rdf = @document.to_rdf(:format => :turtle, :base_uri => 'http://phoibos.sfb673.org/corpora/',
143
+ # :prefixes => {:cats=>'http://cats.sfb673.org/',:phoibos=>'http://phoibos.sfb673.org/corpora/'})
144
+ # File.open(File.join(File.dirname(__FILE__), '..','..','assets','rdf-output','b6.ttl'), 'w:utf-8') do |f|
145
+ # f << rdf
146
+ # end
147
+ # File.open(File.join(File.dirname(__FILE__), '..','..','assets','rdf-output','b6.fst'),'w') do |f|
148
+ # f << @document.to_xml
149
+ # end
150
+ # rdf.should_not be nil
151
+ # end
152
+
153
+ it 'converts all to RDF' do
154
+ dir = '/Users/pmenke/Dropbox/Work/b6/data_20_12_12/'
155
+
156
+ n = 1
157
+ Dir.open(dir).each do |f|
158
+ if f =~ /^*xml$/
159
+ puts f
160
+ filename = File.join dir, f
161
+ doc = ::Mexico::Fiesta::Interfaces::B6ChatGameInterface.instance.import(File.read(filename))
162
+ doc.identifier = n.to_s
163
+
164
+ rdf = doc.to_rdf(:format => :turtle, :base_uri => 'http://phoibos.sfb673.org/resources/',
165
+ :prefixes => {:cats=>'http://cats.sfb673.org/',:phoibos=>'http://phoibos.sfb673.org/resources/'})
166
+ File.open("#{filename}.ttl", 'w:utf-8') do |f|
167
+ f << rdf
168
+ end
169
+ puts "done"
170
+ n=n+1
171
+ end
172
+
173
+ end
174
+ end
175
+
176
+ end
177
+ end
@@ -0,0 +1,111 @@
1
+ # This file is part of the MExiCo gem.
2
+ # Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
3
+ # http://www.sfb673.org
4
+ #
5
+ # MExiCo 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
+ # MExiCo 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
16
+ # License along with MExiCo. If not, see
17
+ # <http://www.gnu.org/licenses/>.
18
+
19
+ require 'spec_helper'
20
+
21
+ describe Mexico::FileSystem::Resource do
22
+
23
+ # set up an initial corpus representation from the example file
24
+ before(:each) do
25
+ @basepath = File.join(File.dirname(__FILE__), '..','..','assets','mexico-testcorpus','utterance')
26
+ # @xml = File.open(File.join(@basepath,'Corpus.xml'),'rb') { |f| f.read }
27
+ @corpus = Mexico::FileSystem::Corpus.open(@basepath)
28
+ @resource = @corpus.resources.first
29
+ @local_file = @resource.local_files[0]
30
+ end
31
+
32
+ context 'any resource' do
33
+
34
+ it 'should provide access to (possibly zero) local files' do
35
+ @resource.should respond_to('local_files')
36
+ end
37
+
38
+ it 'should provide access to (possibly zero) URLs' do
39
+ @resource.should respond_to('urls')
40
+ end
41
+
42
+ it 'should return a collection when asked for local files' do
43
+ @resource.local_files.should be_kind_of(Enumerable)
44
+ end
45
+
46
+ it 'should return a collection when asked for urls' do
47
+ @resource.urls.should be_kind_of(Enumerable)
48
+ end
49
+
50
+ end
51
+
52
+ context 'the first example resource' do
53
+
54
+ it 'should have four local files' do
55
+ # puts '/\\/\\/\\/\\'
56
+ # puts @resource
57
+ # puts @resource.identifier
58
+ # puts @resource.local_files
59
+ # puts @resource.local_files.count
60
+ #
61
+
62
+ @resource.local_files.count.should eq(4)
63
+ end
64
+
65
+ context 'its design component links' do
66
+
67
+ it 'should link to correct dcs' do
68
+ @resource.design_component.should eq @corpus.designs[0].design_components[0]
69
+ end
70
+
71
+ end
72
+
73
+ context 'its local file' do
74
+
75
+ it 'should have some path' do
76
+ @resource.local_files[0].should respond_to(:path)
77
+ end
78
+
79
+ it 'should have the correct path value' do
80
+ @resource.local_files[0].path.should eq './video_files/utterance.mov'
81
+ end
82
+
83
+ it 'should resolve relative paths correctly' do
84
+ @local_file.should respond_to :absolute_path
85
+ @local_file.absolute_path.should match /^\/.*$/
86
+ end
87
+
88
+ it 'should tell whether there is an actual file at this path' do
89
+ @local_file.should respond_to :file_exists?
90
+ @local_file.file_exists?.should eq true
91
+ end
92
+
93
+ it 'should return a file handle for this path if there is an actual file' do
94
+ @local_file.should respond_to :file_handle
95
+ @local_file.file_handle.should be_kind_of(File)
96
+ end
97
+
98
+ it 'should tell the size of the actual file' do
99
+ @local_file.should respond_to :file_size
100
+ @local_file.file_size.should be_kind_of(Integer)
101
+ end
102
+
103
+ end
104
+
105
+ it 'should have one url' do
106
+ @resource.urls.count.should eq(0)
107
+ end
108
+
109
+ end
110
+
111
+ end
@@ -0,0 +1,129 @@
1
+ # This file is part of the MExiCo gem.
2
+ # Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
3
+ # http://www.sfb673.org
4
+ #
5
+ # MExiCo 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
+ # MExiCo 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
16
+ # License along with MExiCo. If not, see
17
+ # <http://www.gnu.org/licenses/>.
18
+
19
+ require 'spec_helper'
20
+
21
+ describe Mexico::FileSystem::Trial do
22
+
23
+ # set up an initial corpus representation from the example file
24
+ before(:each) do
25
+ @basepath = File.join(File.dirname(__FILE__), '..','..','assets','TESTCORPUS')
26
+ @xml = File.open(File.join(@basepath,'Corpus.xml'),'rb') { |f| f.read }
27
+ @corpus = Mexico::FileSystem::Corpus.from_xml(@xml, {:path => @basepath})
28
+ @design = @corpus.designs.first
29
+ @other_design = @corpus.designs[1]
30
+ @trial = @corpus.trials.first
31
+ end
32
+
33
+ context "Attributes" do
34
+
35
+ context "identifier" do
36
+
37
+ it "should have accessor methods" do
38
+ @trial.should respond_to(:identifier, :identifier=)
39
+ end
40
+
41
+ it "should have the right type" do
42
+ @trial.identifier.kind_of?(String).should be true
43
+ @trial.identifier.should match /^\w[-\w\d_]*$/
44
+ end
45
+
46
+ it "should have the correct value" do
47
+ @trial.identifier.should eq "example-trial"
48
+ end
49
+
50
+ end
51
+
52
+ context "name" do
53
+
54
+ it "should have accessor methods" do
55
+ @trial.should respond_to(:name, :name=)
56
+ end
57
+
58
+ it "should have the right type" do
59
+ @trial.name.kind_of?(String).should be true
60
+ end
61
+
62
+ it "should have the correct value" do
63
+ @trial.name.should eq "Example Trial"
64
+ end
65
+
66
+ end
67
+
68
+ context "description" do
69
+
70
+ it "should have accessor methods" do
71
+ @trial.should respond_to(:description, :description=)
72
+ end
73
+
74
+ it "should have the right type" do
75
+ @trial.description.kind_of?(String).should be true
76
+ end
77
+
78
+ it "should have the correct value" do
79
+ @trial.description.should eq "Trial Description"
80
+ end
81
+
82
+ end
83
+
84
+ context "running_number" do
85
+
86
+ it "should have accessor methods" do
87
+ @trial.should respond_to(:running_number, :running_number=)
88
+ end
89
+
90
+ it "should have the right type" do
91
+ @trial.running_number.kind_of?(Integer).should be true
92
+ end
93
+
94
+ it "should have the correct value" do
95
+ @trial.running_number.should eq 1
96
+ end
97
+
98
+
99
+ end
100
+
101
+
102
+ end
103
+
104
+
105
+ context "Aggregated components" do
106
+
107
+ it "should respond to id method" do
108
+ @trial.should respond_to(:design_id)
109
+ end
110
+
111
+ it "should respond to object getter method" do
112
+ @trial.should respond_to(:design)
113
+ end
114
+
115
+ it "should deliver the correct design object" do
116
+ @trial.design.identifier.should eq @design.identifier
117
+ @trial.design.name.should eq @design.name
118
+ @trial.design.description.should eq @design.description
119
+ end
120
+
121
+ it "should, upon change, use the correct design object" do
122
+ @trial.design.identifier.should eq @design.identifier
123
+ @trial.design=@other_design
124
+ @trial.design.identifier.should eq @other_design.identifier
125
+ end
126
+
127
+ end
128
+
129
+ end
@@ -0,0 +1,14 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper.rb"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+
8
+ require 'mexico.rb'
9
+
10
+ RSpec.configure do |config|
11
+ config.treat_symbols_as_metadata_keys_with_true_values = true
12
+ config.run_all_when_everything_filtered = true
13
+ config.filter_run :focus
14
+ end
@@ -0,0 +1,82 @@
1
+ # This file is part of the MExiCo gem.
2
+ # Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
3
+ # http://www.sfb673.org
4
+ #
5
+ # MExiCo 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
+ # MExiCo 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
16
+ # License along with MExiCo. If not, see
17
+ # <http://www.gnu.org/licenses/>.
18
+
19
+ require 'spec_helper'
20
+
21
+ describe Mexico::FileSystem::FiestaDocument do
22
+
23
+ before(:each) do
24
+ @testfile = File.join(File.dirname(__FILE__), '..','..','assets','out_only')
25
+ #@basepath = File.join(File.dirname(__FILE__), '..','..','assets','mexico-testcorpus','structured')
26
+ #@xml = File.open(File.join(@basepath,'Corpus.xml'),'rb') { |f| f.read }
27
+ #@corpus = Mexico::FileSystem::Corpus.from_xml(@xml, {:path => @basepath})
28
+ #@resource = @corpus.resources[1]
29
+ end
30
+
31
+ context 'writes a correct ToE structure' do
32
+
33
+ it 'to a local file' do
34
+ @toe_doc = Mexico::FileSystem::FiestaDocument.new
35
+ @toe_doc.add_standard_timeline('s')
36
+ @timeline = @toe_doc.scales.first
37
+ (1..4).each do |x|
38
+ @toe_doc.layers << Mexico::FileSystem::Layer.new(identifier: "layer0#{x}", name: "Layer #{x}")
39
+ end
40
+ # @todo add layer hierarchies
41
+ vals = %w(yes all work and no play makes jack andsoon)
42
+ (1..8).each do |n|
43
+ puts @toe_doc.class.name
44
+ @toe_doc.add_item(Mexico::FileSystem::Item.new(identifier: "i#{n}")) do |i|
45
+ i.data = Mexico::FileSystem::Data.new(string_value: vals[n-1])
46
+ end
47
+ end
48
+
49
+ # create predecessors and successors
50
+ (0..6).each do |n|
51
+ puts "i 1 exists? %s" % @toe_doc.items[n]
52
+ puts "i 2 exists? %s" % @toe_doc.items[n+1]
53
+ @toe_doc.items[n].item_links << Mexico::FileSystem::ItemLink.new(target_object: @toe_doc.items[n+1], role: 'successor')
54
+ @toe_doc.items[n+1].item_links << Mexico::FileSystem::ItemLink.new(target_object: @toe_doc.items[n], role: 'predecessor')
55
+ end
56
+
57
+ # points, first layer
58
+ (0..3).each do |n|
59
+ @toe_doc.items[n].point_links << Mexico::FileSystem::PointLink.new(target_object: @timeline, point: 100.0*(n+1))
60
+ @toe_doc.items[n].layer_links << Mexico::FileSystem::LayerLink.new(target_object: @toe_doc.layers[0])
61
+ end
62
+
63
+ # points, first layer
64
+ (4..7).each do |n|
65
+ @toe_doc.items[n].interval_links << Mexico::FileSystem::IntervalLink.new(target_object: @timeline, min: 100.0*(n+1), max: 100.0*(n+2))
66
+ @toe_doc.items[n].layer_links << Mexico::FileSystem::LayerLink.new(target_object: @toe_doc.layers[1])
67
+ end
68
+
69
+ File.open(File.join(@testfile,'construct_and_write_spec.toe'), "w:utf-8") do |file|
70
+ xml_node = @toe_doc.to_xml
71
+ xml_node['xmlns:xsi'] = "http://www.w3.org/2001/XMLSchema-instance"
72
+ xml_node['xsi:noNamespaceSchemaLocation'] = "../../xml/schema/fiesta.xsd"
73
+
74
+ puts "Atts: %s" % xml_node.attributes
75
+ file << xml_node
76
+ end
77
+ @toe_doc.should_not be_nil
78
+ end
79
+
80
+ end
81
+
82
+ end
@@ -0,0 +1,110 @@
1
+ # This file is part of the MExiCo gem.
2
+ # Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
3
+ # http://www.sfb673.org
4
+ #
5
+ # MExiCo 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
+ # MExiCo 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
16
+ # License along with MExiCo. If not, see
17
+ # <http://www.gnu.org/licenses/>.
18
+
19
+ require 'spec_helper'
20
+
21
+ describe Mexico::FileSystem::FiestaDocument do
22
+
23
+ before(:each) do
24
+ @basepath = File.join(File.dirname(__FILE__), '..','..','assets','mexico-testcorpus','structured')
25
+ @xml = File.open(File.join(@basepath,'Corpus.xml'),'rb') { |f| f.read }
26
+ @corpus = Mexico::FileSystem::Corpus.from_xml(@xml, {:path => @basepath})
27
+ @resource = @corpus.resources[1]
28
+ end
29
+
30
+ context 'should yield a correct xml representation when constructed from scratch' do
31
+
32
+ it 'has a local file' do
33
+ local_file = @resource.local_files[0]
34
+ end
35
+
36
+ it 'can read annotation data' do
37
+ @resource.load.should_not eq nil
38
+ end
39
+
40
+ it 'has two items' do
41
+ @resource.load
42
+ @resource.document.items.size.should be 2
43
+ end
44
+
45
+ it 'responds to the item link collection' do
46
+ @resource.load.items[0].should respond_to :item_links
47
+ end
48
+ it 'responds to the layer link collection' do
49
+ @resource.load.items[0].should respond_to :layer_links
50
+ end
51
+
52
+ it 'responds to the interval link collection' do
53
+ @resource.load.items[0].should respond_to :interval_links
54
+ end
55
+
56
+ it 'responds to the point link collection' do
57
+ @resource.load.items[0].should respond_to :point_links
58
+ end
59
+
60
+ it 'has items with correct number of linked layers' do
61
+ @resource.load
62
+ (0..1).each do |n|
63
+ @resource.document.items[n].layer_links.size.should eq 1
64
+ end
65
+ end
66
+
67
+ it 'has items with correctly linked layers' do
68
+ @resource.load
69
+ (0..1).each do |n|
70
+ @resource.document.items[n].layer_links[0].target_object.should eq @resource.document.layers[0]
71
+ end
72
+ end
73
+
74
+ it 'has items with correct number of linked items' do
75
+ @resource.load
76
+ (0..1).each do |n|
77
+ @resource.document.items[n].item_links.size.should eq 1
78
+ end
79
+ end
80
+
81
+ context 'has items with correctly linked other-items' do
82
+
83
+ it "has first item with correct item target" do
84
+ @resource.load
85
+ puts "i0 : %s" % @resource.document.items[0].object_id
86
+ puts "i1 : %s" % @resource.document.items[1].object_id
87
+ puts "i0 link t: %s" % @resource.document.items[0].item_links[0].target_object.object_id
88
+ puts "i1 link t: %s" % @resource.document.items[1].item_links[0].target_object.object_id
89
+ @resource.document.items[0].item_links[0].target_object.should eq @resource.document.items[1]
90
+ end
91
+
92
+ it "has second item with correct item target" do
93
+ @resource.load
94
+ @resource.document.items[1].item_links[0].target_object.should eq @resource.document.items[0]
95
+ end
96
+
97
+ it "has first item with correct role" do
98
+ @resource.load
99
+ @resource.document.items[0].item_links[0].role.should eq "successor"
100
+ end
101
+
102
+ it "has second item with correct role" do
103
+ @resource.load
104
+ @resource.document.items[1].item_links[0].role.should eq "predecessor"
105
+ end
106
+ end
107
+
108
+ end
109
+
110
+ end
@@ -0,0 +1,58 @@
1
+ # This file is part of the MExiCo gem.
2
+ # Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
3
+ # http://www.sfb673.org
4
+ #
5
+ # MExiCo 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
+ # MExiCo 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
16
+ # License along with MExiCo. If not, see
17
+ # <http://www.gnu.org/licenses/>.
18
+
19
+ require 'spec_helper'
20
+
21
+ describe Mexico::FileSystem::Item do
22
+
23
+ before(:each) do
24
+ @basepath = File.join(File.dirname(__FILE__), '..','..','assets','mexico-testcorpus','mexico')
25
+ @corpus = Mexico::FileSystem::Corpus.open(@basepath)
26
+ @trans_resource = @corpus.resources[1]
27
+ @anno_file = @trans_resource.local_files.find{ |i| i.identifier=="mexico-transcription-toe" }
28
+ @trans_resource.load
29
+ @annodoc = @trans_resource.document
30
+ @i = @annodoc.items[0]
31
+ end
32
+
33
+
34
+ it "has an items collection" do
35
+ @trans_resource.should_not eq nil
36
+ @trans_resource.document.should_not eq nil
37
+ @trans_resource.document.should respond_to(:items)
38
+ end
39
+
40
+ it "has twelve items inside the collection" do
41
+ @annodoc.items.size.should be 12
42
+ end
43
+
44
+ it "has a first item with working accessors" do
45
+ @i.should respond_to(:identifier)
46
+ @i.should respond_to(:data)
47
+ end
48
+
49
+ it 'has the correct identifier' do
50
+ @i.identifier.should eq 'i1'
51
+ puts "Data: %s" % @i.data
52
+ puts "String: %s" % @i.data.string_value
53
+ puts "Int: %s" % @i.data.int_value
54
+
55
+ end
56
+
57
+
58
+ end