App-financeta
view release on metacpan or search on metacpan
lib/App/financeta/language.pm view on Meta::CPAN
}
$got = lc $got; # case-insensitive
unless (defined $self->preset_vars_hash) {
my $arr = $self->preset_vars;
my %pvars = map { $_ => 1 } @$arr;
$self->preset_vars_hash(\%pvars);
}
if (exists $self->preset_vars_hash->{$got} or
exists $self->local_vars->{$got}) {
# do nothing
} else {
$self->parser->throw_error( "Variable $got does not exist");
return;
# $self->local_vars->{$got} = 1;
}
return '$' . $got;
}
sub got_quantity {
my ($self, $got) = @_;
if (ref $got eq 'ARRAY') {
$self->flatten($got);
$got = shift @$got;
}
return { quantity => $got };
}
sub got_price {
my ($self, $got) = @_;
if (ref $got eq 'ARRAY') {
$self->flatten($got);
$got = shift @$got;
}
return { price => $got };
}
sub got_value {
my ($self, $got) = @_;
if (ref $got eq 'ARRAY') {
$self->flatten($got);
XXX {value => $got};
}
return $got;
}
sub got_buy_sell {
my ($self, $got) = @_;
if (ref $got eq 'ARRAY') {
$self->flatten($got);
$got = shift @$got;
}
return { trigger => lc $got };
}
sub got_compare_op {
my ($self, $got) = @_;
$got = '==' if ($got =~ /is|equals/i);
return { compare => $got};
}
sub got_not_op {
my ($self, $got) = @_;
$got = lc $got;
$got = '!' if $got eq 'not';
return { complement => $got };
}
sub got_logic_op {
my ($self, $got) = @_;
$got = lc $got;
$got = '&' if $got eq 'and';
$got = '|' if $got eq 'or';
return { logic => $got };
}
sub got_state_op_pre {
my ($self, $got) = @_;
if (ref $got eq 'ARRAY') {
$self->flatten($got);
$got = shift @$got;
}
return 'ACT::' . lc $got;
}
sub got_state_op_post {
my ($self, $got) = @_;
if (ref $got eq 'ARRAY') {
$self->flatten($got);
$got = shift @$got;
}
return 'DIRXN::' . lc $got;
}
sub got_state {
my ($self, $got) = @_;
if (ref $got eq 'ARRAY') {
$self->flatten($got);
XXX {state => $got};
}
return $got if $got =~ /^\$/;
$got = 0 if $got eq 'zero';
# if it is a number
return "STATE::$got" if $got =~ /^[\d\.\+\-]+$/;
return 'STATE::' . lc $got;
}
sub got_comparison_state {
my ($self, $got) = @_;
if (ref $got eq 'ARRAY') {
$self->flatten($got);
} else {
XXX {comparison_state => $got};
}
my ($var, $act, $state, $dirxn) = @$got;
my $fn;
if ($act eq 'ACT::becomes') {
if ($state =~ /^\$/) {
# state is a variable
$fn = 'merge';
} else {
$state =~ s/^STATE:://;
( run in 1.685 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )