Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Tweaks from ruby porting
  • Loading branch information
ingydotnet committed Mar 20, 2013
1 parent bcdfc93 commit 101fd6d
Show file tree
Hide file tree
Showing 16 changed files with 61 additions and 60 deletions.
2 changes: 1 addition & 1 deletion lib/TestML/Compiler/Lite.pm
Expand Up @@ -107,7 +107,7 @@ sub parse_expression {
while (not $self->done and $self->peek !~ /^($ENDING|$COMP)$/) {
my $token = $self->pop;
if ($token =~ /^$NUM$/) {
push @$calls, TestML::Num->new(value => $token);
push @$calls, TestML::Num->new(value => $token + 0);
}
elsif ($token =~/^$QSTR$/) {
my $str = substr($token, 1, length($token) - 2);
Expand Down
4 changes: 2 additions & 2 deletions lib/TestML/Compiler/Pegex/AST.pm
Expand Up @@ -73,7 +73,7 @@ sub got_string_object {
sub got_number_object {
my ($self, $number) = @_;
return TestML::Num->new(
value => $number,
value => $number + 0,
);
}

Expand Down Expand Up @@ -123,7 +123,7 @@ sub got_function_object {
my ($self, $object) = @_;

my $function = $self->function;
$self->{function} = $self->function->outer;
$self->{function} = $function->outer;

if (ref($object->[0]) and ref($object->[0][0])) {
$function->{signature} = $object->[0][0];
Expand Down
29 changes: 15 additions & 14 deletions lib/TestML/Runtime.pm
Expand Up @@ -283,23 +283,24 @@ sub initialize_runtime {
sub get_label {
my ($self) = @_;
my $label = $self->function->getvar('Label')->value;
sub label {
my ($self, $var) = @_;
my $block = $self->function->getvar('Block');
return $block->label if $var eq 'BlockLabel';
if (my $v = $block->points->{$var}) {
$v =~ s/\n.*//s;
$v =~ s/^\s*(.*?)\s*$/$1/;
return $v;
}
if (my $v = $self->function->getvar($var)) {
return $v->value;
}
}
$label =~ s/\$(\w+)/label($self, $1)/ge;
$label =~ s/\$(\w+)/$self->replace_label($1)/ge;
return $label ? ($label) : ();
}

sub replace_label {
my ($self, $var) = @_;
my $block = $self->function->getvar('Block');
return $block->label if $var eq 'BlockLabel';
if (my $v = $block->points->{$var}) {
$v =~ s/\n.*//s;
$v =~ s/^\s*(.*?)\s*$/$1/;
return $v;
}
if (my $v = $self->function->getvar($var)) {
return $v->value;
}
}

sub read_testml_file {
my ($self, $file) = @_;
my $path = $self->base . '/' . $file;
Expand Down
2 changes: 1 addition & 1 deletion t/ast/arguments.tml
Expand Up @@ -7,7 +7,7 @@ statements:
- !!perl/hash:TestML::Assignment
name: Plan
expr: !!perl/hash:TestML::Num
value: '3'
value: 3
- !!perl/hash:TestML::Statement
expr: !!perl/hash:TestML::Expression
calls:
Expand Down
2 changes: 1 addition & 1 deletion t/ast/assertions.tml
Expand Up @@ -7,7 +7,7 @@ statements:
- !!perl/hash:TestML::Assignment
name: Plan
expr: !!perl/hash:TestML::Num
value: '6'
value: 6
- !!perl/hash:TestML::Assignment
name: Label
expr: !!perl/hash:TestML::Str
Expand Down
2 changes: 1 addition & 1 deletion t/ast/basic.tml
Expand Up @@ -10,7 +10,7 @@ statements:
- !!perl/hash:TestML::Assignment
name: Plan
expr: !!perl/hash:TestML::Num
value: '4'
value: 4
- !!perl/hash:TestML::Statement
assert: !!perl/hash:TestML::Assertion
name: EQ
Expand Down
2 changes: 1 addition & 1 deletion t/ast/dataless.tml
Expand Up @@ -11,7 +11,7 @@ statements:
- !!perl/hash:TestML::Assignment
name: Plan
expr: !!perl/hash:TestML::Num
value: '2'
value: 2
- !!perl/hash:TestML::Assignment
name: Label
expr: !!perl/hash:TestML::Str
Expand Down
2 changes: 1 addition & 1 deletion t/ast/exceptions.tml
Expand Up @@ -7,7 +7,7 @@ statements:
- !!perl/hash:TestML::Assignment
name: Plan
expr: !!perl/hash:TestML::Num
value: '2'
value: 2
- !!perl/hash:TestML::Statement
expr: !!perl/hash:TestML::Expression
calls:
Expand Down
10 changes: 5 additions & 5 deletions t/ast/external.tml
Expand Up @@ -7,7 +7,7 @@ statements:
- !!perl/hash:TestML::Assignment
name: Plan
expr: !!perl/hash:TestML::Num
value: '4'
value: 4
- !!perl/hash:TestML::Statement
expr: !!perl/hash:TestML::Point
name: foo
Expand All @@ -23,20 +23,20 @@ data:
- !!perl/hash:TestML::Block
label: Test 2
points:
bar: '02134'
foo: '02134'
bar: '02134'
- !!perl/hash:TestML::Block
label: Test 1
points:
bar: '98122'
foo: '98122'
bar: '98122'
- !!perl/hash:TestML::Block
label: Test 11
points:
bar: '90210'
foo: '90210'
bar: '90210'
- !!perl/hash:TestML::Block
label: Test 111
points:
bar: '60067'
foo: '60067'
bar: '60067'
16 changes: 8 additions & 8 deletions t/ast/function.tml
Expand Up @@ -7,7 +7,7 @@ statements:
- !!perl/hash:TestML::Assignment
name: Plan
expr: !!perl/hash:TestML::Num
value: '21'
value: 21
- !!perl/hash:TestML::Assignment
name: Label
expr: !!perl/hash:TestML::Str
Expand All @@ -21,11 +21,11 @@ statements:
value: Anonymous function never called
- !!perl/hash:TestML::Statement
expr: !!perl/hash:TestML::Call
name: True
name: 'True'
assert: !!perl/hash:TestML::Assertion
name: EQ
expr: !!perl/hash:TestML::Call
name: False
name: 'False'
- !!perl/hash:TestML::Assignment
name: test1
expr: !!perl/hash:TestML::Function
Expand Down Expand Up @@ -227,34 +227,34 @@ statements:
assert: !!perl/hash:TestML::Assertion
name: EQ
expr: !!perl/hash:TestML::Num
value: '42'
value: 42
- !!perl/hash:TestML::Statement
expr: !!perl/hash:TestML::Call
name: test4
args:
- !!perl/hash:TestML::Call
name: test5
- !!perl/hash:TestML::Num
value: '42'
value: 42

data:
- !!perl/hash:TestML::Block
label: Red Apple
points:
color: red
fruit: apple
color: red
thing: apple->red
- !!perl/hash:TestML::Block
label: Orange Orange
points:
color: orange
fruit: orange
color: orange
thing: orange->orange
- !!perl/hash:TestML::Block
label: Green Grape
points:
color: green
fruit: grape
color: green
thing: grape->green
- !!perl/hash:TestML::Block
label: One
Expand Down
8 changes: 4 additions & 4 deletions t/ast/label.tml
Expand Up @@ -7,7 +7,7 @@ statements:
- !!perl/hash:TestML::Assignment
name: Plan
expr: !!perl/hash:TestML::Num
value: '4'
value: 4
- !!perl/hash:TestML::Assignment
name: Label
expr: !!perl/hash:TestML::Str
Expand Down Expand Up @@ -41,18 +41,18 @@ data:
- !!perl/hash:TestML::Block
label: A Fruity Test
points:
fruit: apple
num: '14'
fruit: apple
text: 'A Fruity Test: 14) The apple'
- !!perl/hash:TestML::Block
label: X
points:
fruit: pear
num: '21'
fruit: pear
text: 'X: 21) The pear'
- !!perl/hash:TestML::Block
label: Last Test
points:
fruit: tomato
num: '99'
fruit: tomato
text: 'Last Test: 99) The tomato'
8 changes: 4 additions & 4 deletions t/ast/markers.tml
Expand Up @@ -7,7 +7,7 @@ statements:
- !!perl/hash:TestML::Assignment
name: Plan
expr: !!perl/hash:TestML::Num
value: '2'
value: 2
- !!perl/hash:TestML::Statement
assert: !!perl/hash:TestML::Assertion
name: EQ
Expand All @@ -23,14 +23,14 @@ data:
- !!perl/hash:TestML::Block
label: Test One
points:
bar: Hello
foo: Hello
bar: Hello
- !!perl/hash:TestML::Block
label: Test Two
points:
bar: 'O HAI
foo: 'O HAI

'
foo: 'O HAI
bar: 'O HAI

'
2 changes: 1 addition & 1 deletion t/ast/semicolons.tml
Expand Up @@ -6,7 +6,7 @@ statements:
- !!perl/hash:TestML::Assignment
name: Plan
expr: !!perl/hash:TestML::Num
value: '3'
value: 3
- !!perl/hash:TestML::Statement
expr: !!perl/hash:TestML::Str
value: one
Expand Down
14 changes: 7 additions & 7 deletions t/ast/truth.tml
Expand Up @@ -7,7 +7,7 @@ statements:
- !!perl/hash:TestML::Assignment
name: Plan
expr: !!perl/hash:TestML::Num
value: '9'
value: 9
- !!perl/hash:TestML::Assignment
name: Label
expr: !!perl/hash:TestML::Str
Expand All @@ -16,14 +16,14 @@ statements:
assert: !!perl/hash:TestML::Assertion
name: OK
expr: !!perl/hash:TestML::Call
name: True
name: 'True'
- !!perl/hash:TestML::Statement
assert: !!perl/hash:TestML::Assertion
name: OK
expr: !!perl/hash:TestML::Expression
calls:
- !!perl/hash:TestML::Call
name: False
name: 'False'
- !!perl/hash:TestML::Call
name: Not
- !!perl/hash:TestML::Statement
Expand All @@ -32,7 +32,7 @@ statements:
expr: !!perl/hash:TestML::Expression
calls:
- !!perl/hash:TestML::Call
name: True
name: 'True'
- !!perl/hash:TestML::Call
name: Not
- !!perl/hash:TestML::Call
Expand Down Expand Up @@ -70,16 +70,16 @@ statements:
expr: !!perl/hash:TestML::Expression
calls:
- !!perl/hash:TestML::Num
value: '0'
value: 0
- !!perl/hash:TestML::Call
name: Not
- !!perl/hash:TestML::Statement
assert: !!perl/hash:TestML::Assertion
name: OK
expr: !!perl/hash:TestML::Num
value: '1'
value: 1
- !!perl/hash:TestML::Statement
assert: !!perl/hash:TestML::Assertion
name: OK
expr: !!perl/hash:TestML::Num
value: '42'
value: 42
16 changes: 8 additions & 8 deletions t/ast/types.tml
Expand Up @@ -7,7 +7,7 @@ statements:
- !!perl/hash:TestML::Assignment
name: Plan
expr: !!perl/hash:TestML::Num
value: '11'
value: 11
- !!perl/hash:TestML::Assignment
name: Label
expr: !!perl/hash:TestML::Str
Expand All @@ -27,7 +27,7 @@ statements:
expr: !!perl/hash:TestML::Expression
calls:
- !!perl/hash:TestML::Num
value: '42'
value: 42
- !!perl/hash:TestML::Call
name: Type
assert: !!perl/hash:TestML::Assertion
Expand All @@ -38,7 +38,7 @@ statements:
expr: !!perl/hash:TestML::Expression
calls:
- !!perl/hash:TestML::Call
name: True
name: 'True'
- !!perl/hash:TestML::Call
name: Type
assert: !!perl/hash:TestML::Assertion
Expand All @@ -51,11 +51,11 @@ statements:
- !!perl/hash:TestML::Call
args:
- !!perl/hash:TestML::Num
value: '1'
value: 1
- !!perl/hash:TestML::Num
value: '2'
value: 2
- !!perl/hash:TestML::Num
value: '3'
value: 3
name: List
- !!perl/hash:TestML::Call
name: Type
Expand Down Expand Up @@ -103,7 +103,7 @@ statements:
- !!perl/hash:TestML::Assignment
name: n
expr: !!perl/hash:TestML::Num
value: '42'
value: 42
- !!perl/hash:TestML::Statement
expr: !!perl/hash:TestML::Expression
calls:
Expand All @@ -118,7 +118,7 @@ statements:
- !!perl/hash:TestML::Assignment
name: b
expr: !!perl/hash:TestML::Call
name: False
name: 'False'
- !!perl/hash:TestML::Statement
expr: !!perl/hash:TestML::Expression
calls:
Expand Down
2 changes: 1 addition & 1 deletion t/compile-testml-document.t
Expand Up @@ -23,7 +23,7 @@ Title = "O HAI TEST";
my $func = TestML::Compiler::Pegex->new->compile($testml);
ok $func, 'TestML string matches against TestML grammar';
is $func->namespace->{TestML}->value, '0.1.0', 'Version parses';
is $func->statements->[0]->expr->value, '2', 'Plan parses';
is $func->statements->[0]->expr->value, 2, 'Plan parses';
is $func->statements->[1]->expr->value, 'O HAI TEST', 'Title parses';
is $func->statements->[1]->expr->value, 'O HAI TEST', 'Title parses';

Expand Down

0 comments on commit 101fd6d

Please sign in to comment.