Skip to content

Commit 7165d88

Browse files
committed
[Perl] add MarkdownTokenMatcher skeleton
1 parent 7bb9365 commit 7165d88

File tree

3 files changed

+30
-8
lines changed

3 files changed

+30
-8
lines changed

perl/bin/gherkin-generate-tokens

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,23 @@ use lib 'Gherkin-latest/lib';
66

77
use Gherkin::Parser;
88
use Gherkin::TokenFormatterBuilder;
9+
use Gherkin::TokenMatcher;
10+
use Gherkin::MarkdownTokenMatcher;
911

1012
package App::GherkinGenerateTokens;
1113

1214
sub run {
1315
my ( $class, $fh, @file_list ) = @_;
1416

15-
my $parser
16-
= Gherkin::Parser->new( Gherkin::TokenFormatterBuilder->new() );
17-
18-
print $fh join "\n", @{ $parser->parse($_) } for @file_list;
17+
print $fh join "\n",
18+
@{ Gherkin::Parser->new(
19+
Gherkin::TokenFormatterBuilder->new(),
20+
/\.md$/
21+
? Gherkin::MarkdownTokenMatcher->new()
22+
: Gherkin::TokenMatcher->new()
23+
)->parse($_)
24+
}
25+
for @file_list;
1926
print $fh "\n";
2027

2128
return;

perl/lib/Gherkin.pm

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ use Cucumber::Messages;
1010
use Gherkin::AstBuilder;
1111
use Gherkin::Parser;
1212
use Gherkin::Pickles::Compiler;
13+
use Gherkin::TokenMatcher;
14+
use Gherkin::MarkdownTokenMatcher;
1315

1416

1517
use Class::XSAccessor accessors =>
@@ -55,8 +57,10 @@ sub from_paths {
5557
source => Cucumber::Messages::Source->new(
5658
uri => $path,
5759
data => $content,
58-
media_type => Cucumber::Messages::Source::MEDIATYPE_TEXT_X_CUCUMBER_GHERKIN_PLAIN,
59-
)
60+
media_type => $path =~ m/\.md$/
61+
? Cucumber::Messages::Source::MEDIATYPE_TEXT_X_CUCUMBER_GHERKIN_MARKDOWN
62+
: Cucumber::Messages::Source::MEDIATYPE_TEXT_X_CUCUMBER_GHERKIN_PLAIN,
63+
)
6064
),
6165
$id_generator,
6266
$sink);
@@ -115,8 +119,11 @@ sub from_source {
115119
if ($self->include_ast or $self->include_pickles) {
116120
my $source = $envelope->source;
117121
my $parser = Gherkin::Parser->new(
118-
Gherkin::AstBuilder->new($id_generator)
119-
);
122+
Gherkin::AstBuilder->new($id_generator),
123+
$source->media_type eq Cucumber::Messages::Source::MEDIATYPE_TEXT_X_CUCUMBER_GHERKIN_MARKDOWN
124+
? Gherkin::MarkdownTokenMatcher->new()
125+
: Gherkin::TokenMatcher->new()
126+
);
120127
my $data = $source->data;
121128

122129
local $@;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package Gherkin::MarkdownTokenMatcher;
2+
3+
use strict;
4+
use warnings;
5+
6+
use base 'Gherkin::TokenMatcher';
7+
8+
1;

0 commit comments

Comments
 (0)