File: Util.pm

package info (click to toggle)
libtest-bdd-cucumber-perl 0.75-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 680 kB
  • sloc: perl: 7,905; makefile: 8; sh: 5
file content (61 lines) | stat: -rw-r--r-- 1,204 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package Test::BDD::Cucumber::Util;
$Test::BDD::Cucumber::Util::VERSION = '0.75';
use strict;
use warnings;

=head1 NAME

Test::BDD::Cucumber::Util - Some functions used throughout the code

=head1 VERSION

version 0.75

=head1 DESCRIPTION

Some functions used throughout the code

=head1 FUNCTIONS

=head2 bs_quote

=head2 bs_unquote

C<bs_quote()> "makes safe" strings with backslashed characters in it, so other
operations can be done on them. C<bs_unquote> goes the other way.

 $string = "foo \<bar\> <baz>";
 $string = bs_quote( $string );
 $string =~ s/<([^>]+)>/"$1"/g;
 $string = bs_unquote( $string );
 $string eq 'foo <bar> "baz"';

=cut

my $marker_start = ';;;TEST_BDD_TEMP_MARKER_OPEN;;;';
my $marker_end   = ';;;TEST_BDD_TEMP_MARKER_END;;;';

sub bs_quote {
    my $string = shift;
    $string =~ s/\\(.)/${marker_start} . ord($1) . ${marker_end}/ge;
    return $string;
}

sub bs_unquote {
    my $string = shift;
    $string =~ s/$marker_start(\d+)$marker_end/chr($1)/ge;
    return $string;
}

=head1 AUTHOR

Peter Sergeant C<pete@clueball.com>

=head1 LICENSE

  Copyright 2019-2020, Erik Huelsmann
  Copyright 2011-2019, Peter Sergeant; Licensed under the same terms as Perl

=cut

1;