| 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 | ||||||