[libtest-bdd-cucumber-perl] 26/52: The option --i18n now prints the keywords in a more readable fashion. Again, this is closer to cucumber than it was before.
Intrigeri
intrigeri at moszumanska.debian.org
Thu Jun 19 10:18:34 UTC 2014
This is an automated email from the git hooks/post-receive script.
intrigeri pushed a commit to annotated tag 0.19
in repository libtest-bdd-cucumber-perl.
commit 11311ba0ec33454d8997d3ea425583f34bd0d0e0
Author: glauschwuffel <glauschwuffel at nomaden.org>
Date: Thu May 29 13:32:55 2014 +0200
The option --i18n now prints the keywords in a more readable fashion. Again, this is closer to cucumber than it was before.
---
lib/App/.#pherkin.pm | 1 +
lib/App/pherkin.pm | 15 +++++++++++----
lib/Test/BDD/Cucumber/I18n.pm | 21 ++++++++++++++++++++-
lib/Test/BDD/Cucumber/StepFile.pm | 11 ++++++-----
4 files changed, 38 insertions(+), 10 deletions(-)
diff --git a/lib/App/.#pherkin.pm b/lib/App/.#pherkin.pm
new file mode 120000
index 0000000..61182e7
--- /dev/null
+++ b/lib/App/.#pherkin.pm
@@ -0,0 +1 @@
+glauschwuffel at GregorGoldbachMBP-2.local.265
\ No newline at end of file
diff --git a/lib/App/pherkin.pm b/lib/App/pherkin.pm
index 7e8b60a..afa7a07 100644
--- a/lib/App/pherkin.pm
+++ b/lib/App/pherkin.pm
@@ -2,9 +2,10 @@ package App::pherkin;
use strict;
use warnings;
+
use FindBin::libs;
use Getopt::Long;
-use Test::BDD::Cucumber::I18n qw(languages langdef);
+use Test::BDD::Cucumber::I18n qw(languages langdef readable_keywords keyword_to_subname);
use List::Util qw(max);
use Moose;
@@ -172,14 +173,20 @@ sub _print_langdef {
my @keywords= qw(feature background scenario scenario_outline examples
given when then and but);
- my $max_length = max map { length $langdef->{$_} } @keywords;
+ my $max_length = max map { length readable_keywords ($langdef->{$_}) } @keywords;
my $format= "| %-16s | %-${max_length}s |\n";
-
for my $keyword (qw(feature background scenario scenario_outline
examples given when then and but )) {
- printf $format, $keyword, $langdef->{$keyword};
+ printf $format, $keyword, readable_keywords($langdef->{$keyword});
}
+
+ my $codeformat= "| %-16s | %-${max_length}s |\n";
+ for my $keyword (qw(given when then )) {
+ printf $codeformat, $keyword.' (code)',
+ readable_keywords($langdef->{$keyword}, \&keyword_to_subname);
+ }
+
exit;
}
diff --git a/lib/Test/BDD/Cucumber/I18n.pm b/lib/Test/BDD/Cucumber/I18n.pm
index e1fbf14..413f5f1 100644
--- a/lib/Test/BDD/Cucumber/I18n.pm
+++ b/lib/Test/BDD/Cucumber/I18n.pm
@@ -32,7 +32,7 @@ use utf8;
use base 'Exporter';
-our @EXPORT_OK=qw(languages langdef has_language);
+our @EXPORT_OK=qw(languages langdef has_language readable_keywords keyword_to_subname);
# Parse keywords hash for all supported languages from the DATA segment
my $json = join '', (<DATA>);
@@ -55,6 +55,25 @@ sub langdef {
return $langdefs->{$language};
}
+sub readable_keywords {
+ my ($string, $transform)=@_;
+
+ my @keywords= grep { $_ ne '[*]' } split(/\|/, $string);
+
+ @keywords = map { $transform->($_) } @keywords if $transform;
+
+ return join(', ', map { '"'.$_.'"' } @keywords);
+}
+
+sub keyword_to_subname {
+ my ($word)=@_;
+
+ # remove non-word characters so we have a decent sub name
+ $word =~ s{[^\p{Word}]}{}g;
+
+ return $word;
+}
+
=head1 LANGUAGES
Languages are defined in a JSON-based hash in the __DATA__ section of this file.
diff --git a/lib/Test/BDD/Cucumber/StepFile.pm b/lib/Test/BDD/Cucumber/StepFile.pm
index 2912cb3..0728ce0 100755
--- a/lib/Test/BDD/Cucumber/StepFile.pm
+++ b/lib/Test/BDD/Cucumber/StepFile.pm
@@ -10,7 +10,7 @@ use strict;
use warnings;
use Carp qw/croak/;
-use Test::BDD::Cucumber::I18n qw(languages langdef);
+use Test::BDD::Cucumber::I18n qw(languages langdef keyword_to_subname);
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(Givenn When Then Step Transform Before After C S Angenommen);
@@ -103,16 +103,17 @@ sub _alias_function {
my @keywords=split('\|', $keywords);
for my $word (@keywords) {
+ # asterisks won't be aliased to any sub
next if $word eq '[*]';
- # remove non-word characters
- $word =~ s{[^\p{Word}]}{}g;
+
+ my $subname=keyword_to_subname($word);
no strict 'refs';
no warnings 'redefine';
- *$word=$f;
+ *$subname=$f;
use warnings 'redefine';
- push @SUBS, $word;
+ push @SUBS, $subname;
use strict 'refs';
}
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libtest-bdd-cucumber-perl.git
More information about the Pkg-perl-cvs-commits
mailing list