mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
repl: add readline for user input
This commit is contained in:
parent
99e07718da
commit
83732642ac
@ -4,8 +4,11 @@
|
||||
|
||||
module compiler
|
||||
|
||||
import os
|
||||
import term
|
||||
import (
|
||||
os
|
||||
term
|
||||
readline
|
||||
)
|
||||
|
||||
struct Repl {
|
||||
mut:
|
||||
@ -74,6 +77,7 @@ pub fn run_repl() []string {
|
||||
println('Use Ctrl-C or `exit` to exit')
|
||||
file := '.vrepl.v'
|
||||
temp_file := '.vrepl_temp.v'
|
||||
mut prompt := '>>> '
|
||||
defer {
|
||||
os.rm(file)
|
||||
os.rm(temp_file)
|
||||
@ -81,22 +85,26 @@ pub fn run_repl() []string {
|
||||
os.rm(temp_file.left(temp_file.len - 2))
|
||||
}
|
||||
mut r := Repl{}
|
||||
mut readline := readline.Readline{}
|
||||
vexe := os.args[0]
|
||||
for {
|
||||
if r.indent == 0 {
|
||||
print('>>> ')
|
||||
prompt = '>>> '
|
||||
}
|
||||
else {
|
||||
print('... ')
|
||||
prompt = '... '
|
||||
}
|
||||
r.line = os.get_raw_line()
|
||||
if r.line.trim_space() == '' && r.line.ends_with('\n') {
|
||||
continue
|
||||
}
|
||||
r.line = r.line.trim_space()
|
||||
if r.line.len == -1 || r.line == '' || r.line == 'exit' {
|
||||
mut line := readline.read_line(prompt) or {
|
||||
break
|
||||
}
|
||||
if line.trim_space() == '' && line.ends_with('\n') {
|
||||
continue
|
||||
}
|
||||
line = line.trim_space()
|
||||
if line.len <= -1 || line == '' || line == 'exit' {
|
||||
break
|
||||
}
|
||||
r.line = line
|
||||
if r.line == '\n' {
|
||||
continue
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user