mexico 0.0.9

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 (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,104 @@
1
+ File type = "ooTextFile"
2
+ Object class = "TextGrid"
3
+
4
+ xmin = 0
5
+ xmax = 1.0120861678004536
6
+ tiers? <exists>
7
+ size = 4
8
+ item []:
9
+ item [1]:
10
+ class = "IntervalTier"
11
+ name = "silences"
12
+ xmin = 0
13
+ xmax = 1.0120861678004536
14
+ intervals: size = 2
15
+ intervals [1]:
16
+ xmin = 0
17
+ xmax = 0.13804308390022677
18
+ text = "silent"
19
+ intervals [2]:
20
+ xmin = 0.13804308390022677
21
+ xmax = 1.0120861678004536
22
+ text = "sounding"
23
+ item [2]:
24
+ class = "IntervalTier"
25
+ name = "phonemes"
26
+ xmin = 0
27
+ xmax = 1.0120861678004536
28
+ intervals: size = 8
29
+ intervals [1]:
30
+ xmin = 0
31
+ xmax = 0.13804308390022677
32
+ text = ""
33
+ intervals [2]:
34
+ xmin = 0.13804308390022677
35
+ xmax = 0.24419133996563067
36
+ text = "m"
37
+ intervals [3]:
38
+ xmin = 0.24419133996563067
39
+ xmax = 0.37770980345703364
40
+ text = "\ef"
41
+ intervals [4]:
42
+ xmin = 0.37770980345703364
43
+ xmax = 0.5203023372828038
44
+ text = "ks"
45
+ intervals [5]:
46
+ xmin = 0.5203023372828038
47
+ xmax = 0.6110430406264757
48
+ text = "\ic"
49
+ intervals [6]:
50
+ xmin = 0.6110430406264757
51
+ xmax = 0.745209651998905
52
+ text = "k"
53
+ intervals [7]:
54
+ xmin = 0.745209651998905
55
+ xmax = 0.9247466150431701
56
+ text = "o"
57
+ intervals [8]:
58
+ xmin = 0.9247466150431701
59
+ xmax = 1.0120861678004536
60
+ text = ""
61
+ item [3]:
62
+ class = "IntervalTier"
63
+ name = "syllables"
64
+ xmin = 0
65
+ xmax = 1.0120861678004536
66
+ intervals: size = 5
67
+ intervals [1]:
68
+ xmin = 0
69
+ xmax = 0.13804308390022677
70
+ text = ""
71
+ intervals [2]:
72
+ xmin = 0.13804308390022677
73
+ xmax = 0.37770980345703364
74
+ text = "me"
75
+ intervals [3]:
76
+ xmin = 0.37770980345703364
77
+ xmax = 0.6110430406264757
78
+ text = "xi"
79
+ intervals [4]:
80
+ xmin = 0.6110430406264757
81
+ xmax = 0.9247466150431701
82
+ text = "co"
83
+ intervals [5]:
84
+ xmin = 0.9247466150431701
85
+ xmax = 1.0120861678004536
86
+ text = ""
87
+ item [4]:
88
+ class = "IntervalTier"
89
+ name = "words"
90
+ xmin = 0
91
+ xmax = 1.0120861678004536
92
+ intervals: size = 3
93
+ intervals [1]:
94
+ xmin = 0
95
+ xmax = 0.13804308390022677
96
+ text = ""
97
+ intervals [2]:
98
+ xmin = 0.13804308390022677
99
+ xmax = 0.9247466150431701
100
+ text = "mexico"
101
+ intervals [3]:
102
+ xmin = 0.9247466150431701
103
+ xmax = 1.0120861678004536
104
+ text = ""
@@ -0,0 +1,29 @@
1
+ class CollectionRefHandler < YARD::Handlers::Ruby::AttributeHandler
2
+
3
+ handles method_call(:collection_ref)
4
+ namespace_only
5
+
6
+ def process
7
+ # push_state(:scope => :class) { super }
8
+ name = statement.parameters.first.jump(:tstring_content, :ident).source
9
+ get_object = YARD::CodeObjects::MethodObject.new(namespace, name)
10
+ register(get_object)
11
+ current_object_type = nil
12
+ get_object.dynamic = true
13
+ if get_object.docstring.to_s.strip =~ /type\s+(.*)/
14
+ current_object_type = $1
15
+ get_object.docstring = "Gets the #{name} object via the #{name}_id reference."
16
+ get_object.docstring.add_tag(YARD::Tags::Tag.new("return","The referenced #{name} object", current_object_type))
17
+
18
+ set_object = YARD::CodeObjects::MethodObject.new(namespace, "#{name}=")
19
+ register(set_object)
20
+ set_object.dynamic = true
21
+ set_object.parameters= [ ['new_value', nil] ]
22
+ set_object.docstring = "Sets the the #{name} object and updates the #{name}_id reference."
23
+ set_object.docstring.add_tag(YARD::Tags::Tag.new("return", "", "void"))
24
+ set_object.docstring.add_tag(YARD::Tags::Tag.new(:param, "The new value to be set", current_object_type, 'new_value'))
25
+ end
26
+
27
+ end
28
+
29
+ end
@@ -0,0 +1,29 @@
1
+ class IdRefHandler < YARD::Handlers::Ruby::AttributeHandler
2
+
3
+ handles method_call(:id_ref)
4
+ namespace_only
5
+
6
+ def process
7
+ # push_state(:scope => :class) { super }
8
+ name = statement.parameters.first.jump(:tstring_content, :ident).source
9
+ get_object = YARD::CodeObjects::MethodObject.new(namespace, name)
10
+ register(get_object)
11
+ current_object_type = nil
12
+ get_object.dynamic = true
13
+ if get_object.docstring.to_s.strip =~ /type\s+(.*)/
14
+ current_object_type = $1
15
+ get_object.docstring = "Gets the #{name} object via the #{name}_id reference."
16
+ get_object.docstring.add_tag(YARD::Tags::Tag.new("return","The referenced #{name} object", current_object_type))
17
+
18
+ set_object = YARD::CodeObjects::MethodObject.new(namespace, "#{name}=")
19
+ register(set_object)
20
+ set_object.dynamic = true
21
+ set_object.parameters= [ ['new_value', nil] ]
22
+ set_object.docstring = "Sets the the #{name} object and updates the #{name}_id reference."
23
+ set_object.docstring.add_tag(YARD::Tags::Tag.new("return", "", "void"))
24
+ set_object.docstring.add_tag(YARD::Tags::Tag.new(:param, "The new value to be set", current_object_type, 'new_value'))
25
+ end
26
+
27
+ end
28
+
29
+ end
@@ -0,0 +1,57 @@
1
+ class RoxmlAttributeHandler < YARD::Handlers::Ruby::AttributeHandler
2
+
3
+ ID_DESC = <<FOO
4
+ An identifier is a string compatible with common ID types
5
+ as in, for instance, XML Schema.
6
+ identifier fields must be unique throughout a corpus document
7
+ (or a corpus object tree).
8
+ FOO
9
+
10
+ handles method_call(:xml_accessor)
11
+ namespace_only
12
+
13
+ def process
14
+ # push_state(:scope => :class) { super }
15
+
16
+ name = statement.parameters.first.jump(:tstring_content, :ident).source
17
+ object = YARD::CodeObjects::MethodObject.new(namespace, name)
18
+ register(object)
19
+
20
+ setter_string = nil
21
+ current_object_type = nil
22
+
23
+ if object.docstring.to_s.strip =~ /identifier/
24
+ current_object_type = "String"
25
+ object.dynamic = true
26
+ object.docstring = "Gets the identifier of this object. #{ID_DESC}"
27
+ object.docstring.add_tag(YARD::Tags::Tag.new("return","The current value of the #{name} field.", current_object_type))
28
+ setter_string = "Sets the identifier for this object. #{ID_DESC}"
29
+ end
30
+
31
+ if object.docstring.to_s.strip =~ /.*type\s+(.*)/
32
+ current_object_type = $1
33
+ object.dynamic = true
34
+ object.docstring = "XML-bound getter method for the #{name} field."
35
+ object.docstring.add_tag(YARD::Tags::Tag.new("return","The current value of the #{name} field.", current_object_type))
36
+ setter_string = "XML-bound setter method for the #{name} field."
37
+ end
38
+
39
+ if object.docstring.to_s.strip =~ /.*collection of\s+(.*)/
40
+ object.dynamic = true
41
+ object.docstring = "XML-bound getter method for the #{name} collection of #{$1} objects."
42
+ current_object_type = "[#{$1}]"
43
+ object.docstring.add_tag(YARD::Tags::Tag.new("return","The current value of the #{name} field.", current_object_type))
44
+ setter_string = "XML-bound setter method for the #{name} collection of #{$1} objects."
45
+ end
46
+
47
+ setter_object = YARD::CodeObjects::MethodObject.new(namespace, "#{name}=")
48
+ register(setter_object)
49
+ setter_object.dynamic = true
50
+ setter_object.parameters= [ ['new_value', nil] ]
51
+ setter_object.docstring = setter_string || "Sets the XML-bound field '#{name}'."
52
+ setter_object.docstring.add_tag(YARD::Tags::Tag.new("return", "", "void"))
53
+ setter_object.docstring.add_tag(YARD::Tags::Tag.new(:param, "The new value to be set", current_object_type, 'new_value'))
54
+
55
+ end
56
+
57
+ end
@@ -0,0 +1,99 @@
1
+ <FiestaDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xml/schema/fiesta.xsd">
2
+ <ScaleSet>
3
+ <Scale id="timeline01" name="Timeline" unit="s"/>
4
+ </ScaleSet>
5
+ <LayerSet>
6
+ <Layer id="layer01" name="Layer 1"/>
7
+ <Layer id="layer02" name="Layer 2"/>
8
+ <Layer id="layer03" name="Layer 3"/>
9
+ <Layer id="layer04" name="Layer 4"/>
10
+ </LayerSet>
11
+ <ItemSet>
12
+ <Item id="i1">
13
+ <Links>
14
+ <ItemLink role="successor" target="i2"/>
15
+ <LayerLink target="layer01"/>
16
+ <PointLink point="100.0" target="timeline01"/>
17
+ </Links>
18
+ <Data>
19
+ <String>yes</String>
20
+ </Data>
21
+ </Item>
22
+ <Item id="i2">
23
+ <Links>
24
+ <ItemLink role="predecessor" target="i1"/>
25
+ <ItemLink role="successor" target="i3"/>
26
+ <LayerLink target="layer01"/>
27
+ <PointLink point="200.0" target="timeline01"/>
28
+ </Links>
29
+ <Data>
30
+ <String>all</String>
31
+ </Data>
32
+ </Item>
33
+ <Item id="i3">
34
+ <Links>
35
+ <ItemLink role="predecessor" target="i2"/>
36
+ <ItemLink role="successor" target="i4"/>
37
+ <LayerLink target="layer01"/>
38
+ <PointLink point="300.0" target="timeline01"/>
39
+ </Links>
40
+ <Data>
41
+ <String>work</String>
42
+ </Data>
43
+ </Item>
44
+ <Item id="i4">
45
+ <Links>
46
+ <ItemLink role="predecessor" target="i3"/>
47
+ <ItemLink role="successor" target="i5"/>
48
+ <LayerLink target="layer01"/>
49
+ <PointLink point="400.0" target="timeline01"/>
50
+ </Links>
51
+ <Data>
52
+ <String>and</String>
53
+ </Data>
54
+ </Item>
55
+ <Item id="i5">
56
+ <Links>
57
+ <ItemLink role="predecessor" target="i4"/>
58
+ <ItemLink role="successor" target="i6"/>
59
+ <LayerLink target="layer02"/>
60
+ <IntervalLink min="500.0" max="600.0" target="timeline01"/>
61
+ </Links>
62
+ <Data>
63
+ <String>no</String>
64
+ </Data>
65
+ </Item>
66
+ <Item id="i6">
67
+ <Links>
68
+ <ItemLink role="predecessor" target="i5"/>
69
+ <ItemLink role="successor" target="i7"/>
70
+ <LayerLink target="layer02"/>
71
+ <IntervalLink min="600.0" max="700.0" target="timeline01"/>
72
+ </Links>
73
+ <Data>
74
+ <String>play</String>
75
+ </Data>
76
+ </Item>
77
+ <Item id="i7">
78
+ <Links>
79
+ <ItemLink role="predecessor" target="i6"/>
80
+ <ItemLink role="successor" target="i8"/>
81
+ <LayerLink target="layer02"/>
82
+ <IntervalLink min="700.0" max="800.0" target="timeline01"/>
83
+ </Links>
84
+ <Data>
85
+ <String>makes</String>
86
+ </Data>
87
+ </Item>
88
+ <Item id="i8">
89
+ <Links>
90
+ <ItemLink role="predecessor" target="i7"/>
91
+ <LayerLink target="layer02"/>
92
+ <IntervalLink min="800.0" max="900.0" target="timeline01"/>
93
+ </Links>
94
+ <Data>
95
+ <String>jack</String>
96
+ </Data>
97
+ </Item>
98
+ </ItemSet>
99
+ </FiestaDocument>