move backtracing out into a step
[scpubgit/DX.git] / bin / dx
diff --git a/bin/dx b/bin/dx
index d5a2107..cf0410e 100644 (file)
--- 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