X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=bin%2Fdx;h=cf0410ecae860dffc18d02ef71caeca85d39b6e1;hb=55131db4600e877c076ab37e907540229274534d;hp=d5a210756339f26290fc7699689f328737034aae;hpb=fa8f5696d6233768df6c1e54df63b11f37926f2a;p=scpubgit%2FDX.git diff --git a/bin/dx b/bin/dx index d5a2107..cf0410e 100644 --- a/bin/dx +++ b/bin/dx @@ -2,6 +2,15 @@ use strictures 2; use Module::Runtime qw(use_module); use DX::Utils qw(:builders); +{ package FakeReadline; + sub readline { + return undef unless defined(my $line = readline($_[0])); + print $_[1].$line; + return $line; + } + sub history_add {} +} + use_module('DX::ShellFrontend')->new( session_mode => 'shell', session => use_module('DX::ShellSession')->new( @@ -11,12 +20,20 @@ use_module('DX::ShellFrontend')->new( predicates => { 'eq' => use_module('DX::Predicate::Eq')->new, member_at => use_module('DX::Predicate::MemberAt')->new, - is_dict => use_module('DX::Predicate::IsDict')->new, + dict => use_module('DX::Predicate::Dict')->new, }, globals => dict(), proposition_sequence => use_module('DX::PropositionSequence')->new_empty, ), - ) + trace_these => {}, + ), + ), + (@ARGV + ? (readline => do { + open my $fh, '<', $ARGV[0] or die "Couldn't open script: $!"; + bless($fh, 'FakeReadline') + }) + : () ), )->repl