Fix graphml output / input format
Tara L Andrews [Sun, 2 Oct 2011 00:08:38 +0000 (02:08 +0200)]
.gitignore
Tradition.bbprojectd/tla.bbprojectsettings [deleted file]
lib/Text/Tradition.pm
lib/Text/Tradition/Collation.pm
lib/Text/Tradition/Collation/Reading.pm
lib/Text/Tradition/Parser/GraphML.pm
lib/Text/Tradition/Parser/Self.pm
make_tradition.pl [changed mode: 0644->0755]

index 91d1e48..cca283e 100644 (file)
@@ -1,2 +1,3 @@
 *~
 data
+Tradition.bbprojectd/tla.bbprojectsettings
diff --git a/Tradition.bbprojectd/tla.bbprojectsettings b/Tradition.bbprojectd/tla.bbprojectsettings
deleted file mode 100644 (file)
index d363f44..0000000
+++ /dev/null
@@ -1,855 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-       <key>EmbeddedEditorHidden:tla</key>
-       <false/>
-       <key>ExpandedEditorWidth:tla:displays([(0, 0), (1440, 900)])</key>
-       <integer>788</integer>
-       <key>ExpandedItems:tla</key>
-       <array>
-               <string>BA45EE3F-4E79-4734-A808-E988ECE32C18</string>
-               <dict>
-                       <key>AliasData</key>
-                       <data>
-                       AAAAAAGYAAIAAQxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADK
-                       PI0jSCsAAAAIMZoJVHJhZGl0aW9uAAAAAAAAAAAAAAAAAAAAAAAA
-                       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgx
-                       m8pUoC8AAAAAAAAAAP////8AAAkgAAAAAAAAAAAAAAAAAAAABFRl
-                       eHQAEAAIAADKPHEDAAAAEQAIAADKVIQPAAAAAQAYAAgxmgAIMZkA
-                       CC6IAAckkwAFBAYAAL8xAAIARU1hY2ludG9zaCBIRDpVc2VyczoA
-                       dGxhOgBQcm9qZWN0czoAc3RlbW1hdG9sb2d5OgBsaWI6AFRleHQ6
-                       AFRyYWRpdGlvbgAADgAUAAkAVAByAGEAZABpAHQAaQBvAG4ADwAa
-                       AAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgAyVXNlcnMvdGxh
-                       L1Byb2plY3RzL3N0ZW1tYXRvbG9neS9saWIvVGV4dC9UcmFkaXRp
-                       b24AEwABLwAAFQACAAr//wAA
-                       </data>
-                       <key>FileURL</key>
-                       <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/</string>
-                       <key>TypeID</key>
-                       <string>_CFileLocator</string>
-                       <key>Version</key>
-                       <integer>1</integer>
-               </dict>
-               <dict>
-                       <key>AliasData</key>
-                       <data>
-                       AAAAAAG2AAIAAQxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADK
-                       PI0jSCsAAAAIMZsJQ29sbGF0aW9uAAAAAAAAAAAAAAAAAAAAAAAA
-                       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgx
-                       nMovk3cAAAAAAAAAAP////8AAAkgAAAAAAAAAAAAAAAAAAAACVRy
-                       YWRpdGlvbgAAEAAIAADKPHEDAAAAEQAIAADKL3dXAAAAAQAcAAgx
-                       mwAIMZoACDGZAAguiAAHJJMABQQGAAC/MQACAFBNYWNpbnRvc2gg
-                       SEQ6VXNlcnM6AHRsYToAUHJvamVjdHM6AHN0ZW1tYXRvbG9neToA
-                       bGliOgBUZXh0OgBUcmFkaXRpb246AENvbGxhdGlvbgAOABQACQBD
-                       AG8AbABsAGEAdABpAG8AbgAPABoADABNAGEAYwBpAG4AdABvAHMA
-                       aAAgAEgARAASADxVc2Vycy90bGEvUHJvamVjdHMvc3RlbW1hdG9s
-                       b2d5L2xpYi9UZXh0L1RyYWRpdGlvbi9Db2xsYXRpb24AEwABLwAA
-                       FQACAAr//wAA
-                       </data>
-                       <key>FileURL</key>
-                       <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Collation/</string>
-                       <key>TypeID</key>
-                       <string>_CFileLocator</string>
-                       <key>Version</key>
-                       <integer>1</integer>
-               </dict>
-               <dict>
-                       <key>AliasData</key>
-                       <data>
-                       AAAAAAGsAAIAAQxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADK
-                       PI0jSCsAAAAIMZsGUGFyc2VyAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgx
-                       pMpezGEAAAAAAAAAAP////8AAAkgAAAAAAAAAAAAAAAAAAAACVRy
-                       YWRpdGlvbgAAEAAIAADKPHEDAAAAEQAIAADKXrBBAAAAAQAcAAgx
-                       mwAIMZoACDGZAAguiAAHJJMABQQGAAC/MQACAE1NYWNpbnRvc2gg
-                       SEQ6VXNlcnM6AHRsYToAUHJvamVjdHM6AHN0ZW1tYXRvbG9neToA
-                       bGliOgBUZXh0OgBUcmFkaXRpb246AFBhcnNlcgAADgAOAAYAUABh
-                       AHIAcwBlAHIADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQA
-                       EgA5VXNlcnMvdGxhL1Byb2plY3RzL3N0ZW1tYXRvbG9neS9saWIv
-                       VGV4dC9UcmFkaXRpb24vUGFyc2VyAAATAAEvAAAVAAIACv//AAA=
-                       </data>
-                       <key>FileURL</key>
-                       <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Parser/</string>
-                       <key>TypeID</key>
-                       <string>_CFileLocator</string>
-                       <key>Version</key>
-                       <integer>1</integer>
-               </dict>
-       </array>
-       <key>FileFilterID:tla</key>
-       <string>msng</string>
-       <key>OpenDocuments:tla</key>
-       <array>
-               <dict>
-                       <key>AliasData</key>
-                       <data>
-                       AAAAAAG2AAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADK
-                       PI0jSCsAAAAIMZsJU3RlbW1hLnBtAAAAAAAAAAAAAAAAAAAAAAAA
-                       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvk
-                       9so6UGBURVhUAAAAAP////8AAAkgAAAAAAAAAAAAAAAAAAAACVRy
-                       YWRpdGlvbgAAEAAIAADKPHEDAAAAEQAIAADKOjRAAAAAAQAcAAgx
-                       mwAIMZoACDGZAAguiAAHJJMABQQGAAC/MQACAFBNYWNpbnRvc2gg
-                       SEQ6VXNlcnM6AHRsYToAUHJvamVjdHM6AHN0ZW1tYXRvbG9neToA
-                       bGliOgBUZXh0OgBUcmFkaXRpb246AFN0ZW1tYS5wbQAOABQACQBT
-                       AHQAZQBtAG0AYQAuAHAAbQAPABoADABNAGEAYwBpAG4AdABvAHMA
-                       aAAgAEgARAASADxVc2Vycy90bGEvUHJvamVjdHMvc3RlbW1hdG9s
-                       b2d5L2xpYi9UZXh0L1RyYWRpdGlvbi9TdGVtbWEucG0AEwABLwAA
-                       FQACAAr//wAA
-                       </data>
-                       <key>FileURL</key>
-                       <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Stemma.pm</string>
-                       <key>RelativePath</key>
-                       <string>./lib/Text/Tradition/Stemma.pm</string>
-                       <key>TypeID</key>
-                       <string>_CFileLocator</string>
-                       <key>Version</key>
-                       <integer>1</integer>
-               </dict>
-               <dict>
-                       <key>AliasData</key>
-                       <data>
-                       AAAAAAHEAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADK
-                       PI0jSCsAAAAIMZsMQ29sbGF0aW9uLnBtAAAAAAAAAAAAAAAAAAAA
-                       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxu
-                       8MphvU5URVhUAAAAAP////8AAAkgAAAAAAAAAAAAAAAAAAAACVRy
-                       YWRpdGlvbgAAEAAIAADKPHEDAAAAEQAIAADKYaEuAAAAAQAcAAgx
-                       mwAIMZoACDGZAAguiAAHJJMABQQGAAC/MQACAFNNYWNpbnRvc2gg
-                       SEQ6VXNlcnM6AHRsYToAUHJvamVjdHM6AHN0ZW1tYXRvbG9neToA
-                       bGliOgBUZXh0OgBUcmFkaXRpb246AENvbGxhdGlvbi5wbQAADgAa
-                       AAwAQwBvAGwAbABhAHQAaQBvAG4ALgBwAG0ADwAaAAwATQBhAGMA
-                       aQBuAHQAbwBzAGgAIABIAEQAEgA/VXNlcnMvdGxhL1Byb2plY3Rz
-                       L3N0ZW1tYXRvbG9neS9saWIvVGV4dC9UcmFkaXRpb24vQ29sbGF0
-                       aW9uLnBtAAATAAEvAAAVAAIACv//AAA=
-                       </data>
-                       <key>FileURL</key>
-                       <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Collation.pm</string>
-                       <key>RelativePath</key>
-                       <string>./lib/Text/Tradition/Collation.pm</string>
-                       <key>TypeID</key>
-                       <string>_CFileLocator</string>
-                       <key>Version</key>
-                       <integer>1</integer>
-               </dict>
-               <dict>
-                       <key>AliasData</key>
-                       <data>
-                       AAAAAAHUAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADK
-                       PI0jSCsAAAAIMZwKUmVhZGluZy5wbQAAAAAAAAAAAAAAAAAAAAAA
-                       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv8
-                       WMoshoNURVhUAAAAAP////8AAAkgAAAAAAAAAAAAAAAAAAAACUNv
-                       bGxhdGlvbgAAEAAIAADKPHEDAAAAEQAIAADKLGpjAAAAAQAgAAgx
-                       nAAIMZsACDGaAAgxmQAILogABySTAAUEBgAAvzEAAgBcTWFjaW50
-                       b3NoIEhEOlVzZXJzOgB0bGE6AFByb2plY3RzOgBzdGVtbWF0b2xv
-                       Z3k6AGxpYjoAVGV4dDoAVHJhZGl0aW9uOgBDb2xsYXRpb246AFJl
-                       YWRpbmcucG0ADgAWAAoAUgBlAGEAZABpAG4AZwAuAHAAbQAPABoA
-                       DABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAEdVc2Vycy90bGEv
-                       UHJvamVjdHMvc3RlbW1hdG9sb2d5L2xpYi9UZXh0L1RyYWRpdGlv
-                       bi9Db2xsYXRpb24vUmVhZGluZy5wbQAAEwABLwAAFQACAAr//wAA
-                       </data>
-                       <key>FileURL</key>
-                       <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Collation/Reading.pm</string>
-                       <key>RelativePath</key>
-                       <string>./lib/Text/Tradition/Collation/Reading.pm</string>
-                       <key>TypeID</key>
-                       <string>_CFileLocator</string>
-                       <key>Version</key>
-                       <integer>1</integer>
-               </dict>
-               <dict>
-                       <key>AliasData</key>
-                       <data>
-                       AAAAAAG6AAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADK
-                       PI0jSCsAAAAIMaQGVEVJLnBtAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJQ
-                       SMp/M1tURVhUAAAAAP////8AAAkgAAAAAAAAAAAAAAAAAAAABlBh
-                       cnNlcgAQAAgAAMo8cQMAAAARAAgAAMp/FzsAAAABACAACDGkAAgx
-                       mwAIMZoACDGZAAguiAAHJJMABQQGAAC/MQACAFVNYWNpbnRvc2gg
-                       SEQ6VXNlcnM6AHRsYToAUHJvamVjdHM6AHN0ZW1tYXRvbG9neToA
-                       bGliOgBUZXh0OgBUcmFkaXRpb246AFBhcnNlcjoAVEVJLnBtAAAO
-                       AA4ABgBUAEUASQAuAHAAbQAPABoADABNAGEAYwBpAG4AdABvAHMA
-                       aAAgAEgARAASAEBVc2Vycy90bGEvUHJvamVjdHMvc3RlbW1hdG9s
-                       b2d5L2xpYi9UZXh0L1RyYWRpdGlvbi9QYXJzZXIvVEVJLnBtABMA
-                       AS8AABUAAgAK//8AAA==
-                       </data>
-                       <key>FileURL</key>
-                       <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Parser/TEI.pm</string>
-                       <key>RelativePath</key>
-                       <string>./lib/Text/Tradition/Parser/TEI.pm</string>
-                       <key>TypeID</key>
-                       <string>_CFileLocator</string>
-                       <key>Version</key>
-                       <integer>1</integer>
-               </dict>
-               <dict>
-                       <key>AliasData</key>
-                       <data>
-                       AAAAAAG+AAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADK
-                       PI0jSCsAAAAIMaQHVXRpbC5wbQAAAAAAAAAAAAAAAAAAAAAAAAAA
-                       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv7
-                       isppmKBURVhUUipjaP////8AAAkgAAAAAAAAAAAAAAAAAAAABlBh
-                       cnNlcgAQAAgAAMo8cQMAAAARAAgAAMppfIAAAAABACAACDGkAAgx
-                       mwAIMZoACDGZAAguiAAHJJMABQQGAAC/MQACAFZNYWNpbnRvc2gg
-                       SEQ6VXNlcnM6AHRsYToAUHJvamVjdHM6AHN0ZW1tYXRvbG9neToA
-                       bGliOgBUZXh0OgBUcmFkaXRpb246AFBhcnNlcjoAVXRpbC5wbQAO
-                       ABAABwBVAHQAaQBsAC4AcABtAA8AGgAMAE0AYQBjAGkAbgB0AG8A
-                       cwBoACAASABEABIAQVVzZXJzL3RsYS9Qcm9qZWN0cy9zdGVtbWF0
-                       b2xvZ3kvbGliL1RleHQvVHJhZGl0aW9uL1BhcnNlci9VdGlsLnBt
-                       AAATAAEvAAAVAAIACv//AAA=
-                       </data>
-                       <key>FileURL</key>
-                       <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Parser/Util.pm</string>
-                       <key>RelativePath</key>
-                       <string>./lib/Text/Tradition/Parser/Util.pm</string>
-                       <key>TypeID</key>
-                       <string>_CFileLocator</string>
-                       <key>Version</key>
-                       <integer>1</integer>
-               </dict>
-               <dict>
-                       <key>AliasData</key>
-                       <data>
-                       AAAAAAGkAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADK
-                       PI0jSCsAAAAILogRbWFrZV90cmFkaXRpb24ucGwAAAAAAAAAAAAA
-                       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJK
-                       7cp/KfxURVhUAAAAAP////8AAAkgAAAAAAAAAAAAAAAAAAAADHN0
-                       ZW1tYXRvbG9neQAQAAgAAMo8cQMAAAARAAgAAMp/DdwAAAABABAA
-                       CC6IAAckkwAFBAYAAL8xAAIAQk1hY2ludG9zaCBIRDpVc2VyczoA
-                       dGxhOgBQcm9qZWN0czoAc3RlbW1hdG9sb2d5OgBtYWtlX3RyYWRp
-                       dGlvbi5wbAAOACQAEQBtAGEAawBlAF8AdAByAGEAZABpAHQAaQBv
-                       AG4ALgBwAGwADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQA
-                       EgAxVXNlcnMvdGxhL1Byb2plY3RzL3N0ZW1tYXRvbG9neS9tYWtl
-                       X3RyYWRpdGlvbi5wbAAAEwABLwAAFQACAAr//wAA
-                       </data>
-                       <key>FileURL</key>
-                       <string>file://localhost/Users/tla/Projects/stemmatology/make_tradition.pl</string>
-                       <key>RelativePath</key>
-                       <string>./make_tradition.pl</string>
-                       <key>TypeID</key>
-                       <string>_CFileLocator</string>
-                       <key>Version</key>
-                       <integer>1</integer>
-               </dict>
-               <dict>
-                       <key>AliasData</key>
-                       <data>
-                       AAAAAAGkAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADK
-                       PI0jSCsAAAAIMZoMVHJhZGl0aW9uLnBtAAAAAAAAAAAAAAAAAAAA
-                       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvm
-                       YsoJl7BURVhUAAAAAP////8AAAkgAAAAAAAAAAAAAAAAAAAABFRl
-                       eHQAEAAIAADKPHEDAAAAEQAIAADKCXuQAAAAAQAYAAgxmgAIMZkA
-                       CC6IAAckkwAFBAYAAL8xAAIASE1hY2ludG9zaCBIRDpVc2VyczoA
-                       dGxhOgBQcm9qZWN0czoAc3RlbW1hdG9sb2d5OgBsaWI6AFRleHQ6
-                       AFRyYWRpdGlvbi5wbQAOABoADABUAHIAYQBkAGkAdABpAG8AbgAu
-                       AHAAbQAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASADVV
-                       c2Vycy90bGEvUHJvamVjdHMvc3RlbW1hdG9sb2d5L2xpYi9UZXh0
-                       L1RyYWRpdGlvbi5wbQAAEwABLwAAFQACAAr//wAA
-                       </data>
-                       <key>FileURL</key>
-                       <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition.pm</string>
-                       <key>RelativePath</key>
-                       <string>./lib/Text/Tradition.pm</string>
-                       <key>TypeID</key>
-                       <string>_CFileLocator</string>
-                       <key>Version</key>
-                       <integer>1</integer>
-               </dict>
-               <dict>
-                       <key>AliasData</key>
-                       <data>
-                       AAAAAAHOAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADK
-                       PI0jSCsAAAAIMaQLQmFzZVRleHQucG0AAAAAAAAAAAAAAAAAAAAA
-                       AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJQ
-                       Lsp/MxVURVhUAAAAAP////8AAAkgAAAAAAAAAAAAAAAAAAAABlBh
-                       cnNlcgAQAAgAAMo8cQMAAAARAAgAAMp/FvUAAAABACAACDGkAAgx
-                       mwAIMZoACDGZAAguiAAHJJMABQQGAAC/MQACAFpNYWNpbnRvc2gg
-                       SEQ6VXNlcnM6AHRsYToAUHJvamVjdHM6AHN0ZW1tYXRvbG9neToA
-                       bGliOgBUZXh0OgBUcmFkaXRpb246AFBhcnNlcjoAQmFzZVRleHQu
-                       cG0ADgAYAAsAQgBhAHMAZQBUAGUAeAB0AC4AcABtAA8AGgAMAE0A
-                       YQBjAGkAbgB0AG8AcwBoACAASABEABIARVVzZXJzL3RsYS9Qcm9q
-                       ZWN0cy9zdGVtbWF0b2xvZ3kvbGliL1RleHQvVHJhZGl0aW9uL1Bh
-                       cnNlci9CYXNlVGV4dC5wbQAAEwABLwAAFQACAAr//wAA
-                       </data>
-                       <key>FileURL</key>
-                       <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Parser/BaseText.pm</string>
-                       <key>RelativePath</key>
-                       <string>./lib/Text/Tradition/Parser/BaseText.pm</string>
-                       <key>TypeID</key>
-                       <string>_CFileLocator</string>
-                       <key>Version</key>
-                       <integer>1</integer>
-               </dict>
-       </array>
-       <key>OpenDocumentsExpanded</key>
-       <true/>
-       <key>OpenDocumentsVisible</key>
-       <true/>
-       <key>ProjectViewVisible</key>
-       <true/>
-       <key>RecentItems:tla</key>
-       <array>
-               <dict>
-                       <key>Date</key>
-                       <date>2011-10-01T18:51:11Z</date>
-                       <key>Location</key>
-                       <dict>
-                               <key>AliasData</key>
-                               <data>
-                               AAAAAAHUAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAA
-                               AAAAAADKPI0jSCsAAAAIMZwKUmVhZGluZy5wbQAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAABv8WMoshoNURVhUAAAAAP//
-                               //8AAAkgAAAAAAAAAAAAAAAAAAAACUNvbGxhdGlvbgAA
-                               EAAIAADKPHEDAAAAEQAIAADKLGpjAAAAAQAgAAgxnAAI
-                               MZsACDGaAAgxmQAILogABySTAAUEBgAAvzEAAgBcTWFj
-                               aW50b3NoIEhEOlVzZXJzOgB0bGE6AFByb2plY3RzOgBz
-                               dGVtbWF0b2xvZ3k6AGxpYjoAVGV4dDoAVHJhZGl0aW9u
-                               OgBDb2xsYXRpb246AFJlYWRpbmcucG0ADgAWAAoAUgBl
-                               AGEAZABpAG4AZwAuAHAAbQAPABoADABNAGEAYwBpAG4A
-                               dABvAHMAaAAgAEgARAASAEdVc2Vycy90bGEvUHJvamVj
-                               dHMvc3RlbW1hdG9sb2d5L2xpYi9UZXh0L1RyYWRpdGlv
-                               bi9Db2xsYXRpb24vUmVhZGluZy5wbQAAEwABLwAAFQAC
-                               AAr//wAA
-                               </data>
-                               <key>FileURL</key>
-                               <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Collation/Reading.pm</string>
-                               <key>TypeID</key>
-                               <string>_CFileLocator</string>
-                               <key>Version</key>
-                               <integer>1</integer>
-                       </dict>
-               </dict>
-               <dict>
-                       <key>Date</key>
-                       <date>2011-10-01T18:42:03Z</date>
-                       <key>Location</key>
-                       <dict>
-                               <key>AliasData</key>
-                               <data>
-                               AAAAAAG+AAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAA
-                               AAAAAADKPI0jSCsAAAAIMaQHVXRpbC5wbQAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAABv7isppmKBURVhUUipjaP//
-                               //8AAAkgAAAAAAAAAAAAAAAAAAAABlBhcnNlcgAQAAgA
-                               AMo8cQMAAAARAAgAAMppfIAAAAABACAACDGkAAgxmwAI
-                               MZoACDGZAAguiAAHJJMABQQGAAC/MQACAFZNYWNpbnRv
-                               c2ggSEQ6VXNlcnM6AHRsYToAUHJvamVjdHM6AHN0ZW1t
-                               YXRvbG9neToAbGliOgBUZXh0OgBUcmFkaXRpb246AFBh
-                               cnNlcjoAVXRpbC5wbQAOABAABwBVAHQAaQBsAC4AcABt
-                               AA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIA
-                               QVVzZXJzL3RsYS9Qcm9qZWN0cy9zdGVtbWF0b2xvZ3kv
-                               bGliL1RleHQvVHJhZGl0aW9uL1BhcnNlci9VdGlsLnBt
-                               AAATAAEvAAAVAAIACv//AAA=
-                               </data>
-                               <key>FileURL</key>
-                               <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Parser/Util.pm</string>
-                               <key>TypeID</key>
-                               <string>_CFileLocator</string>
-                               <key>Version</key>
-                               <integer>1</integer>
-                       </dict>
-               </dict>
-               <dict>
-                       <key>Date</key>
-                       <date>2011-09-30T20:37:59Z</date>
-                       <key>Location</key>
-                       <dict>
-                               <key>AliasData</key>
-                               <data>
-                               AAAAAAHOAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAA
-                               AAAAAADKPI0jSCsAAAAIMaQLQmFzZVRleHQucG0AAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAACJQLsp/MxVURVhUAAAAAP//
-                               //8AAAkgAAAAAAAAAAAAAAAAAAAABlBhcnNlcgAQAAgA
-                               AMo8cQMAAAARAAgAAMp/FvUAAAABACAACDGkAAgxmwAI
-                               MZoACDGZAAguiAAHJJMABQQGAAC/MQACAFpNYWNpbnRv
-                               c2ggSEQ6VXNlcnM6AHRsYToAUHJvamVjdHM6AHN0ZW1t
-                               YXRvbG9neToAbGliOgBUZXh0OgBUcmFkaXRpb246AFBh
-                               cnNlcjoAQmFzZVRleHQucG0ADgAYAAsAQgBhAHMAZQBU
-                               AGUAeAB0AC4AcABtAA8AGgAMAE0AYQBjAGkAbgB0AG8A
-                               cwBoACAASABEABIARVVzZXJzL3RsYS9Qcm9qZWN0cy9z
-                               dGVtbWF0b2xvZ3kvbGliL1RleHQvVHJhZGl0aW9uL1Bh
-                               cnNlci9CYXNlVGV4dC5wbQAAEwABLwAAFQACAAr//wAA
-                               </data>
-                               <key>FileURL</key>
-                               <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Parser/BaseText.pm</string>
-                               <key>TypeID</key>
-                               <string>_CFileLocator</string>
-                               <key>Version</key>
-                               <integer>1</integer>
-                       </dict>
-               </dict>
-               <dict>
-                       <key>Date</key>
-                       <date>2011-09-30T20:30:48Z</date>
-                       <key>Location</key>
-                       <dict>
-                               <key>AliasData</key>
-                               <data>
-                               AAAAAAHIAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAA
-                               AAAAAADKPI0jSCsAAAAIMZwHUGF0aC5wbQAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAgxncoFjyAAAAAAAAAAAP//
-                               //8AAAkgAAAAAAAAAAAAAAAAAAAACUNvbGxhdGlvbgAA
-                               EAAIAADKPHEDAAAAEQAIAADKBXMAAAAAAQAgAAgxnAAI
-                               MZsACDGaAAgxmQAILogABySTAAUEBgAAvzEAAgBZTWFj
-                               aW50b3NoIEhEOlVzZXJzOgB0bGE6AFByb2plY3RzOgBz
-                               dGVtbWF0b2xvZ3k6AGxpYjoAVGV4dDoAVHJhZGl0aW9u
-                               OgBDb2xsYXRpb246AFBhdGgucG0AAA4AEAAHAFAAYQB0
-                               AGgALgBwAG0ADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgA
-                               IABIAEQAEgBEVXNlcnMvdGxhL1Byb2plY3RzL3N0ZW1t
-                               YXRvbG9neS9saWIvVGV4dC9UcmFkaXRpb24vQ29sbGF0
-                               aW9uL1BhdGgucG0AEwABLwAAFQACAAr//wAA
-                               </data>
-                               <key>FileURL</key>
-                               <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Collation/Path.pm</string>
-                               <key>TypeID</key>
-                               <string>_CFileLocator</string>
-                               <key>Version</key>
-                               <integer>1</integer>
-                       </dict>
-               </dict>
-               <dict>
-                       <key>Date</key>
-                       <date>2011-09-29T14:18:43Z</date>
-                       <key>Location</key>
-                       <dict>
-                               <key>AliasData</key>
-                               <data>
-                               AAAAAAHEAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAA
-                               AAAAAADKPI0jSCsAAAAIMZsMQ29sbGF0aW9uLnBtAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAABxu8MphvU5URVhUAAAAAP//
-                               //8AAAkgAAAAAAAAAAAAAAAAAAAACVRyYWRpdGlvbgAA
-                               EAAIAADKPHEDAAAAEQAIAADKYaEuAAAAAQAcAAgxmwAI
-                               MZoACDGZAAguiAAHJJMABQQGAAC/MQACAFNNYWNpbnRv
-                               c2ggSEQ6VXNlcnM6AHRsYToAUHJvamVjdHM6AHN0ZW1t
-                               YXRvbG9neToAbGliOgBUZXh0OgBUcmFkaXRpb246AENv
-                               bGxhdGlvbi5wbQAADgAaAAwAQwBvAGwAbABhAHQAaQBv
-                               AG4ALgBwAG0ADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgA
-                               IABIAEQAEgA/VXNlcnMvdGxhL1Byb2plY3RzL3N0ZW1t
-                               YXRvbG9neS9saWIvVGV4dC9UcmFkaXRpb24vQ29sbGF0
-                               aW9uLnBtAAATAAEvAAAVAAIACv//AAA=
-                               </data>
-                               <key>FileURL</key>
-                               <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Collation.pm</string>
-                               <key>TypeID</key>
-                               <string>_CFileLocator</string>
-                               <key>Version</key>
-                               <integer>1</integer>
-                       </dict>
-               </dict>
-               <dict>
-                       <key>Date</key>
-                       <date>2011-09-29T14:18:43Z</date>
-                       <key>Location</key>
-                       <dict>
-                               <key>AliasData</key>
-                               <data>
-                               AAAAAAGkAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAA
-                               AAAAAADKPI0jSCsAAAAIMZoMVHJhZGl0aW9uLnBtAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAABvmYsoJl7BURVhUAAAAAP//
-                               //8AAAkgAAAAAAAAAAAAAAAAAAAABFRleHQAEAAIAADK
-                               PHEDAAAAEQAIAADKCXuQAAAAAQAYAAgxmgAIMZkACC6I
-                               AAckkwAFBAYAAL8xAAIASE1hY2ludG9zaCBIRDpVc2Vy
-                               czoAdGxhOgBQcm9qZWN0czoAc3RlbW1hdG9sb2d5OgBs
-                               aWI6AFRleHQ6AFRyYWRpdGlvbi5wbQAOABoADABUAHIA
-                               YQBkAGkAdABpAG8AbgAuAHAAbQAPABoADABNAGEAYwBp
-                               AG4AdABvAHMAaAAgAEgARAASADVVc2Vycy90bGEvUHJv
-                               amVjdHMvc3RlbW1hdG9sb2d5L2xpYi9UZXh0L1RyYWRp
-                               dGlvbi5wbQAAEwABLwAAFQACAAr//wAA
-                               </data>
-                               <key>FileURL</key>
-                               <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition.pm</string>
-                               <key>TypeID</key>
-                               <string>_CFileLocator</string>
-                               <key>Version</key>
-                               <integer>1</integer>
-                       </dict>
-               </dict>
-               <dict>
-                       <key>Date</key>
-                       <date>2011-09-29T14:18:43Z</date>
-                       <key>Location</key>
-                       <dict>
-                               <key>AliasData</key>
-                               <data>
-                               AAAAAAGkAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAA
-                               AAAAAADKPI0jSCsAAAAILogRbWFrZV90cmFkaXRpb24u
-                               cGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAACJK7cp/KfxURVhUAAAAAP//
-                               //8AAAkgAAAAAAAAAAAAAAAAAAAADHN0ZW1tYXRvbG9n
-                               eQAQAAgAAMo8cQMAAAARAAgAAMp/DdwAAAABABAACC6I
-                               AAckkwAFBAYAAL8xAAIAQk1hY2ludG9zaCBIRDpVc2Vy
-                               czoAdGxhOgBQcm9qZWN0czoAc3RlbW1hdG9sb2d5OgBt
-                               YWtlX3RyYWRpdGlvbi5wbAAOACQAEQBtAGEAawBlAF8A
-                               dAByAGEAZABpAHQAaQBvAG4ALgBwAGwADwAaAAwATQBh
-                               AGMAaQBuAHQAbwBzAGgAIABIAEQAEgAxVXNlcnMvdGxh
-                               L1Byb2plY3RzL3N0ZW1tYXRvbG9neS9tYWtlX3RyYWRp
-                               dGlvbi5wbAAAEwABLwAAFQACAAr//wAA
-                               </data>
-                               <key>FileURL</key>
-                               <string>file://localhost/Users/tla/Projects/stemmatology/make_tradition.pl</string>
-                               <key>TypeID</key>
-                               <string>_CFileLocator</string>
-                               <key>Version</key>
-                               <integer>1</integer>
-                       </dict>
-               </dict>
-               <dict>
-                       <key>Date</key>
-                       <date>2011-09-29T14:18:43Z</date>
-                       <key>Location</key>
-                       <dict>
-                               <key>AliasData</key>
-                               <data>
-                               AAAAAAG6AAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAA
-                               AAAAAADKPI0jSCsAAAAIMaQGQ1RFLnBtAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAgxqcpezGFURVhUAAAAAP//
-                               //8AAAkgAAAAAAAAAAAAAAAAAAAABlBhcnNlcgAQAAgA
-                               AMo8cQMAAAARAAgAAMpesEEAAAABACAACDGkAAgxmwAI
-                               MZoACDGZAAguiAAHJJMABQQGAAC/MQACAFVNYWNpbnRv
-                               c2ggSEQ6VXNlcnM6AHRsYToAUHJvamVjdHM6AHN0ZW1t
-                               YXRvbG9neToAbGliOgBUZXh0OgBUcmFkaXRpb246AFBh
-                               cnNlcjoAQ1RFLnBtAAAOAA4ABgBDAFQARQAuAHAAbQAP
-                               ABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAEBV
-                               c2Vycy90bGEvUHJvamVjdHMvc3RlbW1hdG9sb2d5L2xp
-                               Yi9UZXh0L1RyYWRpdGlvbi9QYXJzZXIvQ1RFLnBtABMA
-                               AS8AABUAAgAK//8AAA==
-                               </data>
-                               <key>FileURL</key>
-                               <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Parser/CTE.pm</string>
-                               <key>TypeID</key>
-                               <string>_CFileLocator</string>
-                               <key>Version</key>
-                               <integer>1</integer>
-                       </dict>
-               </dict>
-               <dict>
-                       <key>Date</key>
-                       <date>2011-09-29T14:18:43Z</date>
-                       <key>Location</key>
-                       <dict>
-                               <key>AliasData</key>
-                               <data>
-                               AAAAAAHOAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAA
-                               AAAAAADKPI0jSCsAAAAIMaQLQ29sbGF0ZVgucG0AAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAABsbDcovlGtURVhUAAAAAP//
-                               //8AAAkgAAAAAAAAAAAAAAAAAAAABlBhcnNlcgAQAAgA
-                               AMo8cQMAAAARAAgAAMoveEsAAAABACAACDGkAAgxmwAI
-                               MZoACDGZAAguiAAHJJMABQQGAAC/MQACAFpNYWNpbnRv
-                               c2ggSEQ6VXNlcnM6AHRsYToAUHJvamVjdHM6AHN0ZW1t
-                               YXRvbG9neToAbGliOgBUZXh0OgBUcmFkaXRpb246AFBh
-                               cnNlcjoAQ29sbGF0ZVgucG0ADgAYAAsAQwBvAGwAbABh
-                               AHQAZQBYAC4AcABtAA8AGgAMAE0AYQBjAGkAbgB0AG8A
-                               cwBoACAASABEABIARVVzZXJzL3RsYS9Qcm9qZWN0cy9z
-                               dGVtbWF0b2xvZ3kvbGliL1RleHQvVHJhZGl0aW9uL1Bh
-                               cnNlci9Db2xsYXRlWC5wbQAAEwABLwAAFQACAAr//wAA
-                               </data>
-                               <key>FileURL</key>
-                               <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Parser/CollateX.pm</string>
-                               <key>TypeID</key>
-                               <string>_CFileLocator</string>
-                               <key>Version</key>
-                               <integer>1</integer>
-                       </dict>
-               </dict>
-               <dict>
-                       <key>Date</key>
-                       <date>2011-09-29T14:18:43Z</date>
-                       <key>Location</key>
-                       <dict>
-                               <key>AliasData</key>
-                               <data>
-                               AAAAAAG2AAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAA
-                               AAAAAADKPI0jSCsAAAAIMZsJU3RlbW1hLnBtAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAABvk9so6UGBURVhUAAAAAP//
-                               //8AAAkgAAAAAAAAAAAAAAAAAAAACVRyYWRpdGlvbgAA
-                               EAAIAADKPHEDAAAAEQAIAADKOjRAAAAAAQAcAAgxmwAI
-                               MZoACDGZAAguiAAHJJMABQQGAAC/MQACAFBNYWNpbnRv
-                               c2ggSEQ6VXNlcnM6AHRsYToAUHJvamVjdHM6AHN0ZW1t
-                               YXRvbG9neToAbGliOgBUZXh0OgBUcmFkaXRpb246AFN0
-                               ZW1tYS5wbQAOABQACQBTAHQAZQBtAG0AYQAuAHAAbQAP
-                               ABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASADxV
-                               c2Vycy90bGEvUHJvamVjdHMvc3RlbW1hdG9sb2d5L2xp
-                               Yi9UZXh0L1RyYWRpdGlvbi9TdGVtbWEucG0AEwABLwAA
-                               FQACAAr//wAA
-                               </data>
-                               <key>FileURL</key>
-                               <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Stemma.pm</string>
-                               <key>TypeID</key>
-                               <string>_CFileLocator</string>
-                               <key>Version</key>
-                               <integer>1</integer>
-                       </dict>
-               </dict>
-               <dict>
-                       <key>Date</key>
-                       <date>2011-09-29T14:18:43Z</date>
-                       <key>Location</key>
-                       <dict>
-                               <key>AliasData</key>
-                               <data>
-                               AAAAAAG6AAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAA
-                               AAAAAADKPI0jSCsAAAAIMaQGVEVJLnBtAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAACJQSMp/M1tURVhUAAAAAP//
-                               //8AAAkgAAAAAAAAAAAAAAAAAAAABlBhcnNlcgAQAAgA
-                               AMo8cQMAAAARAAgAAMp/FzsAAAABACAACDGkAAgxmwAI
-                               MZoACDGZAAguiAAHJJMABQQGAAC/MQACAFVNYWNpbnRv
-                               c2ggSEQ6VXNlcnM6AHRsYToAUHJvamVjdHM6AHN0ZW1t
-                               YXRvbG9neToAbGliOgBUZXh0OgBUcmFkaXRpb246AFBh
-                               cnNlcjoAVEVJLnBtAAAOAA4ABgBUAEUASQAuAHAAbQAP
-                               ABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAEBV
-                               c2Vycy90bGEvUHJvamVjdHMvc3RlbW1hdG9sb2d5L2xp
-                               Yi9UZXh0L1RyYWRpdGlvbi9QYXJzZXIvVEVJLnBtABMA
-                               AS8AABUAAgAK//8AAA==
-                               </data>
-                               <key>FileURL</key>
-                               <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Parser/TEI.pm</string>
-                               <key>TypeID</key>
-                               <string>_CFileLocator</string>
-                               <key>Version</key>
-                               <integer>1</integer>
-                       </dict>
-               </dict>
-               <dict>
-                       <key>Date</key>
-                       <date>2011-09-29T14:18:42Z</date>
-                       <key>Location</key>
-                       <dict>
-                               <key>AliasData</key>
-                               <data>
-                               AAAAAAHKAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAA
-                               AAAAAADKPI0jSCsAAAAIMaQKVGFidWxhci5wbQAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAACLQhsqFAChURVhUUipjaP//
-                               //8AAAkgAAAAAAAAAAAAAAAAAAAABlBhcnNlcgAQAAgA
-                               AMo8cQMAAAARAAgAAMqE5AgAAAABACAACDGkAAgxmwAI
-                               MZoACDGZAAguiAAHJJMABQQGAAC/MQACAFlNYWNpbnRv
-                               c2ggSEQ6VXNlcnM6AHRsYToAUHJvamVjdHM6AHN0ZW1t
-                               YXRvbG9neToAbGliOgBUZXh0OgBUcmFkaXRpb246AFBh
-                               cnNlcjoAVGFidWxhci5wbQAADgAWAAoAVABhAGIAdQBs
-                               AGEAcgAuAHAAbQAPABoADABNAGEAYwBpAG4AdABvAHMA
-                               aAAgAEgARAASAERVc2Vycy90bGEvUHJvamVjdHMvc3Rl
-                               bW1hdG9sb2d5L2xpYi9UZXh0L1RyYWRpdGlvbi9QYXJz
-                               ZXIvVGFidWxhci5wbQATAAEvAAAVAAIACv//AAA=
-                               </data>
-                               <key>FileURL</key>
-                               <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Parser/Tabular.pm</string>
-                               <key>TypeID</key>
-                               <string>_CFileLocator</string>
-                               <key>Version</key>
-                               <integer>1</integer>
-                       </dict>
-               </dict>
-               <dict>
-                       <key>Date</key>
-                       <date>2011-09-29T14:18:42Z</date>
-                       <key>Location</key>
-                       <dict>
-                               <key>AliasData</key>
-                               <data>
-                               AAAAAAG8AAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAA
-                               AAAAAADKPI0jSCsAAAAIMZsKV2l0bmVzcy5wbQAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAgxscpUnZsAAAAAAAAAAP//
-                               //8AAAkgAAAAAAAAAAAAAAAAAAAACVRyYWRpdGlvbgAA
-                               EAAIAADKPHEDAAAAEQAIAADKVIF7AAAAAQAcAAgxmwAI
-                               MZoACDGZAAguiAAHJJMABQQGAAC/MQACAFFNYWNpbnRv
-                               c2ggSEQ6VXNlcnM6AHRsYToAUHJvamVjdHM6AHN0ZW1t
-                               YXRvbG9neToAbGliOgBUZXh0OgBUcmFkaXRpb246AFdp
-                               dG5lc3MucG0AAA4AFgAKAFcAaQB0AG4AZQBzAHMALgBw
-                               AG0ADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQA
-                               EgA9VXNlcnMvdGxhL1Byb2plY3RzL3N0ZW1tYXRvbG9n
-                               eS9saWIvVGV4dC9UcmFkaXRpb24vV2l0bmVzcy5wbQAA
-                               EwABLwAAFQACAAr//wAA
-                               </data>
-                               <key>FileURL</key>
-                               <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Witness.pm</string>
-                               <key>TypeID</key>
-                               <string>_CFileLocator</string>
-                               <key>Version</key>
-                               <integer>1</integer>
-                       </dict>
-               </dict>
-               <dict>
-                       <key>Date</key>
-                       <date>2011-09-29T14:18:42Z</date>
-                       <key>Location</key>
-                       <dict>
-                               <key>AliasData</key>
-                               <data>
-                               AAAAAAHUAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAA
-                               AAAAAADKPI0jSCsAAAAIMZwKU2VnbWVudC5wbQAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAABxTecoO7XVURVhUAAAAAP//
-                               //8AAAkgAAAAAAAAAAAAAAAAAAAACUNvbGxhdGlvbgAA
-                               EAAIAADKPHEDAAAAEQAIAADKDtFVAAAAAQAgAAgxnAAI
-                               MZsACDGaAAgxmQAILogABySTAAUEBgAAvzEAAgBcTWFj
-                               aW50b3NoIEhEOlVzZXJzOgB0bGE6AFByb2plY3RzOgBz
-                               dGVtbWF0b2xvZ3k6AGxpYjoAVGV4dDoAVHJhZGl0aW9u
-                               OgBDb2xsYXRpb246AFNlZ21lbnQucG0ADgAWAAoAUwBl
-                               AGcAbQBlAG4AdAAuAHAAbQAPABoADABNAGEAYwBpAG4A
-                               dABvAHMAaAAgAEgARAASAEdVc2Vycy90bGEvUHJvamVj
-                               dHMvc3RlbW1hdG9sb2d5L2xpYi9UZXh0L1RyYWRpdGlv
-                               bi9Db2xsYXRpb24vU2VnbWVudC5wbQAAEwABLwAAFQAC
-                               AAr//wAA
-                               </data>
-                               <key>FileURL</key>
-                               <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Collation/Segment.pm</string>
-                               <key>TypeID</key>
-                               <string>_CFileLocator</string>
-                               <key>Version</key>
-                               <integer>1</integer>
-                       </dict>
-               </dict>
-               <dict>
-                       <key>Date</key>
-                       <date>2011-09-29T14:18:42Z</date>
-                       <key>Location</key>
-                       <dict>
-                               <key>AliasData</key>
-                               <data>
-                               AAAAAAG6AAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAA
-                               AAAAAADKPI0jSCsAAAAIMaQGS1VMLnBtAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAABt9B8oPILtURVhUAAAAAP//
-                               //8AAAkgAAAAAAAAAAAAAAAAAAAABlBhcnNlcgAQAAgA
-                               AMo8cQMAAAARAAgAAMoPBJsAAAABACAACDGkAAgxmwAI
-                               MZoACDGZAAguiAAHJJMABQQGAAC/MQACAFVNYWNpbnRv
-                               c2ggSEQ6VXNlcnM6AHRsYToAUHJvamVjdHM6AHN0ZW1t
-                               YXRvbG9neToAbGliOgBUZXh0OgBUcmFkaXRpb246AFBh
-                               cnNlcjoAS1VMLnBtAAAOAA4ABgBLAFUATAAuAHAAbQAP
-                               ABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAEBV
-                               c2Vycy90bGEvUHJvamVjdHMvc3RlbW1hdG9sb2d5L2xp
-                               Yi9UZXh0L1RyYWRpdGlvbi9QYXJzZXIvS1VMLnBtABMA
-                               AS8AABUAAgAK//8AAA==
-                               </data>
-                               <key>FileURL</key>
-                               <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Parser/KUL.pm</string>
-                               <key>TypeID</key>
-                               <string>_CFileLocator</string>
-                               <key>Version</key>
-                               <integer>1</integer>
-                       </dict>
-               </dict>
-               <dict>
-                       <key>Date</key>
-                       <date>2011-09-29T14:18:42Z</date>
-                       <key>Location</key>
-                       <dict>
-                               <key>AliasData</key>
-                               <data>
-                               AAAAAAG+AAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAA
-                               AAAAAADKPI0jSCsAAAAIMaQHU2VsZi5wbQAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAABsbdsovPUhURVhUAAAAAP//
-                               //8AAAkgAAAAAAAAAAAAAAAAAAAABlBhcnNlcgAQAAgA
-                               AMo8cQMAAAARAAgAAMovISgAAAABACAACDGkAAgxmwAI
-                               MZoACDGZAAguiAAHJJMABQQGAAC/MQACAFZNYWNpbnRv
-                               c2ggSEQ6VXNlcnM6AHRsYToAUHJvamVjdHM6AHN0ZW1t
-                               YXRvbG9neToAbGliOgBUZXh0OgBUcmFkaXRpb246AFBh
-                               cnNlcjoAU2VsZi5wbQAOABAABwBTAGUAbABmAC4AcABt
-                               AA8AGgAMAE0AYQBjAGkAbgB0AG8AcwBoACAASABEABIA
-                               QVVzZXJzL3RsYS9Qcm9qZWN0cy9zdGVtbWF0b2xvZ3kv
-                               bGliL1RleHQvVHJhZGl0aW9uL1BhcnNlci9TZWxmLnBt
-                               AAATAAEvAAAVAAIACv//AAA=
-                               </data>
-                               <key>FileURL</key>
-                               <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Parser/Self.pm</string>
-                               <key>TypeID</key>
-                               <string>_CFileLocator</string>
-                               <key>Version</key>
-                               <integer>1</integer>
-                       </dict>
-               </dict>
-               <dict>
-                       <key>Date</key>
-                       <date>2011-09-29T14:18:42Z</date>
-                       <key>Location</key>
-                       <dict>
-                               <key>AliasData</key>
-                               <data>
-                               AAAAAAHoAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAA
-                               AAAAAADKPI0jSCsAAAAIMZwPUmVsYXRpb25zaGlwLnBt
-                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAgxoMoRzYZURVhUAAAAAP//
-                               //8AAAkgAAAAAAAAAAAAAAAAAAAACUNvbGxhdGlvbgAA
-                               EAAIAADKPHEDAAAAEQAIAADKEbFmAAAAAQAgAAgxnAAI
-                               MZsACDGaAAgxmQAILogABySTAAUEBgAAvzEAAgBhTWFj
-                               aW50b3NoIEhEOlVzZXJzOgB0bGE6AFByb2plY3RzOgBz
-                               dGVtbWF0b2xvZ3k6AGxpYjoAVGV4dDoAVHJhZGl0aW9u
-                               OgBDb2xsYXRpb246AFJlbGF0aW9uc2hpcC5wbQAADgAg
-                               AA8AUgBlAGwAYQB0AGkAbwBuAHMAaABpAHAALgBwAG0A
-                               DwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgBM
-                               VXNlcnMvdGxhL1Byb2plY3RzL3N0ZW1tYXRvbG9neS9s
-                               aWIvVGV4dC9UcmFkaXRpb24vQ29sbGF0aW9uL1JlbGF0
-                               aW9uc2hpcC5wbQATAAEvAAAVAAIACv//AAA=
-                               </data>
-                               <key>FileURL</key>
-                               <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Collation/Relationship.pm</string>
-                               <key>TypeID</key>
-                               <string>_CFileLocator</string>
-                               <key>Version</key>
-                               <integer>1</integer>
-                       </dict>
-               </dict>
-               <dict>
-                       <key>Date</key>
-                       <date>2011-09-29T14:18:42Z</date>
-                       <key>Location</key>
-                       <dict>
-                               <key>AliasData</key>
-                               <data>
-                               AAAAAAHYAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAA
-                               AAAAAADKPI0jSCsAAAAIMZwLUG9zaXRpb24ucG0AAAAA
-                               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-                               AAAAAAAAAAAAAAAAAAAAABvWmsoTFlRURVhUAAAAAP//
-                               //8AAAkgAAAAAAAAAAAAAAAAAAAACUNvbGxhdGlvbgAA
-                               EAAIAADKPHEDAAAAEQAIAADKEvo0AAAAAQAgAAgxnAAI
-                               MZsACDGaAAgxmQAILogABySTAAUEBgAAvzEAAgBdTWFj
-                               aW50b3NoIEhEOlVzZXJzOgB0bGE6AFByb2plY3RzOgBz
-                               dGVtbWF0b2xvZ3k6AGxpYjoAVGV4dDoAVHJhZGl0aW9u
-                               OgBDb2xsYXRpb246AFBvc2l0aW9uLnBtAAAOABgACwBQ
-                               AG8AcwBpAHQAaQBvAG4ALgBwAG0ADwAaAAwATQBhAGMA
-                               aQBuAHQAbwBzAGgAIABIAEQAEgBIVXNlcnMvdGxhL1By
-                               b2plY3RzL3N0ZW1tYXRvbG9neS9saWIvVGV4dC9UcmFk
-                               aXRpb24vQ29sbGF0aW9uL1Bvc2l0aW9uLnBtABMAAS8A
-                               ABUAAgAK//8AAA==
-                               </data>
-                               <key>FileURL</key>
-                               <string>file://localhost/Users/tla/Projects/stemmatology/lib/Text/Tradition/Collation/Position.pm</string>
-                               <key>TypeID</key>
-                               <string>_CFileLocator</string>
-                               <key>Version</key>
-                               <integer>1</integer>
-                       </dict>
-               </dict>
-       </array>
-       <key>RecentItemsExpanded</key>
-       <false/>
-       <key>RecentItemsVisible</key>
-       <true/>
-       <key>ScratchpadItemsExpanded</key>
-       <true/>
-       <key>ScratchpadItemsVisible</key>
-       <true/>
-       <key>ShowInvisibles:tla</key>
-       <false/>
-       <key>ShowSCMData:tla</key>
-       <false/>
-       <key>TextFilesOnly:tla</key>
-       <true/>
-       <key>ToolbarVisible:tla</key>
-       <true/>
-       <key>ViewSplitterPosition:tla</key>
-       <real>0.19427402317523956</real>
-       <key>WindowFrame:tla:displays([(0, 0), (1440, 900)])</key>
-       <string>rect(44,47,878,1025)</string>
-</dict>
-</plist>
index c508d54..3dc6338 100644 (file)
@@ -78,11 +78,6 @@ sub BUILD {
             return;
         }
 
-        # Start and end points for all texts
-        $collation->add_reading( '#START#' );
-        $collation->add_reading( '#END#' );
-        
-
         # Now do the parsing. 
         my @sigla;
         if( $format ) {
index 036624e..bed4fc3 100644 (file)
@@ -8,7 +8,6 @@ use Text::CSV_XS;
 use Text::Tradition::Collation::Path;
 use Text::Tradition::Collation::Reading;
 use Text::Tradition::Collation::Relationship;
-use Text::Tradition::Collation::Segment;
 use XML::LibXML;
 use Moose;
 
@@ -19,13 +18,11 @@ has 'graph' => (
         add_reading => 'add_node',
         add_lacuna => 'add_node',
         del_reading => 'del_node',
-        del_segment => 'del_node',
         add_path => 'add_edge',
         del_path => 'del_edge',
         reading => 'node',
         path => 'edge',
         readings => 'nodes',
-        segments => 'nodes',
         paths => 'edges',
         relationships => 'edges',
     },
@@ -120,6 +117,10 @@ sub BUILD {
     # Pass through any graph-specific options.
     my $shape = exists( $args->{'shape'} ) ? $args->{'shape'} : 'ellipse';
     $self->graph->set_attribute( 'node', 'shape', $shape );
+    
+       # Start and end points for all texts
+       $self->start( 'INIT' );
+       $self->end( 'INIT' );
 }
 
 around add_lacuna => sub {
@@ -174,22 +175,7 @@ around relationships => sub {
     return @result;
 };
 
-around readings => sub {
-    my $orig = shift;
-    my $self = shift;
-    my @result = grep { $_->sub_class ne 'segment' } $self->$orig( @_ );
-    return @result;
-};
-
-around segments => sub {
-    my $orig = shift;
-    my $self = shift;
-    my @result = grep { $_->sub_class eq 'segment' } $self->$orig( @_ );
-    return @result;
-};
-
 # Wrapper around merge_nodes
-
 sub merge_readings {
     my $self = shift;
     my $first_node = shift;
@@ -207,14 +193,6 @@ sub has_path {
     return scalar @relevant;
 }
 
-## Dealing with groups of readings, i.e. segments.
-
-sub add_segment {
-    my( $self, @items ) = @_;
-    my $segment = Text::Tradition::Collation::Segment->new( 'members' => \@items );
-    return $segment;
-}
-
 ## Dealing with relationships between readings.  This is a different
 ## sort of graph edge.  Return a success/failure value and a list of
 ## node pairs that have been linked.
@@ -223,7 +201,7 @@ sub add_relationship {
     my( $self, $source, $target, $options ) = @_;
 
     # Make sure there is not another relationship between these two
-    # readings or segments already
+    # readings already
     $source = $self->reading( $source )
         unless ref( $source ) && $source->isa( 'Graph::Easy::Node' );
     $target = $self->reading( $target )
@@ -343,8 +321,6 @@ sub as_dot {
     foreach my $reading ( $self->readings ) {
         # Need not output nodes without separate labels
         next if $reading->name eq $reading->label;
-        # TODO output readings or segments, but not both
-        next if $reading->class eq 'node.segment';
         $dot .= sprintf( "\t\"%s\" [ label=\"%s\" ];\n", $reading->name, $reading->label );
     }
 
@@ -407,11 +383,11 @@ sub as_graphml {
     # Add the data keys for edges, i.e. witnesses
     my $edi = 0;
     my %edge_data_keys;
-    foreach my $edge_key( qw/ witness_main witness_ante_corr relationship class / ) {
+    foreach my $edge_key( qw/ witness extra relationship class / ) {
         $edge_data_keys{$edge_key} = 'de'.$edi++;
         my $key = $root->addNewChild( $graphml_ns, 'key' );
         $key->setAttribute( 'attr.name', $edge_key );
-        $key->setAttribute( 'attr.type', 'string' );
+        $key->setAttribute( 'attr.type', $edge_key eq 'extra' ? 'boolean' : 'string' );
         $key->setAttribute( 'for', 'edge' );
         $key->setAttribute( 'id', $edge_data_keys{$edge_key} );
     }
@@ -419,7 +395,7 @@ sub as_graphml {
     # Add the graph, its nodes, and its edges
     my $graph = $root->addNewChild( $graphml_ns, 'graph' );
     $graph->setAttribute( 'edgedefault', 'directed' );
-    $graph->setAttribute( 'id', 'g0' ); # TODO make this meaningful
+    $graph->setAttribute( 'id', $self->tradition->name );
     $graph->setAttribute( 'parse.edgeids', 'canonical' );
     $graph->setAttribute( 'parse.edges', scalar($self->paths) );
     $graph->setAttribute( 'parse.nodeids', 'canonical' );
@@ -440,20 +416,10 @@ sub as_graphml {
             if $n->has_rank;
         _add_graphml_data( $node_el, $node_data_keys{'class'}, $n->sub_class );
         _add_graphml_data( $node_el, $node_data_keys{'identical'}, $n->primary->name )
-            if $n->has_primary;
+            if $n->has_primary && $n->primary ne $n;
     }
 
-    # Add any segments we have
-    foreach my $n ( sort { $a->name cmp $b->name } $self->segments ) {
-        my $node_el = $graph->addNewChild( $graphml_ns, 'node' );
-        my $node_xmlid = 'n' . $node_ctr++;
-        $node_hash{ $n->name } = $node_xmlid;
-        $node_el->setAttribute( 'id', $node_xmlid );
-        _add_graphml_data( $node_el, $node_data_keys{'class'}, $n->sub_class );
-        _add_graphml_data( $node_el, $node_data_keys{'name'}, $n->name );
-    }
-
-    # Add the path, relationship, and segment edges
+    # Add the path and relationship edges
     my $edge_ctr = 0;
     foreach my $e ( sort { $a->from->name cmp $b->from->name } $self->graph->edges() ) {
         my( $name, $from, $to ) = ( 'e'.$edge_ctr++,
@@ -465,25 +431,31 @@ sub as_graphml {
         $edge_el->setAttribute( 'id', $name );
         # Add the edge class
         _add_graphml_data( $edge_el, $edge_data_keys{'class'}, $e->sub_class );
+        
+        # For some classes we have extra information to save.
         if( $e->sub_class eq 'path' ) {
             # It's a witness path, so add the witness
             my $base = $e->label;
             my $key = $edge_data_keys{'witness_main'};
-            # TODO kind of hacky
-            if( $e->label =~ /^(.*?)\s+(\(a\.c\.\))$/ ) {
+            # Is this an ante-corr witness?
+            my $aclabel = $self->ac_label;
+            if( $e->label =~ /^(.*)\Q$aclabel\E$/ ) {
+               # Keep the base witness
                 $base = $1;
-                $key = $edge_data_keys{'witness_ante_corr'};
+                # ...and record that this is an 'extra' reading path
+                _add_graphml_data( $edge_el, $edge_data_keys{'extra'}, 'true' );
             }
-            _add_graphml_data( $edge_el, $key, $base );
+            _add_graphml_data( $edge_el, $edge_data_keys{'witness'}, $base );
         } elsif( $e->sub_class eq 'relationship' ) {
-            # It's a relationship
+            # It's a relationship, so save the relationship type
             _add_graphml_data( $edge_el, $edge_data_keys{'relationship'}, $e->label );
-        } # else a segment, nothing to record but source, target, class
+        } 
     }
 
-    # Return the thing
-    $self->_save_graphml( $graphml->toString(1) );
-    return $graphml->toString(1);
+    # Save and return the thing
+    my $result = decode_utf8( $graphml->toString(1) );
+    $self->_save_graphml( $result );
+    return $result;
 }
 
 sub _add_graphml_data {
@@ -681,17 +653,24 @@ Returns the beginning of the collation, a meta-reading with label '#START#'.
 
 sub start {
     # Return the beginning reading of the graph.
-    my $self = shift;
-    my( $new_start ) = @_;
-    if( $new_start ) {
+    my( $self, $new_start ) = @_;
+    my $start = $self->reading( '#START#' );
+    if( ref( $new_start ) eq 'Text::Tradition::Collation::Reading' ) {
+       # Replace the existing start node.
         $self->del_reading( '#START#' );
         $self->graph->rename_node( $new_start, '#START#' );
+        $start = $new_start;
+    } elsif ( $new_start && $new_start eq 'INIT' ) {
+       # Make a new start node.
+       $start = $self->add_reading( '#START#' );
     }
+    # Make sure the start node is a meta node
+    $start->is_meta( 1 );
     # Make sure the start node has a start position.
-    unless( $self->reading( '#START#' )->has_rank ) {
-        $self->reading( '#START#' )->rank( '0' );
+    unless( $start->has_rank ) {
+        $start->rank( '0' );
     }
-    return $self->reading('#START#');
+    return $start;
 }
 
 =item B<end>
@@ -705,11 +684,18 @@ Returns the end of the collation, a meta-reading with label '#END#'.
 sub end {
     my $self = shift;
     my( $new_end ) = @_;
-    if( $new_end ) {
+    my $end = $self->reading( '#END#' );
+    if( ref( $new_end ) eq 'Text::Tradition::Collation::Reading' ) {
         $self->del_reading( '#END#' );
         $self->graph->rename_node( $new_end, '#END#' );
+        $end = $new_end
+    } elsif ( $new_end && $new_end eq 'INIT' ) {
+       # Make a new start node.
+       $end = $self->add_reading( '#END#' );
     }
-    return $self->reading('#END#');
+    # Make sure the start node is a meta node
+    $end->is_meta( 1 );
+    return $end;
 }
 
 =item B<reading_sequence>
index f598418..050f67d 100644 (file)
@@ -58,6 +58,14 @@ around position => sub {
     $self->$orig( @args );
 };
 
+# A lacuna node is also a meta node.
+before is_lacuna => sub {
+       my( $self, $arg ) = @_;
+       if( $arg ) {
+               $self->is_meta( 1 );
+       }
+};
+
 # Initialize the identity pool. 
 sub BUILD {
     my( $self, $args ) = @_;
@@ -165,6 +173,20 @@ sub is_at_position {
     return $self->position->is_colocated( @_ );
 }
 
+# Looks from the outside like an accessor for a Boolean, but really 
+# sets the node's class.  Should apply to start, end, and lacunae.
+
+sub is_meta {
+       my $self = shift;
+       my $arg = shift;
+       if( defined $arg && $arg ) {
+               $self->set_attribute( 'class', 'meta' );
+       } elsif ( defined $arg ) {
+               $self->del_attribute( 'class' );
+       }
+       return $self->sub_class eq 'meta';      
+}
+
 # Returns all readings that adjoin this one on any path.
 sub neighbor_readings {
     my( $self, $direction ) = @_;
@@ -201,6 +223,7 @@ sub is_common {
     return $self->get_attribute( 'class' ) eq 'common';
 }
 
+## TODO Rationalize make_common, is_meta, etc.
 sub make_common {
     my( $self ) = shift;
     $self->set_attribute( 'class', 'common' );
index 7807189..be36407 100644 (file)
@@ -67,7 +67,8 @@ sub parse {
 
     my $node_reg = {};
 
-    # Add the nodes to the graph hash. 
+    # Add the nodes to the graph hash.
+    print STDERR "Reading graphml nodes\n"; 
     my @nodes = $xpc->findnodes( '//g:node' );
     foreach my $n ( @nodes ) {
         # Could use a better way of registering these
@@ -82,6 +83,7 @@ sub parse {
     }
         
     # Now add the edges, and cross-ref with the node objects.
+    print STDERR "Reading graphml edges\n";
     my @edges = $xpc->findnodes( '//g:edge' );
     foreach my $e ( @edges ) {
         my $from = $e->getAttribute('source');
@@ -107,7 +109,13 @@ sub parse {
 sub _lookup_node_data {
     my( $xmlnode, $key ) = @_;
     my $lookup_xpath = './g:data[@key="%s"]/child::text()';
-    my $data = $xpc->findvalue( sprintf( $lookup_xpath, $key ), $xmlnode );
+    my $data = $xpc->find( sprintf( $lookup_xpath, $key ), $xmlnode );
+    # If we get back an empty nodelist, we return undef.
+    if( ref( $data ) ) {
+       return undef unless $data->size;
+       return $data->to_literal->value;
+    }
+    # Otherwise we got back a value. Return it.
     return $data;
 }
     
index 5311660..addff13 100644 (file)
@@ -27,11 +27,16 @@ graph.
 
 =cut
 
-my( $IDKEY, $TOKENKEY, $TRANSPOS_KEY, $RANK_KEY, $CLASS_KEY ) 
-    = qw/ name reading identical rank class /;
+# TODO share these with Collation.pm somehow
+my( $IDKEY, $TOKENKEY, $TRANSPOS_KEY, $RANK_KEY, $CLASS_KEY,
+       $SOURCE_KEY, $TARGET_KEY, $WITNESS_KEY, $EXTRA_KEY, $RELATIONSHIP_KEY ) 
+    = qw/ name reading identical rank class 
+         source target witness extra relationship/;
 
 sub parse {
     my( $tradition, $graphml_str ) = @_;
+    
+    # TODO this is begging for stream parsing instead of multiple loops.
     my $graph_data = Text::Tradition::Parser::GraphML::parse( $graphml_str );
 
     my $collation = $tradition->collation;
@@ -44,78 +49,71 @@ sub parse {
                          # after the nodes & edges are created.
     print STDERR "Adding graph nodes\n";
     foreach my $n ( @{$graph_data->{'nodes'}} ) {
-        # Each node is either a segment or a reading, depending on
-        # its class.  Readings have text, segments don't.
-        my %node_data = %$n;
+       # First extract the data that we can use without reference to
+       # anything else.
+       my %node_data = %$n; # Need $n itself untouched for edge processing
         my $nodeid = delete $node_data{$IDKEY};
         my $reading = delete $node_data{$TOKENKEY};
-        my $class = $node_data{$CLASS_KEY} || '';
-        # TODO this is a hack, fix it?
-        $class = 'reading' unless $class eq 'segment';
-        my $method = $class eq 'segment' ? "add_$class" : "add_reading";
-        my $gnode = $collation->$method( $nodeid );
-        $gnode->label( $reading );
-        $gnode->set_common if $class eq 'common';
-
-        # Now save the rest of the data, i.e. not the ID or label,
+        my $class = delete $node_data{$CLASS_KEY} || '';
+        my $rank = delete $node_data{$RANK_KEY};
+        
+        # Create the node.  Current valid classes are common and meta. 
+        # Everything else is a normal reading.  
+        my $gnode = $collation->add_reading( $nodeid );
+        $gnode->text( $reading );
+        $gnode->make_common if $class eq 'common';
+        $gnode->is_meta( 1 ) if $class eq 'meta';
+        $gnode->rank( $rank ) if defined $rank;
+
+        # Now save the data that we need for post-processing,
         # if it exists.
         if ( keys %node_data ) {
-            $extra_data->{$nodeid} = \%node_data;
+            $extra_data->{$nodeid} = \%node_data
         }
     }
         
     # Now add the edges.
     print STDERR "Adding graph edges\n";
+    $DB::single = 1;
     foreach my $e ( @{$graph_data->{'edges'}} ) {
-        my %edge_data = %$e;
-        my $from = delete $edge_data{'source'};
-        my $to = delete $edge_data{'target'};
-        my $class = delete $edge_data{'class'};
-
-        # Whatever is left tells us what kind of edge it is.
-        foreach my $wkey ( keys %edge_data ) {
-            if( $wkey =~ /^witness/ ) {
-                unless( $class eq 'path' ) {
-                    warn "Cannot add witness label to a $class edge";
-                    next;
-                }
-                my $wit = $edge_data{$wkey};
-                unless( $witnesses{$wit} ) {
-                    $tradition->add_witness( sigil => $wit );
-                    $witnesses{$wit} = 1;
-                }
-                my $label = $wkey eq 'witness_ante_corr' 
-                    ? $wit . $collation->ac_label : $wit;
-                $collation->add_path( $from->{$IDKEY}, $to->{$IDKEY}, $label );
-            } elsif( $wkey eq 'relationship' ) {
-                unless( $class eq 'relationship' ) {
-                    warn "Cannot add relationship label to a $class edge";
-                    next;
-                }
-                my $rel = $edge_data{$wkey};
-                # TODO handle global relationships
-                $collation->add_relationship( $rel, $from->{$IDKEY}, $to->{$IDKEY} );
-            } else {
-                my $seg_edge = $collation->graph->add_edge( $from->{$IDKEY}, $to->{$IDKEY} );
-                $seg_edge->set_attribute( 'class', 'segment' );
-            }
-        }
+        my $from = $e->{$SOURCE_KEY};
+        my $to = $e->{$TARGET_KEY};
+        my $class = $e->{$CLASS_KEY};
+
+        # We may have more information depending on the class.
+        if( $class eq 'path' ) {
+               # We need the witness, and whether it is an 'extra' reading path.
+               my $wit = $e->{$WITNESS_KEY};
+               warn "No witness label on path edge!" unless $wit;
+               my $extra = $e->{$EXTRA_KEY};
+               my $label = $wit . ( $extra ? $collation->ac_label : '' );
+               $collation->add_path( $from->{$IDKEY}, $to->{$IDKEY}, $label );
+               # Add the witness if we don't have it already.
+                       unless( $witnesses{$wit} ) {
+                               $tradition->add_witness( sigil => $wit );
+                               $witnesses{$wit} = 1;
+                       }
+        } elsif( $class eq 'relationship' ) {
+               # We need the relationship type.
+               my $rel = $e->{$RELATIONSHIP_KEY};
+               warn "No relationship type for relationship edge!" unless $rel;
+               $collation->add_relationship( $rel, $from->{$IDKEY}, $to->{$IDKEY} );
+        } 
     }
 
     ## Deal with node information (transposition, relationships, etc.) that
     ## needs to be processed after all the nodes are created.
-    print STDERR "Adding second-pass data\n";
+    print STDERR "Adding second-pass node data\n";
     my $linear = undef;
     foreach my $nkey ( keys %$extra_data ) {
         foreach my $edkey ( keys %{$extra_data->{$nkey}} ) {
             my $this_reading = $collation->reading( $nkey );
             if( $edkey eq $TRANSPOS_KEY ) {
+               $DB::single = 1;
                 my $other_reading = $collation->reading( $extra_data->{$nkey}->{$edkey} );
                 # We evidently have a linear graph.
                 $linear = 1;
                 $this_reading->set_identical( $other_reading );
-            } elsif ( $edkey eq $RANK_KEY ) {
-                $this_reading->rank( $extra_data->{$nkey}->{$edkey} );
             } else {
                 warn "Unfamiliar reading node data $edkey for $nkey";
             }
old mode 100644 (file)
new mode 100755 (executable)