मैं एक प्रोग्राम बनाने की कोशिश कर रहा हूं जो उपयोगकर्ता इनपुट को iex
या erl
जैसा करता है (उदा। जब पिछले इतिहास को नेविगेट करने के लिए अनुमति कुंजी दबाते हैं)।Elixir के लिए कोई भी रेडलाइन बाध्यकारी समर्थन?
तो मानक IO.gets
इस प्रकार प्रयोग किया जाता है,
IO.gets "user> "
कंसोल के साथ निम्न में जब ऊपर से अनुमति देते हैं दबाया जाता है समाप्त होता है।
user> ^[[A^[[A
क्या कोई फ़ंक्शन/लाइब्रेरी है जो रीडलाइन क्षमता है जिसका उपयोग इलीक्सिर कोड के अंदर किया जा सकता है?
मैं अब तक है कि क्या जांच की है,
- कुछ भाषाओं ReadLine पुस्तकालयों के लिए समर्थन के लिए बाध्य है, लेकिन मैं अमृत के लिए इसी क्षमता ढूँढने में सक्षम नहीं किया गया है।
iex
कार्यान्वयनerl
(/lib/iex/history.ex को केवल इतिहास की सूची प्रबंधित करने के लिए लगता है) को इस क्षमता का प्रतिनिधित्व करने लगता है, लेकिन मैं erlang पक्ष में इसी कार्यक्षमता को खोजने में सक्षम नहीं हूं।- मैंने
erl_ddll.load
को आजमाया है, लेकिन निम्न से आगे जाने में विफल रहा है।
iex(4)> :erl_ddll.load('/usr/lib', 'libreadline')
{:error, {:open_error, -10}}
iex(5)> :erl_ddll.format_error({:open_error, -10})
'dlopen(/usr/lib/libreadline.so, 2): image not found'
मैं पर OSX हूँ और homebrew के माध्यम से libreadline स्थापित है, और मैं /usr/lib
में libreadline.dylib
पा सकते हैं
,।
[उद्देश्य के बारे में अतिरिक्त नोट्स]
मैं अमृत है, जो एक तुतलाना विभिन्न भाषाओं में लागू (लेकिन अमृत/erlang साथ नहीं) repl है साथ निम्नलिखित (मल) पर प्रयोग किया गया था।
कदम का हिस्सा इतिहास के साथ repl लागू कर रहा है, और कुछ भाषाओं ReadLine बाध्यकारी पुस्तकालयों का उपयोग कर रहे वहाँ देशी एक नहीं है, तो।
[एक छोटे से अधिक अद्यतन - 2015/03/22]
मैं एनआईएफ दृष्टिकोण के साथ कोशिश कर रहा था (encurses रूप में इसी तरह के रूप में) ReadLine पुस्तकालय का उपयोग करें। मैं इसे erlang (erl) पर कुछ हद तक काम कर सकता था, लेकिन elixir पक्ष पर फंस गया। सी पुस्तकालयों (रीडलाइन या सिर्फ सादा स्कैनफ़) से इनपुट पढ़ने पर, "मिश्रण रन-ए" या "आईएक्सएक्स" थोड़ा अजीब व्यवहार करता है (कुछ इनपुट छोड़ देता है या अनदेखा करता है), लेकिन कारण नहीं मिला। encurses समान व्यवहार व्यवहार लगता है।
निम्नलिखित मेरे परीक्षण थे।
https://github.com/parroty/ereadline
https://github.com/parroty/readline
मैं rlwrap जैसे अधिक सामान्य दृष्टिकोण के साथ हो रहा है।
संभावित डुप्लिकेट [निरंतर कमांड इतिहास प्राप्त करने के लिए आईईएक्स शैल के आउटपुट को कैसे सहेजना/लॉग करना है?] (Http://stackoverflow.com/questions/22426716/how-to-save-log-the-output- ऑफ-द-आईएसएक्स-शैल-टू-गेट-पर्सिस्टेंट-कमांड-हिस्ट्री) –
मुझे किसी भी रीडलाइन एकीकरण से अवगत नहीं है, लेकिन क्या आप जो हासिल करना चाहते हैं उसके साथ मदद करेंगे? https://github.com/jzellner/encurses –
संदर्भों के लिए धन्यवाद। मैं आईईएक्स के बाहर इतिहास को लागू करने की तलाश में था (मैंने प्रश्न में पृष्ठभूमि को अपडेट किया है)। लेकिन, कुछ तकनीक लागू हो सकती है। मैं उन पर और अधिक जांच करूँगा। मैं भी ncurses की जांच करेंगे। – parroty