stemmaweb bugfixes and style fixes; add 'punctuation' relationship type
Tara L Andrews [Thu, 12 Jul 2012 21:32:36 +0000 (23:32 +0200)]
lib/Text/Tradition/Analysis.pm
lib/Text/Tradition/Collation/Relationship.pm
script/poslink.pl
stemmaweb/lib/stemmaweb/Controller/Stexaminer.pm
stemmaweb/root/css/stexaminer.css
stemmaweb/root/src/stexaminer.tt

index 1a3e7b1..85fe90a 100644 (file)
@@ -213,6 +213,8 @@ sub run_analysis {
                        if( $rdg ) {
                                $rdghash->{'text'} = $rdg->text . 
                                        ( $rdg->rank == $rank ? '' : ' [' . $rdg->rank . ']' );
+                               $rdghash->{'is_ungrammatical'} = $rdg->grammar_invalid;
+                               $rdghash->{'is_nonsense'} = $rdg->is_nonsense;
                        }
                        # Remove lacunose witnesses from this reading's list now that the
                        # analysis is done 
@@ -753,8 +755,10 @@ sub analyze_location {
                                                $relation->{'annotation'} = $rel->annotation;
                                        }
                                }
-                       }       
-                       $rdgparents->{$p} = { 'label' => $prep, 'relation' => $relation };
+                       }
+                       my $phash = { 'label' => $prep, 'relation' => $relation };
+                       $phash->{'text'} = $pobj->text if $pobj;
+                       $rdgparents->{$p} = $phash;
                }
                        
                $rdghash->{'reading_parents'} = $rdgparents;
index f9035fc..227bb7b 100644 (file)
@@ -4,7 +4,7 @@ use Moose;
 use Moose::Util::TypeConstraints;
 
 enum 'RelationshipType' => qw( spelling orthographic grammatical lexical
-                                                          collated repetition transposition );
+                                                          collated repetition transposition punctuation );
 
 enum 'RelationshipScope' => qw( local document global );
 
index 0f4be38..4b99b9f 100755 (executable)
@@ -111,6 +111,7 @@ foreach my $tinfo ( $dir->traditionlist() ) {
                                next unless $rdg->has_lexemes;
                                next if grep { !$_->is_disambiguated } $rdg->lexemes;
                                next if is_sameword( $c, $r, $rdg );
+                               # Do the grammatical link if applicable
                                my $gram;
                                if( join( ' ', map { $_->form->lemma } $rdg->lexemes ) eq $rlem
                                        && $rlem !~ /\<unknown\>/ ) {
@@ -119,6 +120,17 @@ foreach my $tinfo ( $dir->traditionlist() ) {
                                        $c->add_relationship( $r, $rdg, { 'type' => 'grammatical' } );
                                        $gram = 1;
                                }
+                               
+                               # Do a punctuation link (instead of a lexical link) if applicable
+                               my $punct;
+                               if( $rdg->text =~ /^[[:punct:]]$/ && $r->text =~ /^[[:punct:]]$/ ) {
+                                       say sprintf( "Linking %s (%s) and %s (%s) with punctuation rel",
+                                               $r, $r->text, $rdg, $rdg->text );
+                                       $c->add_relationship( $r, $rdg, { 'type' => 'punctuation' } );
+                                       $punct = 1;
+                               }
+                               
+                               # Do the lexical link if applicable
                                my @rdgpos = map { $_->form->morphstr } $rdg->lexemes;
                                next unless @rpos == @rdgpos;
                                my $lex = 1;
@@ -134,7 +146,7 @@ foreach my $tinfo ( $dir->traditionlist() ) {
                                                $lex = 0;
                                        }
                                }
-                               if( $lex ) {
+                               if( $lex && !$punct ) {
                                        if( $gram ) {
                                                warn sprintf( "Grammatical link already made for %s (%s) / %s (%s)",
                                                        $r, $r->text, $rdg, $rdg->text );
index e7eee1b..4b8bff6 100644 (file)
@@ -43,7 +43,7 @@ sub index :Path :Args(1) {
                # Get the analysis options
                my( $use_type1, $ignore_sort ) = ( 0, 'none' );
                if( $c->req->method eq 'POST' ) {
-                       $use_type1 = $c->req->param( 'show_type1' ) eq 'on' ? 1 : 0;
+                       $use_type1 = $c->req->param( 'show_type1' ) ? 1 : 0;
                        $ignore_sort = $c->req->param( 'ignore_variant' );
                }
                $c->stash->{'show_type1'} = $use_type1;
@@ -52,9 +52,9 @@ sub index :Path :Args(1) {
                my %analysis_options;
                $analysis_options{'exclude_type1'} = !$use_type1;
                if( $ignore_sort eq 'spelling' ) {
-                       $analysis_options{'collapse'} = [ qw/ spelling orthographic / ];
+                       $analysis_options{'merge_types'} = [ qw/ spelling orthographic / ];
                } elsif( $ignore_sort eq 'orthographic' ) {
-                       $analysis_options{'collapse'} = 'orthographic';
+                       $analysis_options{'merge_types'} = 'orthographic';
                }
                        
                my $t = run_analysis( $tradition, %analysis_options );
index 5bf6401..1348dfa 100644 (file)
@@ -1,3 +1,13 @@
+#topbanner {
+       width: 100%;
+       height: 100px;
+       margin-top: 20px;
+}
+#bannerinfo {
+       float: right;
+       margin-right: 12%;
+       margin-top: 15px;
+}
 #options {
        position: relative;
        border: 1px #c6dcf1 solid;
index de72766..1f3a945 100644 (file)
@@ -8,8 +8,13 @@ var readingstats = [% reading_statistics %];
 var graphdot = '[% graphdot %]';
 </script>
 [% END -%]
-    <h1>Stexaminer</h1>
-    <h2>[% text_title %]</h2>
+       <div id="topbanner">
+               <div id="bannerinfo">
+                       <a href="help" title="Stexaminer help" class="helptag">Help / About</a>
+               </div>
+           <h1>Stexaminer</h1>
+       <h2>[% text_title %]</h2>
+    </div>
     <div id="options">
        <h3>Analysis options:</h3>
        <form id="use_variants_form" name="use_variants_form" class="clearfix" method="POST">