Enforce prefix on all dictionary entries
Change-Id: I0060de59503b2e4d3be95faa209c5e87a02dccb7
diff --git a/lib/Krawfish/Koral/Document.pm b/lib/Krawfish/Koral/Document.pm
index b3745e2..8fc886a 100644
--- a/lib/Krawfish/Koral/Document.pm
+++ b/lib/Krawfish/Koral/Document.pm
@@ -316,6 +316,9 @@
$term->value($item->{value});
};
+ # Make token default term type
+ $term->term_type('token');
+
return $term;
#my $key = '';
diff --git a/lib/Krawfish/Koral/Query/Builder.pm b/lib/Krawfish/Koral/Query/Builder.pm
index 107fdb5..722e986 100644
--- a/lib/Krawfish/Koral/Query/Builder.pm
+++ b/lib/Krawfish/Koral/Query/Builder.pm
@@ -1,4 +1,9 @@
package Krawfish::Koral::Query::Builder;
+use strict;
+use warnings;
+
+use Krawfish::Util::Constants qw/:PREFIX/;
+
use Krawfish::Koral::Query::Term;
use Krawfish::Koral::Query::Token;
use Krawfish::Koral::Query::Span;
@@ -62,7 +67,8 @@
sub term {
shift;
- Krawfish::Koral::Query::Term->new(@_);
+ my $term = shift;
+ return Krawfish::Koral::Query::Term->new(TOKEN_PREF . $term);
};
sub term_neg {
diff --git a/lib/Krawfish/Koral/Query/Term.pm b/lib/Krawfish/Koral/Query/Term.pm
index 68a1cb5..cd65a4a 100644
--- a/lib/Krawfish/Koral/Query/Term.pm
+++ b/lib/Krawfish/Koral/Query/Term.pm
@@ -18,6 +18,9 @@
# a utility class Krawfish::Util::Koral::Term or so
# TODO:
+# Field is probably useless
+
+# TODO:
# Rename to_term to to_neutral!
use constant DEBUG => 1;
@@ -113,7 +116,7 @@
$_[0]->{prefix} = $_[1];
return $_[0];
};
- $_[0]->{prefix};
+ $_[0]->{prefix} // TOKEN_PREF;
};
@@ -131,11 +134,17 @@
# Todo: This doesn't respect
# direction
$self->prefix(REL_L_PREF);
+ }
+ elsif ($_[0] eq 'token') {
+
+ # Todo: This doesn't respect
+ # direction
+ $self->prefix(TOKEN_PREF);
};
return $self;
}
else {
- return 'token' unless $self->prefix; # if $self->prefix eq TOKEN_PREF;
+ return 'token' if $self->prefix eq TOKEN_PREF;
return 'span' if $self->prefix eq SPAN_PREF;
return 'attribute' if $self->prefix eq ATTR_PREF;
return 'relation';
@@ -308,7 +317,7 @@
if ($str) {
$str .= ':';
};
- $str .= $self->prefix if $self->prefix;
+ $str .= $self->prefix;
my $term = $self->to_string;
if ($self->operator ne '=') {
$term =~ s/!?[=~]/=/;
@@ -325,7 +334,8 @@
sub to_term_escaped {
my $self = shift;
my $term = $self->to_term;
- if ($term =~ m!^((?:[^:]+?\:)?(?:[^/]+?\/)?(?:[^=]+?)\=)(.+?)$!) {
+ # (?:[^:]+?\:)?
+ if ($term =~ m!^(.(?:[^/]+?\/)?(?:[^=]+?)\=)(.+?)$!) {
return quotemeta($1). $2;
};
return $term;
diff --git a/lib/Krawfish/Koral/Query/Token.pm b/lib/Krawfish/Koral/Query/Token.pm
index b054117..1b6af61 100644
--- a/lib/Krawfish/Koral/Query/Token.pm
+++ b/lib/Krawfish/Koral/Query/Token.pm
@@ -1,6 +1,7 @@
package Krawfish::Koral::Query::Token;
use parent 'Krawfish::Koral::Query';
# use Krawfish::Koral::Query::Token;
+use Krawfish::Util::Constants qw/:PREFIX/;
use Krawfish::Koral::Query::Term;
# use Krawfish::Query::Term;
use Krawfish::Log;
@@ -28,7 +29,7 @@
# Token is a string
unless (blessed $token) {
return bless {
- operands => [Krawfish::Koral::Query::Term->new($token)]
+ operands => [Krawfish::Koral::Query::Term->new(TOKEN_PREF . $token)]
}, $class;
};