You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
# Note:
|
|
# Crystal already has "readline" library.
|
|
# I implemented a subset of it again for practice.
|
|
|
|
@[Link("readline")]
|
|
lib LibReadline
|
|
fun readline(prompt : UInt8*) : UInt8*
|
|
fun add_history(line : UInt8*)
|
|
end
|
|
|
|
def my_readline(prompt = "")
|
|
line = LibReadline.readline(prompt)
|
|
if line
|
|
LibReadline.add_history(line)
|
|
String.new(line)
|
|
else
|
|
nil
|
|
end
|
|
ensure
|
|
LibC.free(line as Void*) if line
|
|
end
|