File: | blib/lib/Inline/Nouse.pm |
Coverage: | 27.6% |
line | stmt | bran | cond | sub | time | code |
---|---|---|---|---|---|---|
1 | package Inline::Nouse; | |||||
2 | ||||||
3 | $VERSION = '0.03'; | |||||
4 | ||||||
5 | require Inline; | |||||
6 | require Inline::Interp; | |||||
7 | require Language::Nouse; | |||||
8 | ||||||
9 | @ISA = qw(Inline Inline::Interp); | |||||
10 | ||||||
11 | 1 1 1 | 4 2 7 | use strict; | |||
12 | 1 1 1 | 6 2 7 | use Carp; | |||
13 | ||||||
14 | my $g_io; | |||||
15 | ||||||
16 | sub register { | |||||
17 | return { | |||||
18 | 0 | language => 'nouse', | ||||
19 | aliases => ['Nouse', 'nouse'], | |||||
20 | type => 'interpreted', | |||||
21 | suffix => 'ns', | |||||
22 | }; | |||||
23 | } | |||||
24 | ||||||
25 | sub do_load { | |||||
26 | 0 | my ($funcs, $code) = @_; | ||||
27 | ||||||
28 | 0 | while($code =~ m/function(\s+)([a-z0-9_]+)(\s*){(.*?)}/isg){ | ||||
29 | 0 | Inline::Interp::add_func($funcs, $2, $4); | ||||
30 | } | |||||
31 | } | |||||
32 | ||||||
33 | sub load { | |||||
34 | 0 | Inline::Interp::load(@_); | ||||
35 | } | |||||
36 | ||||||
37 | sub get_char { | |||||
38 | 0 | return Inline::Interp::input_char($g_io); | ||||
39 | } | |||||
40 | ||||||
41 | sub put_char { | |||||
42 | 0 | my ($out) = @_; | ||||
43 | 0 | Inline::Interp::output_char($g_io, $out); | ||||
44 | } | |||||
45 | ||||||
46 | sub do_run { | |||||
47 | 0 | my ($code, $io) = @_; | ||||
48 | ||||||
49 | 0 | $g_io = $io; | ||||
50 | ||||||
51 | 0 | my $interp = new Language::Nouse; | ||||
52 | 0 | $interp->load_linenoise($code); | ||||
53 | 0 | $interp->set_get(\&get_char); | ||||
54 | 0 | $interp->set_put(\&put_char); | ||||
55 | ||||||
56 | 0 | $interp->run(); | ||||
57 | } | |||||
58 | ||||||
59 | 1; | |||||
60 |