Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local nScreenWidth, nScreenHeight = term.getSize()
- function limitRead( nLength, cReplaceChar )
- term.setCursorBlink( true )
- nLength = nLength or -1 -- -1 is unlimited
- sReturnString = ""
- xPos, yPos = term.getCursorPos()
- while true do
- predictText(sReturnString)
- term.setCursorPos( xPos, yPos )
- if not cReplaceChar then term.write( sReturnString )
- else term.write( string.rep( cReplaceChar, string.len( sReturnString ) ) ) end
- event, char = os.pullEvent()
- if nLength ~= -1 and string.len( sReturnString ) >= nLength then term.setCursorBlink( false ); return sReturnString end -- Length check
- if event == "char" then sReturnString = sReturnString .. char
- elseif event == "key" and char == 28 then term.setCursorBlink( false ); return sReturnString -- Enter
- elseif event == "key" and char == 14 then -- Backspace
- term.setCursorPos( xPos, yPos )
- term.write( string.rep( " ", string.len( sReturnString ) ) )
- sReturnString = string.sub( sReturnString, 1, string.len( sReturnString )-1 )
- term.setCursorPos( xPos, yPos )
- if not cReplaceChar then term.write( sReturnString )
- else term.write( string.rep( cReplaceChar, string.len( sReturnString ) ) ) end
- end
- term.setCursorPos( xPos, yPos )
- term.write( string.rep( " ", string.len( sReturnString ) ) )
- term.setCursorPos( xPos, yPos )
- if not cReplaceChar then term.write( sReturnString )
- else term.write( string.rep( cReplaceChar, string.len( sReturnString ) ) ) end
- end
- end
- function predictText(sString)
- local tFiles = fs.list("/")
- if sString:len() > 0 then
- local tOptions = {}
- -- Determine the options predicted.
- for index, fileName in ipairs(tFiles) do
- if fileName:sub(1, sString:len()) == sString then
- table.insert(tOptions, fileName)
- end
- end
- -- Clear the space.
- for line = 4, nScreenHeight - 4 do
- term.setCursorPos(1, line)
- term.write(string.rep(" ", nScreenWidth))
- end
- if #tOptions > 0 then
- -- Print the options.
- for line, fileName in ipairs(tOptions) do
- term.setCursorPos(3, line + 3)
- term.write(fileName)
- end
- else
- term.setCursorPos(3, 4)
- term.write("No results found.")
- end
- else
- for line, fileName in ipairs(tFiles) do
- term.setCursorPos(3, line + 3)
- term.write(fileName)
- end
- end
- end
- function clearScreen()
- term.clear()
- term.setCursorPos(1, 1)
- end
- clearScreen()
- write("> ")
- s = limitRead()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement