From: Tara L Andrews Date: Fri, 14 Sep 2012 13:16:03 +0000 (+0200) Subject: split out persistence / DB functionality X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=ed5b9b7019c32c126faecf339bef3a98928f9f31;p=scpubgit%2Fstemmatology.git split out persistence / DB functionality --- diff --git a/base/Makefile.PL b/base/Makefile.PL index 2bedd72..86e7613 100644 --- a/base/Makefile.PL +++ b/base/Makefile.PL @@ -6,18 +6,10 @@ license( 'perl' ); perl_version( '5.012' ); all_from( 'lib/Text/Tradition.pm' ); requires( 'Algorithm::Diff' ); -requires( 'Class::Load' ); -requires( 'DBI' ); requires( 'File::Which' ); requires( 'Graph' ); requires( 'IPC::Run' ); requires( 'JSON' ); -requires( 'KiokuDB::Backend::DBI' ); -requires( 'KiokuDB::GC::Naive' ); -requires( 'KiokuDB::TypeMap' ); -requires( 'KiokuDB::TypeMap::Entry::Naive' ); -requires( 'KiokuX::Model' ); -requires( 'KiokuX::User::Util' ); requires( 'Module::Load' ); requires( 'Moose' ); requires( 'Moose::Util' ); @@ -33,9 +25,6 @@ requires( 'TryCatch' ); requires( 'XML::Easy::Syntax' ); requires( 'XML::LibXML' ); requires( 'XML::LibXML::XPathContext' ); -requires( 'YAML::XS' ); -requires( 'namespace::clean' ); build_requires( 'Data::Dump' ); build_requires( 'Test::Warn' ); -build_requires( 'Test::Memory::Cycle' ); &WriteAll; diff --git a/base/lib/Text/Tradition.pm b/base/lib/Text/Tradition.pm index fda7b3c..e85f366 100644 --- a/base/lib/Text/Tradition.pm +++ b/base/lib/Text/Tradition.pm @@ -15,9 +15,10 @@ $VERSION = "1.1"; # Enable plugin(s) if available eval { with 'Text::Tradition::HasStemma'; }; -if( $@ ) { - warn "Text::Tradition::Analysis not found. Disabling stemma analysis functionality"; -}; +# Don't warn normally +# if( $@ ) { +# warn "Text::Tradition::Analysis not found. Disabling stemma analysis functionality"; +# }; eval { with 'Text::Tradition::Language'; }; has 'collation' => ( diff --git a/base/lib/Text/Tradition/Parser/Self.pm b/base/lib/Text/Tradition/Parser/Self.pm index 4ca6e63..55ec769 100644 --- a/base/lib/Text/Tradition/Parser/Self.pm +++ b/base/lib/Text/Tradition/Parser/Self.pm @@ -95,11 +95,9 @@ source of the XML to be parsed. =begin testing -use File::Temp; use Safe::Isa; use Test::Warn; use Text::Tradition; -use Text::Tradition::Directory; use TryCatch; binmode STDOUT, ":utf8"; binmode STDERR, ":utf8"; @@ -154,28 +152,6 @@ if( $newt ) { } } -# Test user save / restore -my $fh = File::Temp->new(); -my $file = $fh->filename; -$fh->close; -my $dsn = "dbi:SQLite:dbname=$file"; -my $userstore = Text::Tradition::Directory->new( { dsn => $dsn, - extra_args => { create => 1 } } ); -my $scope = $userstore->new_scope(); -my $testuser = $userstore->create_user( { url => 'http://example.com' } ); -ok( $testuser->$_isa('Text::Tradition::User'), "Created test user via userstore" ); -$testuser->add_tradition( $newt ); -is( $newt->user->id, $testuser->id, "Assigned tradition to test user" ); -$graphml_str = $newt->collation->as_graphml; -my $usert; -warning_is { - $usert = Text::Tradition->new( 'input' => 'Self', 'string' => $graphml_str ); -} 'DROPPING user assignment without a specified userstore', - "Got expected user drop warning on parse"; -$usert = Text::Tradition->new( 'input' => 'Self', 'string' => $graphml_str, - 'userstore' => $userstore ); -is( $usert->user->id, $testuser->id, "Parsed tradition with userstore points to correct user" ); - # Test warning if we can unless( $stemma_enabled ) { my $nst; diff --git a/base/t/text_tradition_parser_self.t b/base/t/text_tradition_parser_self.t index ed921aa..df36d06 100644 --- a/base/t/text_tradition_parser_self.t +++ b/base/t/text_tradition_parser_self.t @@ -8,11 +8,9 @@ $| = 1; # =begin testing { -use File::Temp; use Safe::Isa; use Test::Warn; use Text::Tradition; -use Text::Tradition::Directory; use TryCatch; binmode STDOUT, ":utf8"; binmode STDERR, ":utf8"; @@ -67,28 +65,6 @@ if( $newt ) { } } -# Test user save / restore -my $fh = File::Temp->new(); -my $file = $fh->filename; -$fh->close; -my $dsn = "dbi:SQLite:dbname=$file"; -my $userstore = Text::Tradition::Directory->new( { dsn => $dsn, - extra_args => { create => 1 } } ); -my $scope = $userstore->new_scope(); -my $testuser = $userstore->create_user( { url => 'http://example.com' } ); -ok( $testuser->$_isa('Text::Tradition::User'), "Created test user via userstore" ); -$testuser->add_tradition( $newt ); -is( $newt->user->id, $testuser->id, "Assigned tradition to test user" ); -$graphml_str = $newt->collation->as_graphml; -my $usert; -warning_is { - $usert = Text::Tradition->new( 'input' => 'Self', 'string' => $graphml_str ); -} 'DROPPING user assignment without a specified userstore', - "Got expected user drop warning on parse"; -$usert = Text::Tradition->new( 'input' => 'Self', 'string' => $graphml_str, - 'userstore' => $userstore ); -is( $usert->user->id, $testuser->id, "Parsed tradition with userstore points to correct user" ); - # Test warning if we can unless( $stemma_enabled ) { my $nst; diff --git a/persistence/Makefile.PL b/persistence/Makefile.PL new file mode 100644 index 0000000..e5dadc7 --- /dev/null +++ b/persistence/Makefile.PL @@ -0,0 +1,24 @@ +#!/usr/bin/env perl + +use inc::Module::Install; +author( 'Tara L Andrews ' ); +license( 'perl' ); +perl_version( '5.012' ); +all_from( 'lib/Text/Tradition/Directory.pm' ); +requires( 'Class::Load' ); +requires( 'DBI' ); +requires( 'JSON' ); +requires( 'KiokuDB::Backend::DBI' ); +requires( 'KiokuDB::GC::Naive' ); +requires( 'KiokuDB::TypeMap' ); +requires( 'KiokuDB::TypeMap::Entry::Naive' ); +requires( 'KiokuX::Model' ); +requires( 'KiokuX::User::Util' ); +requires( 'Moose' ); +requires( 'Safe::Isa' ); +requires( 'TryCatch' ); +requires( 'YAML::XS' ); +requires( 'namespace::clean' ); +build_requires( 'Test::Warn' ); +build_requires( 'Test::Memory::Cycle' ); +&WriteAll; diff --git a/base/lib/Text/Tradition/Directory.pm b/persistence/lib/Text/Tradition/Directory.pm similarity index 100% rename from base/lib/Text/Tradition/Directory.pm rename to persistence/lib/Text/Tradition/Directory.pm diff --git a/base/lib/Text/Tradition/Store.pm b/persistence/lib/Text/Tradition/Store.pm similarity index 100% rename from base/lib/Text/Tradition/Store.pm rename to persistence/lib/Text/Tradition/Store.pm diff --git a/base/lib/Text/Tradition/TypeMap/Entry.pm b/persistence/lib/Text/Tradition/TypeMap/Entry.pm similarity index 100% rename from base/lib/Text/Tradition/TypeMap/Entry.pm rename to persistence/lib/Text/Tradition/TypeMap/Entry.pm diff --git a/base/lib/Text/Tradition/User.pm b/persistence/lib/Text/Tradition/User.pm similarity index 100% rename from base/lib/Text/Tradition/User.pm rename to persistence/lib/Text/Tradition/User.pm diff --git a/persistence/t/00dependencies.t b/persistence/t/00dependencies.t new file mode 100644 index 0000000..e70a616 --- /dev/null +++ b/persistence/t/00dependencies.t @@ -0,0 +1,95 @@ +#!/usr/bin/env perl + +use warnings; +use strict; + +=head1 DESCRIPTION + +Makes sure that all of the modules that are 'use'd are listed in the +Makefile.PL as dependencies. Also as long as we are source filtering, +make sure there are no $DB::single statements in the code. + +=cut + +use Test::More; +use File::Find; +eval 'use Module::CoreList'; +if ($@) { plan skip_all => 'Module::CoreList not installed' } + +plan 'no_plan'; + +my %skipped; +if( -f 'MANIFEST.SKIP' ) { + # We don't want these + open( SKIP, 'MANIFEST.SKIP' ) or die "Could not open manifest skip file"; + while() { + chomp; + $skipped{$_} = 1; + } + close SKIP; +} +my %used; +find( \&wanted, qw/ lib t / ); + +sub wanted { + return unless -f $_; + return if $File::Find::dir =~ m!/.git($|/)!; + return if $File::Find::name =~ /~$/; + return if $File::Find::name =~ /\.(pod|html)$/; + return if $skipped{$File::Find::name}; + + # read in the file from disk + my $filename = $_; + local $/; + open( FILE, $filename ) or return; + my $data = ; + close(FILE); + + # strip pod, in a really idiotic way. Good enough though + $data =~ s/^=(begin|head).+?(^=cut|\Z)//gms; + + # look for use and use base statements + $used{$1}{$File::Find::name}++ while $data =~ /^\s*use\s+([\w:]+)/gm; + while ( $data =~ m|^\s*use base qw.([\w\s:]+)|gm ) { + $used{$_}{$File::Find::name}++ for split ' ', $1; + } + # look for DB statements while we are here + while( $data =~ /^\s*\$DB::single/gm ) { + fail( "DB::single statement present in source " . $File::Find::name ); + } +} + +my %required; +{ + local $/; + ok( open( MAKEFILE, "Makefile.PL" ), "Opened Makefile" ); + my $data = ; + close(FILE); + while ( $data =~ /^\s*?(?:requires|recommends|).*?([\w:]+)'(?:\s*=>\s*['"]?([\d\.]+)['"]?)?.*?(?:#(.*))?$/gm ) { + $required{$1} = $2; + if ( defined $3 and length $3 ) { + $required{$_} = undef for split ' ', $3; + } + } +} + +for ( sort keys %used ) { + my $first_in = Module::CoreList->first_release($_); + next if defined $first_in and $first_in <= 5.00803; + next if /^(Text::Tradition|inc|t|feature|parent)(::|$)/; + + #warn $_; + ok( exists $required{$_}, "$_ in Makefile.PL" ) + or diag( "used in ", join ", ", sort keys %{ $used{$_} } ); + delete $used{$_}; + delete $required{$_}; +} + +for ( sort keys %required ) { + my $first_in = Module::CoreList->first_release( $_, $required{$_} ); + fail("Required module $_ (v. $required{$_}) is in core since $first_in") + if defined $first_in and $first_in <= 5.008003; +} + +1; + diff --git a/persistence/t/02pod.t b/persistence/t/02pod.t new file mode 100644 index 0000000..32b6d9f --- /dev/null +++ b/persistence/t/02pod.t @@ -0,0 +1,10 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +eval "use Test::Pod 1.14"; +plan skip_all => 'Test::Pod 1.14 required' if $@; +# plan skip_all => 'set TEST_POD to enable this test' unless $ENV{TEST_POD}; + +all_pod_files_ok(); diff --git a/persistence/t/03podcoverage.t b/persistence/t/03podcoverage.t new file mode 100644 index 0000000..d58a539 --- /dev/null +++ b/persistence/t/03podcoverage.t @@ -0,0 +1,32 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +eval "use Test::Pod::Coverage 1.04"; +plan skip_all => 'Test::Pod::Coverage 1.04 required' if $@; +plan skip_all => 'set TEST_POD to enable this test' unless $ENV{TEST_POD}; + +my @exclude = qw/ Store Collation::Data TypeMap::Entry /; + +my %mods; +map { $mods{$_} = 1 } all_modules(); +map { delete $mods{'Text::Tradition::'.$_} } @exclude; +if( -e 'MANIFEST.SKIP' ) { + open( SKIP, 'MANIFEST.SKIP' ) or die "Could not open skip file"; + while() { + chomp; + next unless /^lib/; + s/^lib\///; + s/\.pm//; + s/\//::/g; + delete $mods{$_}; + } + close SKIP; +} + +foreach my $mod ( keys %mods ) { + pod_coverage_ok( $mod, { also_private => [ qw/ TO_JSON BUILD throw / ] } ); +} + +done_testing(); diff --git a/base/t/bin/make-load-test.pl b/persistence/t/bin/make-load-test.pl similarity index 100% rename from base/t/bin/make-load-test.pl rename to persistence/t/bin/make-load-test.pl diff --git a/base/t/bin/update-load-test.pl b/persistence/t/bin/update-load-test.pl similarity index 100% rename from base/t/bin/update-load-test.pl rename to persistence/t/bin/update-load-test.pl diff --git a/persistence/t/data/Collatex-16.xml b/persistence/t/data/Collatex-16.xml new file mode 100644 index 0000000..869d665 --- /dev/null +++ b/persistence/t/data/Collatex-16.xml @@ -0,0 +1,294 @@ + + + + + + + + + + 0 + + + + 1 + when + + + 2 + april + + + 3 + with + + + 4 + his + + + 5 + showers + + + 6 + sweet + + + 7 + with + + + 8 + april + + + 11 + fruit + + + 12 + the + + + 13 + teh + + + 14 + march + + + 15 + drought + + + 16 + of + + + 17 + march + + + 18 + drought + + + 19 + has + + + 20 + pierced + + + 21 + unto + + + 22 + to + + + 23 + teh + + + 24 + the + + + 9 + rood + + + 10 + root + + + 25 + + + + 0 + path + A, B, C + + + 1 + path + A + + + 2 + path + B, C + + + 3 + path + A + + + 4 + path + B, C + + + 5 + path + A, B, C + + + 6 + path + A + + + 7 + path + A, B + + + 8 + path + C + + + 9 + path + A, B, C + + + 10 + path + B, C + + + 11 + path + A + + + 12 + path + B + + + 13 + path + C + + + 14 + path + A + + + 15 + path + A + + + 16 + path + A, C + + + 17 + path + B + + + 18 + path + A + + + 19 + path + A, C + + + 20 + path + B + + + 22 + path + A, C + + + 23 + path + B + + + 24 + path + A, B, C + + + 25 + path + A + + + 26 + path + B + + + 27 + path + C + + + 28 + path + A + + + 29 + path + B + + + 30 + path + C + + + 31 + path + A, B + + + 32 + path + C + + + 33 + path + A, B + + + 36 + transposition + + + 37 + transposition + + + 38 + transposition + + + diff --git a/persistence/t/data/florilegium_graphml.xml b/persistence/t/data/florilegium_graphml.xml new file mode 100644 index 0000000..f5ddc1d --- /dev/null +++ b/persistence/t/data/florilegium_graphml.xml @@ -0,0 +1,13066 @@ + + + + + + + + + + + + + + + + + + + + + + + 2.0 + , + base text + 1 + (a.c.) + 1 + + #END# + 1 + #END# + 281 + + + #LACUNA_a1.42_0# + #LACUNA_a1.42_0# + 101 + 1 + + + #LACUNA_a1_0# + #LACUNA_a1_0# + 1 + 1 + + + #LACUNA_a1_1# + #LACUNA_a1_1# + 1 + 1 + + + #LACUNA_a9.31_0# + #LACUNA_a9.31_0# + 228 + 1 + + + #LACUNA_a9.31_1# + #LACUNA_a9.31_1# + 228 + 1 + + + #LACUNA_a9.31_2# + #LACUNA_a9.31_2# + 228 + 1 + + + #LACUNA_a9.31_3# + #LACUNA_a9.31_3# + 228 + 1 + + + #LACUNA_a9.31_4# + #LACUNA_a9.31_4# + 228 + 1 + + + #LACUNA_a9.31_5# + #LACUNA_a9.31_5# + 228 + 1 + + + #LACUNA_a9.31_6# + #LACUNA_a9.31_6# + 228 + 1 + + + #LACUNA_a9.31_7# + #LACUNA_a9.31_7# + 228 + 1 + + + #START# + 1 + #START# + 0 + + + Μαξίμου + w0 + 1 + + + καταλύσαντι + w100 + 87 + + + κατακλύσαντι + w103 + 87 + + + οὔτε + w105 + 88 + + + ἐνταῦθα + w106 + 89 + + + οὔτε + w107 + 90 + + + ἐν + w108 + 91 + + + τῷ + w109 + 92 + + + πνεύματος + w11 + 10 + + + μέλλοντι + w110 + 93 + + + ἀφεθήσεται + w111 + 94 + + + τῆς + w112 + 95 + + + ἀπιστίας + w113 + 96 + + + καὶ + w114 + 97 + + + ἀθεΐας + w115 + 98 + + + ἡ + w116 + 99 + + + ἁμαρτία. + w117 + 100 + + + Ἰσιδώρου + w118 + 101 + + + Πηλουσίου + w119 + 102 + + + βλασφημία + w12 + 11 + + + πηλουσιώτ(ου) + w120 + 102 + + + νείλου + w121 + 101 + + + Γρηγορίου + w122 + 103 + + + Νύσης + w123 + 104 + + + τοῦ + w124 + 102 + + + νύσσης + w125 + 103 + + + Ἤκουσά + w126 + 105 + + + που + w127 + 106 + + + τῆς + w128 + 107 + + + ἁγίας + w129 + 108 + + + βλασφημίας + w13 + 11 + + + γραφῆς + w130 + 109 + + + κατακινούσης + w131 + 110 + + + κατακρινούσης + w132 + 110 + + + ἐκείνους, + w133 + 111 + + + οἳ + w134 + 112 + + + κατὰ + w135 + 113 + + + τῆς + w136 + 114 + + + τοῦ + w137 + 115 + + + θεοῦ + w138 + 116 + + + βλασφημίας + w139 + 117 + + + ἀπορία + w14 + 12 + + + αἴτιοι + w140 + 118 + + + γίνονται. + w141 + 119 + + + Οὐαὶ + w142 + 120 + + + γὰρ + w143 + 121 + + + φησὶν + w144 + 122 + + + δι᾽ + w145 + 123 + + + οὓς + w146 + 124 + + + τὸ + w147 + 125 + + + ὄνομά + w148 + 126 + + + μου + w149 + 127 + + + αὐτόθεν + w15 + 13 + + + βλασφημεῖται + w150 + 128 + + + ἐν + w151 + 129 + + + τοῖς + w152 + 130 + + + ἔθνεσι. + w153 + 131 + + + Διὰ + w154 + 132 + + + τοῦτο + w155 + 133 + + + γὰρ + w156 + 134 + + + χαλεπὴν + w158 + 135 + + + τοῖς + w159 + 136 + + + αὐτόθι + w16 + 13 + + + τοιούτοις + w160 + 137 + + + ἀπειλὴν + w161 + 138 + + + ὁ + w162 + 139 + + + λόγος + w163 + 140 + + + ἐπανατείνεται + w164 + 141 + + + λέγων + w165 + 142 + + + ἐκείνοις + w166 + 143 + + + εἶναι + w167 + 144 + + + τὸ + w168 + 145 + + + Οὐαὶ + w169 + 146 + + + ἔχει + w17 + 14 + + + δι᾽ + w170 + 147 + + + οὓς + w171 + 148 + + + τὸ + w172 + 149 + + + ὄνομά + w173 + 150 + + + μου + w174 + 151 + + + βλασφημεῖται + w175 + 152 + + + ἐν + w176 + 153 + + + τοῖς + w177 + 154 + + + ἔθνεσιν. + w178 + 155 + + + Νείλου + w179 + 156 + + + ἔχειν + w18 + 14 + + + μοναχοῦ + w180 + 157 + + + ἀπὸ + w183 + 158 + + + τῶν + w184 + 159 + + + τῆς + w185 + 160 + + + κακίας + w186 + 161 + + + ὀκτῶ + w187 + 162 + + + λογισμῶν + w188 + 163 + + + ἡ + w189 + 157 + + + τὴν + w19 + 15 + + + Ὄψις + w190 + 164 + + + γυναικὸς + w192 + 165 + + + μέλος + w193 + 166 + + + ἐστὶ + w194 + 168 + + + πεφαρμακευμένον + w195 + 169 + + + βέλος + w196 + 167 + + + πεφαρμακευμένον + w199 + 166 + + + ἁγίου + w2 + 2 + + + λύσιν· + w20 + 16 + + + ἔτρωσε + w202 + 170 + + + τὴν + w203 + 171 + + + ψυχὴν, + w204 + 172 + + + καὶ + w205 + 173 + + + τὸν + w206 + 174 + + + ἰὸν + w207 + 175 + + + ἐναπέθετο, + w208 + 176 + + + καὶ + w209 + 177 + + + ὁ + w21 + 17 + + + ὅσον + w210 + 178 + + + χρονίζει, + w211 + 179 + + + πλείονα + w212 + 180 + + + τὴν + w213 + 181 + + + σῆψιν + w214 + 182 + + + ἐργάζεται. + w215 + 183 + + + βέλτιον + w216 + 184 + + + γὰρ + w217 + 185 + + + οἴκοι + w218 + 186 + + + μένοντα + w219 + 187 + + + δὲ + w22 + 18 + + + σχολάζειν + w220 + 188 + + + διηνεκῶς + w221 + 189 + + + τῇ + w222 + 190 + + + προσευχῇ, + w223 + 191 + + + ἢ + w224 + 192 + + + διὰ + w225 + 193 + + + τοῦ + w226 + 194 + + + τιμᾶν + w227 + 195 + + + τὰς + w228 + 196 + + + ἑορτὰς + w229 + 197 + + + δεύτερος + w23 + 19 + + + παρανάλωμα + w230 + 198 + + + πάρεργον + w231 + 198 + + + γίνεσθαι + w232 + 199 + + + τῶν + w233 + 200 + + + ἐχθρῶν + w234 + 201 + + + τὸν + w235 + 200 + + + ἐχθρόν + w236 + 201 + + + Φεῦγε + w239 + 202 + + + ἐστὶν + w24 + 20 + + + συντυχίας + w240 + 203 + + + γυναικῶν + w241 + 204 + + + ἐὰν + w242 + 205 + + + θέλῃς + w243 + 206 + + + σωφρονεῖν, + w244 + 207 + + + καὶ + w245 + 208 + + + μηδαμῶς + w246 + 209 + + + μὴ + w247 + 209 + + + δῷς + w248 + 210 + + + αὐτῆς + w249 + 211 + + + οὗτος· + w25 + 21 + + + αὐταῖς + w250 + 211 + + + παρρησίαν + w251 + 212 + + + θαρρῆσαι + w252 + 213 + + + σοί + w253 + 214 + + + ποτε. + w254 + 215 + + + Θάλλει + w255 + 216 + + + θάλπει + w256 + 216 + + + βοτάνη + w257 + 217 + + + ἰστῶσα + w258 + 218 + + + ἐστῶσα + w259 + 218 + + + ὅτάν + w26 + 22 + + + ἑστῶσα + w260 + 218 + + + βοτάνη + w262 + 219 + + + παρ᾽ + w263 + 220 + + + ὕδατι, + w264 + 221 + + + καὶ + w265 + 222 + + + πάθος + w266 + 223 + + + ἀκολασίας, + w267 + 224 + + + ἐν + w268 + 225 + + + συντυχίαις + w269 + 226 + + + τις + w27 + 23 + + + γυναικῶν. + w270 + 227 + + + τοῦ + w271 + 228 + + + Χρυσοστόμου + w272 + 229 + + + Τοὺς + w273 + 230 + + + ἐν + w274 + 231 + + + τῇ + w275 + 232 + + + πόλει + w276 + 233 + + + βλασφημοῦντας, + w277 + 234 + + + σωφρόνιζε. + w278 + 235 + + + Κἂν + w279 + 236 + + + ἐν + w28 + 24 + + + ἀκούσῃς + w280 + 237 + + + τινὸς + w281 + 238 + + + ἐν + w282 + 239 + + + ἀμφόδῳ + w283 + 240 + + + ἢ + w285 + 241 + + + ἐν + w286 + 242 + + + ὁδῶ + w287 + 243 + + + ἢ + w288 + 244 + + + ἐν + w289 + 245 + + + ἁμαρτίαις + w29 + 25 + + + ἀγορᾷ + w290 + 246 + + + βλασφημοῦντος + w291 + 247 + + + τὸν + w292 + 248 + + + Θεόν, + w293 + 249 + + + πρόσελθε, + w294 + 250 + + + ἐπιτίμησον, + w295 + 251 + + + κἂν + w296 + 252 + + + πληγὰς + w297 + 253 + + + ἐπιθεῖναι + w298 + 254 + + + δέῃ, + w299 + 255 + + + Ἡ + w3 + 3 + + + ἐνεχόμενος, + w30 + 26 + + + μὴ + w300 + 256 + + + παρεστήση + w301 + 257 + + + παραιτήσῃ + w302 + 257 + + + ῥάπισον + w303 + 258 + + + αὐτοῦ + w304 + 259 + + + τὴν + w305 + 260 + + + ὄψιν, + w306 + 261 + + + σύντριψον + w307 + 262 + + + αὐτοῦ + w308 + 263 + + + τὸ + w309 + 264 + + + ἀκούων + w31 + 27 + + + στόμα, + w310 + 265 + + + ἁγίασόν + w311 + 266 + + + σου + w312 + 267 + + + τὴν + w313 + 268 + + + χεῖρα + w314 + 269 + + + διὰ + w315 + 270 + + + τῆς + w316 + 271 + + + πληγῆς, + w317 + 272 + + + κἂν + w318 + 273 + + + ἐγκαλῶσι + w319 + 274 + + + δὲ + w32 + 28 + + + τινές, + w320 + 275 + + + κὰν + w321 + 276 + + + εἰς + w322 + 277 + + + δικαστήριον + w323 + 278 + + + ἕλκωσιν, + w324 + 279 + + + ἀκολούθησον. + w325 + 280 + + + τοῦ + w33 + 29 + + + κυρίου + w34 + 30 + + + λέγοντος + w35 + 31 + + + μὴ + w36 + 32 + + + κρίνετε + w37 + 33 + + + κρίνεται + w39 + 34 + + + περὶ + w4 + 4 + + + φοβούμενος + w40 + 35 + + + οὐδένα + w41 + 36 + + + κρίνει + w42 + 37 + + + κρίνῃ + w44 + 37 + + + ἐν + w45 + 38 + + + τῇ + w46 + 39 + + + ἐξετάσει + w47 + 40 + + + τῶν + w48 + 41 + + + βεβιωμένων + w49 + 42 + + + τῆς + w5 + 5 + + + ὡς + w50 + 43 + + + φύλαξ + w51 + 44 + + + τῆς + w52 + 45 + + + ἐντολῆς + w53 + 46 + + + οὐ + w54 + 47 + + + κρίνεται· + w55 + 48 + + + εἰ + w56 + 49 + + + μὴ + w57 + 50 + + + τὸ + w58 + 51 + + + γενέσθαι + w59 + 52 + + + τοῦ + w6 + 6 + + + πιστόν, + w60 + 53 + + + εἰκότως + w61 + 54 + + + ὅταν + w62 + 55 + + + ἐν + w63 + 56 + + + ἁμαρτίαις + w64 + 57 + + + τίς + w65 + 58 + + + ὢν + w66 + 59 + + + οἰκονομεῖται + w67 + 60 + + + οἰκονομῆται + w68 + 60 + + + ἐκ + w69 + 61 + + + πνεύματος + w7 + 7 + + + τῆς + w70 + 62 + + + προνοίας + w71 + 63 + + + ἐν + w72 + 64 + + + συμφοραῖς, + w73 + 65 + + + ἐν + w74 + 66 + + + ἀνάγκαις, + w75 + 67 + + + ἐν + w76 + 68 + + + νόσοις + w77 + 69 + + + ὡς + w78 + 70 + + + οὐκ + w79 + 71 + + + τοῦ + w8 + 8 + + + οἶδε + w80 + 72 + + + γὰρ + w81 + 73 + + + διὰ + w82 + 74 + + + τῶν + w83 + 75 + + + τοιούτων + w84 + 76 + + + καθεαυτὸν + w85 + 77 + + + καθαίρει + w86 + 77 + + + αὐτὸν + w87 + 78 + + + ὁ + w88 + 79 + + + θεός + w89 + 80 + + + ἁγίου + w9 + 9 + + + οὖν + w90 + 81 + + + τῷ + w91 + 82 + + + τῶν + w92 + 81 + + + ἐν + w93 + 83 + + + ἀπιστεία + w94 + 84 + + + ἀπιστίᾳ + w95 + 84 + + + τὸν + w96 + 85 + + + βίον + w97 + 86 + + + κατακλείσαντι + w98 + 87 + + + path + K + + + path + B + + + path + G + + + path + T + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + Q + + + path + A + + + path + F + + + path + H + + + path + K + + + path + P + + + path + S + + + path + B + + + path + C + + + path + D + + + path + E + + + path + Q + + + path + T + + + path + G + + + path + A + + + path + K + + + path + S + + + path + P + + + path + F + + + path + H + + + path + (a.c.) + E + + + path + F + + + path + Q + + + path + E + + + path + G + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + Q + + + path + D + + + path + P + + + path + S + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + C + + + path + D + + + path + E + + + path + H + + + path + P + + + path + S + + + path + A + + + path + F + + + path + G + + + path + T + + + path + K + + + path + Q + + + path + D + + + path + P + + + path + S + + + path + C + + + path + E + + + path + H + + + path + C + + + path + E + + + path + H + + + path + Q + + + path + D + + + path + P + + + path + S + + + path + Q + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + S + + + path + T + + + path + Q + + + path + Q + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + S + + + path + T + + + path + (a.c.) + Q + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + (a.c.) + Q + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + Q + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + F + + + path + H + + + path + P + + + path + S + + + path + T + + + path + E + + + path + K + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + G + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + F + + + path + H + + + path + A + + + path + C + + + path + D + + + path + E + + + path + G + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + E + + + path + K + + + path + Q + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + Q + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + S + + + path + T + + + path + Q + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + F + + + path + H + + + path + S + + + path + T + + + path + P + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + P + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + Q + + + path + S + + + path + T + + + path + K + + + path + H + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + Q + + + path + S + + + path + T + + + path + P + + + path + F + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + G + + + path + Q + + + path + S + + + path + T + + + path + F + + + path + F + + + path + F + + + path + F + + + path + F + + + path + F + + + path + H + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + B + + + path + P + + + path + S + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + Q + + + path + T + + + path + T + + + path + B + + + path + P + + + path + S + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + Q + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + Q + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + B + + + path + P + + + path + S + + + path + F + + + path + H + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + H + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + H + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + (a.c.) + T + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + (a.c.) + T + + + path + (a.c.) + T + + + path + A + + + path + A + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + S + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + T + + + path + S + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + Q + + + path + T + + + path + P + + + path + P + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + Q + + + path + T + + + path + B + + + path + P + + + path + S + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + Q + + + path + T + + + path + B + + + path + P + + + path + S + + + path + H + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + K + + + path + Q + + + path + T + + + path + H + + + path + T + + + path + F + + + path + A + + + path + C + + + path + D + + + path + E + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + B + + + path + P + + + path + S + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + K + + + path + Q + + + path + B + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + F + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + G + + + path + E + + + path + D + + + path + Q + + + path + T + + + path + H + + + path + K + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + C + + + path + B + + + path + P + + + path + S + + + path + B + + + path + P + + + path + S + + + path + B + + + path + P + + + path + S + + + path + B + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + B + + + path + C + + + path + P + + + path + S + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + C + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + A + + + path + D + + + path + T + + + path + H + + + path + C + + + path + E + + + path + F + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + A + + + path + D + + + path + H + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + K + + + path + P + + + path + S + + + path + T + + + path + H + + + path + Q + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + C + + + path + P + + + path + Q + + + path + S + + + path + A + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + (a.c.) + Q + + + path + T + + + path + A + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + (a.c.) + Q + + + path + T + + + path + C + + + path + P + + + path + Q + + + path + S + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + K + + + path + P + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + D + + + path + P + + + path + Q + + + path + S + + + path + A + + + path + C + + + path + E + + + path + F + + + path + H + + + path + K + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + S + + + path + T + + + path + A + + + path + C + + + path + K + + + path + P + + + path + Q + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + S + + + path + T + + + path + A + + + path + C + + + path + K + + + path + P + + + path + Q + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + E + + + path + F + + + path + H + + + path + K + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + (a.c.) + P + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + E + + + path + F + + + path + H + + + path + K + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + T + + + path + S + + + path + S + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + K + + + path + E + + + path + G + + + path + A + + + path + C + + + path + D + + + path + F + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + D + + + path + P + + + path + Q + + + path + S + + + path + A + + + path + C + + + path + E + + + path + F + + + path + H + + + path + K + + + path + T + + + path + A + + + path + C + + + path + D + + + path + F + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + K + + + path + A + + + path + D + + + path + P + + + path + C + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + D + + + path + P + + + path + C + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + E + + + path + F + + + path + G + + + path + H + + + path + K + + + path + P + + + path + Q + + + path + S + + + path + T + + + path + E + + + path + G + + + path + (a.c.) + E + + + path + F + + + path + Q + + + path + A + + + path + C + + + path + D + + + path + H + + + path + K + + + path + P + + + path + (a.c.) + Q + + + path + S + + + path + T + + + path + A + + + path + C + + + path + D + + + path + H + + + path + K + + + path + P + + + path + (a.c.) + Q + + + path + S + + + path + T + + + diff --git a/base/t/data/load-save-benchmark.json b/persistence/t/data/load-save-benchmark.json similarity index 100% rename from base/t/data/load-save-benchmark.json rename to persistence/t/data/load-save-benchmark.json diff --git a/persistence/t/data/simple.dot b/persistence/t/data/simple.dot new file mode 100644 index 0000000..193e356 --- /dev/null +++ b/persistence/t/data/simple.dot @@ -0,0 +1,11 @@ +digraph Stemma { + 1 [ class="hypothetical" ]; + 2 [ class="hypothetical" ]; + A [ class="extant" ]; + B [ class="extant" ]; + C [ class="extant" ]; + 1 -> A; + 1 -> 2; + 2 -> B; + 2 -> C; +} \ No newline at end of file diff --git a/persistence/t/data/simple.txt b/persistence/t/data/simple.txt new file mode 100644 index 0000000..8be9717 --- /dev/null +++ b/persistence/t/data/simple.txt @@ -0,0 +1,23 @@ +A B C +Je Je Je +suis suis suis +dépourvu dépourvu depourvu +de de de +foi foi foi +et et et +ne ne ne +puis puis puis +donc donc donc +être être être +"heureux," "heureux," "heureux," +l'être le lézard l'être +humain humain +doit doit doit +mettre mettre mettre +des des des +millions millions millions +d'années d'années d'années +pour pour pour +devenir devenir devenir +un un un +lézard! être humain lézard! \ No newline at end of file diff --git a/base/t/data/speed_test_load.sql b/persistence/t/data/speed_test_load.sql similarity index 100% rename from base/t/data/speed_test_load.sql rename to persistence/t/data/speed_test_load.sql diff --git a/base/t/load-save-speed.t b/persistence/t/load-save-speed.t similarity index 100% rename from base/t/load-save-speed.t rename to persistence/t/load-save-speed.t diff --git a/base/t/text_tradition_directory.t b/persistence/t/text_tradition_directory.t similarity index 100% rename from base/t/text_tradition_directory.t rename to persistence/t/text_tradition_directory.t diff --git a/base/t/text_tradition_user.t b/persistence/t/text_tradition_user.t similarity index 100% rename from base/t/text_tradition_user.t rename to persistence/t/text_tradition_user.t diff --git a/base/t/text_tradition_user_collapse.t b/persistence/t/text_tradition_user_collapse.t similarity index 100% rename from base/t/text_tradition_user_collapse.t rename to persistence/t/text_tradition_user_collapse.t diff --git a/persistence/t/userrestore.t b/persistence/t/userrestore.t new file mode 100644 index 0000000..3c734b1 --- /dev/null +++ b/persistence/t/userrestore.t @@ -0,0 +1,36 @@ +#!/usr/bin/env perl; + +use strict; +use warnings; +use File::Temp; +use Safe::Isa; +use Test::More; +use Test::Warn; +use Text::Tradition; +use Text::Tradition::Directory; + +my $newt = Text::Tradition->new( 'input' => 'Self', + 'file' => 't/data/florilegium_graphml.xml' ); + +my $fh = File::Temp->new(); +my $file = $fh->filename; +$fh->close; +my $dsn = "dbi:SQLite:dbname=$file"; +my $userstore = Text::Tradition::Directory->new( { dsn => $dsn, + extra_args => { create => 1 } } ); +my $scope = $userstore->new_scope(); +my $testuser = $userstore->create_user( { url => 'http://example.com' } ); +ok( $testuser->$_isa('Text::Tradition::User'), "Created test user via userstore" ); +$testuser->add_tradition( $newt ); +is( $newt->user->id, $testuser->id, "Assigned tradition to test user" ); +my $graphml_str = $newt->collation->as_graphml; +my $usert; +warning_is { + $usert = Text::Tradition->new( 'input' => 'Self', 'string' => $graphml_str ); +} 'DROPPING user assignment without a specified userstore', + "Got expected user drop warning on parse"; +$usert = Text::Tradition->new( 'input' => 'Self', 'string' => $graphml_str, + 'userstore' => $userstore ); +is( $usert->user->id, $testuser->id, "Parsed tradition with userstore points to correct user" ); + +done_testing();