Ruby में Parse Commands में OptionParser का उपयोग करें

में ऑप्शन OptionParser की विशेषताओं पर चर्चा करते हुए हमने उन कुछ कारणों पर चर्चा की, जो OptionParser का उपयोग करते हैं माणिक पार्स करने के लिए मैन्युअल रूप से एआरजीवी के माध्यम से देखने के लिए बेहतर है आदेशों हाथ से। अब यह सीखने का समय है कि OptionParser और इसकी विशेषताओं का उपयोग कैसे करें।

इस ट्यूटोरियल के सभी उदाहरणों के लिए निम्न बॉयलरप्लेट कोड का उपयोग किया जाएगा। किसी भी उदाहरण को आज़माने के लिए, बस उदाहरण का उपयोग करें opts.on TODO टिप्पणी के बगल में ब्लॉक करें। कार्यक्रम चलाने से आपके स्विच के प्रभावों की जांच करने की अनुमति मिलती है, विकल्प और एआरजीवी की स्थिति को प्रिंट करेगा।

#! / usr / bin / env माणिक
'ऑप्टपर्स' की आवश्यकता
'पीपी' की आवश्यकता
# यह हैश सभी विकल्पों को धारण करेगा
# कमांड-लाइन से पार्स किया गया
# OptionParser।
विकल्प = {}
Optparse = OptionParser.new do | opts |
# TODO: यहां कमांड-लाइन विकल्प रखें
# यह मदद स्क्रीन प्रदर्शित करता है, सभी कार्यक्रम हैं
# यह विकल्प माना जाता है।
opts.on ('-h', '--help', 'Display this screen') करते हैं
ऑप्स डालता है
बाहर जाएं
समाप्त
समाप्त
# कमांड-लाइन को पार्स करें। याद रखें कि दो रूप हैं
instagram viewer

# तोते की विधि। The पार्स ’विधि बस पर्स निकालती है
# ARGV, जबकि 'पार्स!' पद्धति ARGV को पार्स करती है और हटाती है
# किसी भी विकल्प वहाँ, साथ ही किसी भी पैरामीटर के लिए
# विकल्प। जो कुछ बचा है वह आकार बदलने के लिए फाइलों की सूची है।
optparse.parse!
पीपी "विकल्प:", विकल्प
पीपी "एआरजीवी:", एआरजीवी

सरल स्विच

एक साधारण स्विच कोई वैकल्पिक रूप या कोई मापदंडों के साथ एक तर्क है। इसका प्रभाव केवल विकल्पों में एक झंडा लगाना होगा हैश. कोई अन्य पैरामीटर पास नहीं किया जाएगा पर तरीका।

विकल्प [: simple] = false
opts.on ('-s', '--simple', "सरल तर्क") करते हैं
विकल्प [: सरल] = सत्य
समाप्त

अनिवार्य पैरामीटर के साथ स्विच करें

स्विच जो एक पैरामीटर लेते हैं उन्हें स्विच के लंबे रूप में पैरामीटर नाम को बताने की आवश्यकता होती है। उदाहरण के लिए, "-f", "- फ़िले फ़ाइल" का अर्थ है -f या --file स्विच File नामक एकल पैरामीटर लेता है, और यह पैरामीटर अनिवार्य है। आप या तो -f का उपयोग नहीं कर सकते हैं या - बिना इसे भी एक पैरामीटर पास किए बिना।

विकल्प [: mand] = ""
opts.on ('-m', '--mandatory FILE', "अनिवार्य तर्क") do | f |
विकल्प [: mand] = f
समाप्त

वैकल्पिक पैरामीटर के साथ स्विच करें

स्विच मापदंडों को अनिवार्य नहीं होना चाहिए, वे वैकल्पिक हो सकते हैं। स्विच पैरामीटर को वैकल्पिक घोषित करने के लिए, स्विच विवरण में कोष्ठक में उसका नाम रखें। उदाहरण के लिए, "- फ्लॉफाइल [फ़ाइल]" FILE पैरामीटर वैकल्पिक है। यदि आपूर्ति नहीं की जाती है, तो प्रोग्राम एक डिफ़ॉल्ट डिफ़ॉल्ट मान लेगा, जैसे कि log.txt नामक फ़ाइल।

उदाहरण में, मुहावरा ए = बी || सी प्रयोग किया जाता है। यह "ए = बी के लिए सिर्फ शॉर्टहैंड है, लेकिन अगर बी गलत है या शून्य, ए = सी"।

विकल्प [: opt] = false
opts.on ('-o', '--optional [OPT]', "वैकल्पिक तर्क") do | f |
विकल्प [: opt] = f || "कुछ भी तो नहीं"
समाप्त

स्वचालित रूप से फ्लोट में कनवर्ट करें

OptionParser तर्क को कुछ प्रकारों में स्वचालित रूप से परिवर्तित कर सकता है। इनमें से एक प्रकार फ्लोट है। अपने तर्क को स्वचालित रूप से फ़्लोट में स्विच करने के लिए, फ़्लोट को पास करें पर विधि आपके स्विच विवरण तार के बाद।

स्वचालित रूपांतरण आसान हैं। न केवल वे आपको स्ट्रिंग को वांछित प्रकार में परिवर्तित करने के चरण को बचाते हैं, बल्कि आपके लिए प्रारूप को भी जांचेंगे और गलत तरीके से स्वरूपित होने पर अपवाद छोड़ देंगे।

विकल्प [: फ्लोट] = 0.0
opts.on ('-f', '--float NUM', फ्लोट, "फ्लोट में कनवर्ट करें") do | f
विकल्प [: फ्लोट] = एफ
समाप्त

कुछ अन्य प्रकार जो OptionParser को स्वचालित रूप से समय और पूर्णांक में शामिल कर सकते हैं।

तर्क की सूची

तर्क को सूचियों के रूप में व्याख्यायित किया जा सकता है। इसे एक सरणी में कनवर्ट करने के रूप में देखा जा सकता है, जैसा कि आपने फ्लोट में परिवर्तित किया है। जबकि आपका विकल्प स्ट्रिंग पैरामीटर को "ए, बी, सी" कहलाने के लिए परिभाषित कर सकता है, विकल्पपरर सूची में किसी भी तत्व को नेत्रहीन रूप से अनुमति देगा। इसलिए, यदि आपको एक विशिष्ट संख्या में तत्वों की आवश्यकता है, तो सरणी लंबाई को स्वयं जांचना सुनिश्चित करें।

विकल्प [: सूची] = []
opts.on ('-l', '--list a, b, c', Array, "मापदंडों की सूची") do | l |
विकल्प [: सूची] = एल
समाप्त

तर्क का सेट

कभी-कभी यह तर्क को कुछ विकल्पों पर स्विच करने के लिए प्रतिबंधित करता है। उदाहरण के लिए, निम्न स्विच केवल एक अनिवार्य पैरामीटर लेगा, और पैरामीटर एक होना चाहिए हाँ, नहीं या शायद. यदि पैरामीटर कुछ और है, तो एक अपवाद फेंक दिया जाएगा।

ऐसा करने के लिए, स्विच विवरण स्ट्रिंग के बाद प्रतीकों के रूप में स्वीकार्य मापदंडों की एक सूची पास करें।

विकल्प [: set] =: हाँ
opts.on ('-s', '--सेट ऑप्ट', [: हाँ,: नहीं:: हो सकता है], "एक सेट से पैरामीटर") करते हैं |
विकल्प [: सेट] = एस
समाप्त

नकारात्मक रूप

स्विच का एक नकारात्मक रूप हो सकता है। स्विच --negated एक है कि विपरीत प्रभाव पड़ता है, कहा जा सकता है --no-नकार दिया गया. स्विच विवरण स्ट्रिंग में इसका वर्णन करने के लिए, ब्रैकेट में वैकल्पिक भाग रखें: - [नहीं-] नकार. यदि पहला फ़ॉर्म सामने आया है, तो सत्य को ब्लॉक में भेज दिया जाएगा, और दूसरा फ़ॉर्म सामने आने पर गलत ब्लॉक कर दिया जाएगा।

विकल्प [: नकारात्मक] = गलत
opts.on ('-n', '- [नहीं-] नकारात्मक', "नकारात्मक रूप") n |
विकल्प [: नकारात्मक] = एन
समाप्त
instagram story viewer