Cleanup koral/query/builder
Change-Id: I85db7fec20d37c50b14ca0e5ee7d97df9f7e9bd4
diff --git a/lib/Krawfish/Koral/Query/Builder.pm b/lib/Krawfish/Koral/Query/Builder.pm
index 81873e4..9323f0f 100644
--- a/lib/Krawfish/Koral/Query/Builder.pm
+++ b/lib/Krawfish/Koral/Query/Builder.pm
@@ -20,7 +20,6 @@
use Krawfish::Koral::Query::Filter;
use Krawfish::Koral::Query::Match;
-# TODO: Not all constraints need to be wrapped
use Krawfish::Koral::Query::Constraint::Position;
use Krawfish::Koral::Query::Constraint::ClassBetween;
use Krawfish::Koral::Query::Constraint::NotBetween;
@@ -32,11 +31,16 @@
use strict;
use warnings;
-use constant DOC_IDENTIFIER => 'id';
+use constant {
+ DOC_IDENTIFIER => 'id',
+ TEXT_SPAN => 'base/s=t'
+};
+
+# Constructor
sub new {
my $class = shift;
- my $text_span = shift // 'base/s=t';
+ my $text_span = shift // TEXT_SPAN;
bless [$text_span], $class;
};
@@ -56,11 +60,13 @@
};
+# Class construct
sub class {
shift;
Krawfish::Koral::Query::Class->new(@_);
};
+
# Sequence construct
sub seq {
shift;
@@ -68,33 +74,47 @@
};
+# Repetition construct
sub repeat {
shift;
return Krawfish::Koral::Query::Repetition->new(@_);
};
+# Term construct
sub term {
shift;
return Krawfish::Koral::Query::Term->new(TOKEN_PREF . shift);
};
+
+# Term with negativity
sub term_neg {
- shift;
- Krawfish::Koral::Query::Term->new(@_)->match('!=');
+ shift->term(@_)->match('!=');
};
+
+# Term with regular expression
sub term_re {
- shift;
- Krawfish::Koral::Query::Term->new(@_)->match('~');
+ shift->term(@_)->match('~');
};
+# Span construct
+sub span {
+ shift;
+ Krawfish::Koral::Query::Span->new(@_);
+};
+
+
+# Conjunction group construct
sub bool_and {
shift;
Krawfish::Koral::Query::TermGroup->new('and' => @_);
};
+
+# Exclusion query construct
sub bool_and_not {
shift;
my ($pos, $neg) = @_;
@@ -102,6 +122,7 @@
};
+# Disjunction group construct
sub bool_or {
my $self = shift;
my $first_type = blessed $_[0] ? $_[0]->type : 'term';
@@ -117,13 +138,6 @@
};
-# Span construct
-sub span {
- shift;
- Krawfish::Koral::Query::Span->new(@_);
-};
-
-
# Create an in-text construct
sub in_text {
my $self = shift;
@@ -146,14 +160,14 @@
};
-# Position construct
+# Exclusion construct
sub exclusion {
shift;
Krawfish::Koral::Query::Exclusion->new(@_);
};
-# Search with reference to a specific supcorpus
+# Search with reference to a specific subcorpus
sub in_corpus {
shift;
Krawfish::Koral::Query::InCorpus->new(@_);
@@ -167,26 +181,35 @@
};
+# Create constraint query
sub constraint {
shift;
Krawfish::Koral::Query::Constraint->new(@_);
};
+
+# Create position constraint
sub c_position {
shift;
Krawfish::Koral::Query::Constraint::Position->new(@_);
};
+
+# Create class between constraint
sub c_class_between {
shift;
Krawfish::Koral::Query::Constraint::ClassBetween->new(@_);
};
+
+# Create not between constraint
sub c_not_between {
shift;
Krawfish::Koral::Query::Constraint::NotBetween->new(@_);
};
+
+# Create in between constraint
sub c_in_between {
shift;
Krawfish::Koral::Query::Constraint::InBetween->new(@_);
@@ -197,11 +220,18 @@
sub c_in_order {
shift;
Krawfish::Koral::Query::Constraint::Position->new(
- qw/precedesDirectly precedes endsWith isAround overlapsLeft alignsLeft matches/
+ qw/precedesDirectly
+ precedes
+ endsWith
+ isAround
+ overlapsLeft
+ alignsLeft
+ matches/
);
};
+# Create length query
sub length {
shift;
Krawfish::Koral::Query::Length->new(@_);
@@ -214,6 +244,8 @@
Krawfish::Koral::Query::Extension->new(1, @_);
};
+
+# Extension to the right
sub ext_right {
shift;
Krawfish::Koral::Query::Extension->new(0, @_);
@@ -255,6 +287,9 @@
# Find exactly one single match
sub match {
my $self = shift;
+
+ # TODO:
+ # Probably ask for a unique field!
my ($doc_id, $start, $end, $pl, $flags) = @_;
my $cb = Krawfish::Koral::Corpus::Builder->new;
@@ -286,7 +321,7 @@
# KoralQuery deserialization #
##############################
-# Deserialize
+# Deserialize KQ
sub from_koral {
my ($self, $kq) = @_;
@@ -351,13 +386,14 @@
}
else {
- warn $type . ' unknown';
+ warn "Type $type unknown";
};
return;
};
+# Deserialize constraint
sub from_koral_constraint {
shift;
my $kq = shift;
@@ -378,6 +414,7 @@
};
warn 'Type ' . $kq->{'@type'} . ' unknown';
+ return;
};
@@ -401,8 +438,7 @@
return Krawfish::Koral::Query::Nowhere->from_koral;
};
- warn 'Not term or termGroup: ' . $kq->{'@type'};
-
+ warn "Type $type no term or termGroup";
return;
};