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;
   };