diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/readline.lua | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/examples/readline.lua b/examples/readline.lua index ff215dd..98da267 100644 --- a/examples/readline.lua +++ b/examples/readline.lua | |||
| @@ -144,10 +144,12 @@ readline.__index = readline | |||
| 144 | -- @tparam[opt=""] string opts.value the default value | 144 | -- @tparam[opt=""] string opts.value the default value |
| 145 | -- @tparam[opt=`#value`] number opts.position of the cursor in the input | 145 | -- @tparam[opt=`#value`] number opts.position of the cursor in the input |
| 146 | -- @tparam[opt={"\10"/"\13"}] table opts.exit_keys an array of keys that will cause the readline to exit | 146 | -- @tparam[opt={"\10"/"\13"}] table opts.exit_keys an array of keys that will cause the readline to exit |
| 147 | -- @tparam[opt=system.sleep] function opts.fsleep the sleep function to use (see `system.readansi`) | ||
| 147 | -- @treturn readline the new readline object | 148 | -- @treturn readline the new readline object |
| 148 | function readline.new(opts) | 149 | function readline.new(opts) |
| 149 | local value = utf8parse(opts.value or "") | 150 | local value = utf8parse(opts.value or "") |
| 150 | local prompt = utf8parse(opts.prompt or "") | 151 | local prompt = utf8parse(opts.prompt or "") |
| 152 | local fsleep = opts.fsleep or sys.sleep | ||
| 151 | local pos = math.floor(opts.position or (#value + 1)) | 153 | local pos = math.floor(opts.position or (#value + 1)) |
| 152 | pos = math.max(math.min(pos, (#value + 1)), 1) | 154 | pos = math.max(math.min(pos, (#value + 1)), 1) |
| 153 | local len = math.floor(opts.max_length or 80) | 155 | local len = math.floor(opts.max_length or 80) |
| @@ -175,6 +177,7 @@ function readline.new(opts) | |||
| 175 | position = pos, -- the current position in the input | 177 | position = pos, -- the current position in the input |
| 176 | drawn_before = false, -- if the prompt has been drawn | 178 | drawn_before = false, -- if the prompt has been drawn |
| 177 | exit_keys = exit_keys, -- the keys that will cause the readline to exit | 179 | exit_keys = exit_keys, -- the keys that will cause the readline to exit |
| 180 | fsleep = fsleep, -- the sleep function to use | ||
| 178 | } | 181 | } |
| 179 | 182 | ||
| 180 | setmetatable(self, readline) | 183 | setmetatable(self, readline) |
| @@ -413,7 +416,7 @@ function readline:__call(timeout, redraw) | |||
| 413 | local timeout_end = sys.gettime() + timeout | 416 | local timeout_end = sys.gettime() + timeout |
| 414 | 417 | ||
| 415 | while true do | 418 | while true do |
| 416 | local key, keytype = sys.readansi(timeout_end - sys.gettime()) | 419 | local key, keytype = sys.readansi(timeout_end - sys.gettime(), self.fsleep) |
| 417 | if not key then | 420 | if not key then |
| 418 | -- error or timeout | 421 | -- error or timeout |
| 419 | return nil, keytype | 422 | return nil, keytype |
| @@ -458,6 +461,7 @@ local rl = readline.new{ | |||
| 458 | value = "Hello, 你-好 World 🚀!", | 461 | value = "Hello, 你-好 World 🚀!", |
| 459 | -- position = 2, | 462 | -- position = 2, |
| 460 | exit_keys = {key_sequences.enter, "\27", "\t", "\27[Z"}, -- enter, escape, tab, shift-tab | 463 | exit_keys = {key_sequences.enter, "\27", "\t", "\27[Z"}, -- enter, escape, tab, shift-tab |
| 464 | fsleep = sys.sleep, | ||
| 461 | } | 465 | } |
| 462 | 466 | ||
| 463 | 467 | ||
