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
$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;
use Moose::Util::TypeConstraints;
enum 'RelationshipType' => qw( spelling orthographic grammatical lexical
- collated repetition transposition );
+ collated repetition transposition punctuation );
enum 'RelationshipScope' => qw( local document global );
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\>/ ) {
$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;
$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 );
# 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;
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 );
+#topbanner {
+ width: 100%;
+ height: 100px;
+ margin-top: 20px;
+}
+#bannerinfo {
+ float: right;
+ margin-right: 12%;
+ margin-top: 15px;
+}
#options {
position: relative;
border: 1px #c6dcf1 solid;
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">