use strictures 2;
use Module::Runtime qw(use_module);
-BEGIN { *u = \&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(
shell_state => use_module('DX::ShellState')->new(
mode => 'shell',
- template_query_state => use_module('DX::QueryState')->new
- )
+ template_query_state => use_module('DX::QueryState')->new(
+ predicates => {
+ 'eq' => use_module('DX::Predicate::Eq')->new,
+ member_at => use_module('DX::Predicate::MemberAt')->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