Commit | Line | Data |
8d66ec34 |
1 | use MooseX::Declare; |
2 | |
3 | role 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 | } |