Indexation script finished
diff --git a/lib/KorAP/Field/MultiTerm.pm b/lib/KorAP/Field/MultiTerm.pm
new file mode 100644
index 0000000..7381a0d
--- /dev/null
+++ b/lib/KorAP/Field/MultiTerm.pm
@@ -0,0 +1,37 @@
+package KorAP::Field::MultiTerm;
+use Mojo::Base -base;
+
+has [qw/p_start p_end o_start o_end term payload/];
+has store_offsets => 1;
+
+sub to_string {
+ my $self = shift;
+ my $string = $self->term;
+ if (defined $self->o_start) {
+ $string .= '#' .$self->o_start .'-' . $self->o_end;
+# }
+# elsif (!$self->storeOffsets) {
+# $string .= '#-';
+ };
+
+
+ my $pl = $self->p_end ? $self->p_end - 1 : $self->payload;
+ if ($self->p_end || $self->payload) {
+ $string .= '$';
+ if ($self->p_end) {
+ $string .= '<i>' . $self->p_end;
+ };
+ if ($self->payload) {
+ if (index($self->payload, '<') == 0) {
+ $string .= $self->payload;
+ }
+ else {
+ $string .= '<?>' . $self->payload;
+ };
+ };
+ };
+
+ return $string;
+};
+
+1;
diff --git a/lib/KorAP/Field/MultiTermToken.pm b/lib/KorAP/Field/MultiTermToken.pm
new file mode 100644
index 0000000..7675737
--- /dev/null
+++ b/lib/KorAP/Field/MultiTermToken.pm
@@ -0,0 +1,39 @@
+package KorAP::Field::MultiTermToken;
+use KorAP::Field::MultiTerm;
+use Mojo::Base -base;
+
+has [qw/o_start o_end/];
+
+sub add {
+ my $self = shift;
+ my $mt;
+ unless (ref $_[0] eq 'MultiTerm') {
+ if (@_ == 1) {
+ $mt = KorAP::Field::MultiTerm->new(term => shift());
+ }
+ else {
+ $mt = KorAP::Field::MultiTerm->new(@_);
+ };
+ }
+ else {
+ $mt = shift;
+ };
+ $self->{mt} //= [];
+ push(@{$self->{mt}}, $mt);
+ return $mt;
+};
+
+sub to_string {
+ my $self = shift;
+ my $string = '[(' . $self->o_start . '-'. $self->o_end . ')';
+ $string .= join ('|', map($_->to_string, @{$self->{mt}}));
+ $string .= ']';
+ return $string;
+};
+
+sub to_array {
+ my $self = shift;
+ [map($_->to_string, @{$self->{mt}})];
+};
+
+1;
diff --git a/lib/KorAP/Field/MultiTermTokenStream.pm b/lib/KorAP/Field/MultiTermTokenStream.pm
new file mode 100644
index 0000000..d2e66a8
--- /dev/null
+++ b/lib/KorAP/Field/MultiTermTokenStream.pm
@@ -0,0 +1,38 @@
+package KorAP::Field::MultiTermTokenStream;
+use Mojo::Base -base;
+use KorAP::Field::MultiTermToken;
+
+has [qw/oStart oEnd/];
+
+sub add {
+ my $self = shift;
+ my $mtt = shift // KorAP::Field::MultiTermToken->new;
+ $self->{mtt} //= [];
+ push(@{$self->{mtt}}, $mtt);
+ return $mtt;
+};
+
+sub add_meta {
+ my $self = shift;
+ my $mt = $self->pos(0)->add('-:' . shift);
+ $mt->payload(shift);
+ $mt->store_offsets(0);
+};
+
+sub pos {
+ my $self = shift;
+ my $pos = shift;
+ return $self->{mtt}->[$pos];
+};
+
+sub to_string {
+ my $self = shift;
+ return join("\n" , map { $_->to_string } @{$self->{mtt}}) . "\n";
+};
+
+sub to_array {
+ my $self = shift;
+ [ map { $_->to_array } @{$self->{mtt}} ];
+};
+
+1;