32 lines
635 B
Perl
32 lines
635 B
Perl
package Manticore::Layer::Traverse;
|
|
|
|
# Implementation of the traverse line variant of the layer
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
sub fromText {
|
|
my @all = @_;
|
|
my @data = ();
|
|
for my $bli(0..$#all) {
|
|
my $bl = $all[$bli];
|
|
my $v = Manticore::Geometry::Point->new($bl);
|
|
if('HASH' eq ref $v) {
|
|
if($bl=~m#^([^\(\)]+)\((.*)\)$#) {
|
|
push @data, {function=>$1, param=>$2}
|
|
} else {
|
|
return { error=>'Not a traverse function', position=>$bli }
|
|
}
|
|
} else { # we have a point
|
|
push @data, $v;
|
|
}
|
|
}
|
|
return bless {
|
|
data => \@data,
|
|
srcdata => \@all,
|
|
mode => "traverse",
|
|
};
|
|
}
|
|
|
|
1;
|