action names are now parameterizable
[catagits/CatalystX-Declare.git] / lib / CatalystX / Declare / Context / StringParsing.pm
CommitLineData
8d66ec34 1use MooseX::Declare;
2
3role CatalystX::Declare::Context::StringParsing {
4
5 use Devel::Declare;
6
7 after inject_code_parts_here (@args) {
dd2759b0 8 # print "INJECT " . $self->get_linestr . "\n";
8d66ec34 9 #print "BLOCK $_\n" for @args;
10 }
11
12 after inject_if_block (@args) {
13# print "BLOCK " . $self->get_linestr . "\n";
14 #print "BLOCK $_\n" for @args;
15 }
16
17 method rest_of_line {
18
19 $self->skipspace;
20
21 my $linestr = $self->get_linestr;
22 my $left = substr $linestr, $self->offset;
23
24 return $left;
25 }
26
27 method strip_from_linestr (Int $chars) {
28
29 my $linestr = $self->get_linestr;
30 substr($linestr, $self->offset, $chars) = '';
31 $self->set_linestr($linestr);
32 }
33
34 method get_string {
35
36 my $left = $self->rest_of_line;
37
38 if ($left =~ /^"/ and my $num = Devel::Declare::toke_scan_str $self->offset) {
39
40 my $found = Devel::Declare::get_lex_stuff;
41 Devel::Declare::clear_lex_stuff;
42
43 $self->strip_from_linestr($num);
44
45 return qq{"$found"};
46 }
47 else {
48 return $self->get_scalar;
49 }
50 }
51
52 method get_scalar {
53
54 my $left = $self->rest_of_line;
55
56 if ($left =~ s/^ ( \$ [a-z_] [a-z0-9_]* ) //ix) {
57
58 my $found = $1;
59
60 $self->strip_from_linestr( length $found );
61
62 return qq{"$found"};
63 }
64 else {
65 return undef;
66 }
67 }
68}