2013-05-16 3 views
1

Если запустить скрипт в Rebol и сказать что-то вроде print {Hello}, вы в конечном итоге вызывая системную версию PRINTКак запустить Rebol REPL в контексте, помимо системного контекста?

>> bind? 'print 
== make object! [ 
    system: make object! [ 
     product: 'core 
     version: 2.101.0.2.5 
     build: 22-Jan-2013/2:44:29 
     platform: [ 
      Macintosh osx-x86 
     ] 
     license: {Copyright 2012 REB.... 

Скажем, у меня был сценарий %repl-context.r и определил контекст, в котором PRINT сделал что-то еще. Есть ли способ запросить REPL для интерактивного запуска в этом контексте, для нескольких последовательных команд ...?

ответ

2

Существует общая оболочка консоли реплики для обработки перенаправлений ввода-вывода для StdIn StdOut.

Я часто использую rlwrap из http://utopia.knoware.nl/~hlub/rlwrap/#rlwrap

Он использует GNU Readline LIB

+0

Принимая это как единственный ответ, возможно в это время ... и еще несколько пунктов никогда не причиняли вреда никому, перейдите в раздел [StackOverflow Rebol/Red chat] (http://chat.stackoverflow.com/rooms/291/ rebol-and-red) :-) – HostileFork

2

Я не совсем уверен в цели, но вы могли бы подорвать консоль с собственным процессом ввода/вывода с управляемым контуром:

while [not find ["q" "quit"] command: ask "my-prompt> "][ 
    result: do bind load command 'my-context 
    if value? result [print ["==" mold result]] 
    () 
] 

Я использую этот метод с моим HTTP Console для R2.

Другая возможность заключается в том, чтобы работать в системе системы/порты/входной порт.

+0

Я думал об этом с точки зрения реализации [РЕПЛ для Reblis] (https://trello.com/c/WiQ5lSXM). Ваша идея работает на базовом уровне, но не обязательно наследует обман стандартной консоли Rebol для таких вещей, как редактирование многострочного ввода ... или обработка Ctrl-C ... такого рода вещи. – HostileFork

Смежные вопросы