Skip to content

Commit 00ce1ac

Browse files
committed
%Import uses TESTML_LIB
Also support trailing comments on %Import
1 parent be0f08d commit 00ce1ac

File tree

4 files changed

+36
-14
lines changed

4 files changed

+36
-14
lines changed

src/testml-compiler-perl/lib/TestML/Compiler.pm

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,32 @@ sub importer {
7171
$root =~ s/^(.*)\/.*/$1/;
7272
}
7373

74-
my $testml_file = "$root/$name.tml";
74+
my @lib = grep length,
75+
split(':', ($ENV{TESTML_LIB} || '')), $root;
76+
77+
my $testml_file;
78+
for my $lib (@lib) {
79+
$testml_file = "$lib/$name.tml";
80+
last if -e "$lib/$name.tml";
81+
$testml_file = '';
82+
}
83+
if (not $testml_file) {
84+
die "Can't find '$name.tml' in:\n" .
85+
join '', map "- '$_'\n", @lib;
86+
}
7587
my $testml_input = file_read($testml_file);
7688

77-
return parse_testml(
89+
my $parse = parse_testml(
7890
$testml_input,
7991
$testml_file,
8092
\&importer,
8193
);
94+
95+
for my $block (@{$parse->{data}}) {
96+
$block->{Name} = $name;
97+
}
98+
99+
return $parse;
82100
}
83101

84102
sub ast_to_json {

src/testml-compiler-perl/lib/TestML/Compiler/Grammar.pm

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ sub rule_undent {
4949
return;
5050
}
5151

52-
sub make_tree { # Generated/Inlined by Pegex::Grammar (0.64_01)
52+
sub make_tree { # Generated/Inlined by Pegex::Grammar (0.75)
5353
{
5454
'+toprule' => 'testml_document',
5555
'DOT' => {
@@ -192,7 +192,7 @@ sub make_tree { # Generated/Inlined by Pegex::Grammar (0.64_01)
192192
'.ref' => 'function_signature'
193193
},
194194
{
195-
'.rgx' => qr/\G[\ \t]*=\>(?:;(?:\ (?=\S))?|\r?\n?)/
195+
'.rgx' => qr/\G[\ \t]*=\>(?:;(?:\ (?=\S))?|[\ \t]*(?:\#.*\r?\n)|\r?\n?)/
196196
},
197197
{
198198
'-skip' => 1,
@@ -313,7 +313,7 @@ sub make_tree { # Generated/Inlined by Pegex::Grammar (0.64_01)
313313
'.rgx' => qr/\G[\ \t]+%[\ \t]+/
314314
},
315315
'ending' => {
316-
'.rgx' => qr/\G(?:;(?:\ (?=\S))?|\r?\n?)/
316+
'.rgx' => qr/\G(?:;(?:\ (?=\S))?|[\ \t]*(?:\#.*\r?\n)|\r?\n?)/
317317
},
318318
'expression_label' => {
319319
'.rgx' => qr/\G"((?:[^\n\\"]|\\[\\"0nt])*?)":\s*/
@@ -365,7 +365,7 @@ sub make_tree { # Generated/Inlined by Pegex::Grammar (0.64_01)
365365
'.ref' => 'function_signature'
366366
},
367367
{
368-
'.rgx' => qr/\G[\ \t]*=\>(?:;(?:\ (?=\S))?|\r?\n?)/
368+
'.rgx' => qr/\G[\ \t]*=\>(?:;(?:\ (?=\S))?|[\ \t]*(?:\#.*\r?\n)|\r?\n?)/
369369
},
370370
{
371371
'-skip' => 1,
@@ -547,7 +547,7 @@ sub make_tree { # Generated/Inlined by Pegex::Grammar (0.64_01)
547547
]
548548
},
549549
'module_name' => {
550-
'.rgx' => qr/\G(\S+)/
550+
'.rgx' => qr/\G(\w\S*)/
551551
},
552552
'number_object' => {
553553
'.rgx' => qr/\G(\-?[0-9]+(?:\.[0-9]+)?)/
@@ -649,7 +649,7 @@ sub make_tree { # Generated/Inlined by Pegex::Grammar (0.64_01)
649649
'.rgx' => qr/\G\s*:"((?:[^\n\\"]|\\[\\"0nt])*?)"/
650650
},
651651
'testml_directive' => {
652-
'.rgx' => qr/\G%TestML[\ \t]+([0-9]+\.[0-9]+\.[0-9]+)(?:;(?:\ (?=\S))?|\r?\n?)/
652+
'.rgx' => qr/\G%TestML[\ \t]+([0-9]+\.[0-9]+\.[0-9]+)(?:;(?:\ (?=\S))?|[\ \t]*(?:\#.*\r?\n)|\r?\n?)/
653653
},
654654
'testml_document' => {
655655
'.all' => [

src/testml-pgx/testml.pgx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ point-multi: /
267267

268268
#------------------------------------------------------------------------------
269269

270-
ending: /(: SEMI (: SPACE (= NS))? | EOL?)/
270+
ending: /(: SEMI (: SPACE (= NS))? | - comment-line | EOL?)/
271271

272272
assignment-operator:
273273
/(: '=' | '||=' )/
@@ -306,7 +306,7 @@ identifier-name:
306306
identifier-user:
307307
/ LOWER ALNUM* (: DASH ALPHA ALNUM*)* /
308308

309-
module-name: /( NS+ )/
309+
module-name: /( WORD NS* )/
310310

311311
point-name:
312312
/(: identifier-user | pseudo-point-name)/

test/compiler-tml/070-import-directive.tml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ Diff = 1
3131
"data": [
3232
{ "Label": "Test 1",
3333
"a": 1,
34-
"b": 2}]}
34+
"b": 2,
35+
"Name": "data"}]}
3536

3637
=== Import multiple files at once
3738
--- input
@@ -65,12 +66,15 @@ Diff = 1
6566
"data": [
6667
{ "Label": "Test 1",
6768
"a": 1,
68-
"b": 2},
69+
"b": 2,
70+
"Name": "data1"},
6971
{ "Label": "Test 2",
7072
"a": 3,
71-
"b": 4},
73+
"b": 4,
74+
"Name": "data2"},
7275
{ "Label": "Test 3",
7376
"a": 5,
74-
"b": 6}]}
77+
"b": 6,
78+
"Name": "data3"}]}
7579

7680
# vim: ft=:

0 commit comments

Comments
 (0)