2013-03-18 3 views
6

मैं वर्तमान में पायथन में लिपि करता हूं लेकिन मैं कई कारणों से रुबी को आजमाने की कोशिश करता हूं। मैंने बहुत सारे नमूना कोड को देखा है और पिछले हफ्ते में बहुत सारे दस्तावेज पढ़े हैं। मेरी चिंता का एक बिंदु रूबी में उचित कमांड लाइन तर्क पार्सिंग पुस्तकालयों की कमी है। रूबी विशेषज्ञ, मुझ पर पागल मत हो - शायद मुझे नहीं पता। यही कारण है कि मैं यहाँ हूँ।रूबी ऑप्टपरसे सीमा

पायथन में, मुझे argparse का उपयोग करने के लिए उपयोग किया गया था, जो मेरी राय में बिल्कुल सही है (शायद मेरी ज़रूरतों के लिए)। दुर्भाग्य से, OptionParserargparse करता है कि लचीलापन और सुविधाओं के लिए अनुमति नहीं देता है।

मैं विशेष रूप से अब के लिए निम्नलिखित की कमी से देख रहा हूँ:

  1. मैं परस्पर अनन्य विकल्प सूचियों कैसे करूं? उदाहरण के लिए test नामक प्रोग्राम के लिए एक बहुत ही छोटी विकल्प सूची।

    # implement a ---------------------------------------------- 
    opts.on("-a", "--alpha", 
         "implement alpha") do 
        #... 
    end 
    

    और इतने पर:

    usage: test [-h] [-a | -b | -c] [-d] [filename] 
    

    मैं जैसे कुछ कोड लिख सकते हैं। लेकिन फिर, मेरे पास a, b और c पारस्परिक रूप से अनन्य बनाने का कोई तरीका नहीं है जब तक कि मैं उन पर क्रमपरिवर्तन कोड नहीं करता और कुछ त्रुटि प्रबंधन करता हूं। उदाहरण के लिए

    test -ab #should through an error 
    

    अजगर में, मैं एक बहुत ही आसान तरीके से ऐसा कर सकता है:

    # create an command line argument parser object 
    cmd_line_parser = argparse.ArgumentParser() 
    
    # create a mutually exclusive group 
    cmd_line_group = cmd_line_parser.add_mutually_exclusive_group() 
    
    1. दूसरे, मैं -a के साथ युग्मन -d का कोई रास्ता नहीं है जब तक कि मैं विशेष रूप से इस परिवर्तन के लिए कोड लिखने । यह पागल है।

    2. मुझे [OPTION] खुद को सूचीबद्ध करना है; मुझे यह जानने का कोई तरीका नहीं है कि मैं गलत या सही हूं, जब तक कि मैं सभी संभावित इनपुट क्रमिकताओं के लिए ब्लैकबॉक्स परीक्षण नहीं करता और उन्हें ब्लैकबॉक्स सूची में मैप करता हूं।

    3. इसके अलावा, विशेष कोड का उपयोग करके अनिवार्य तर्कों को फिर से संभालने की आवश्यकता है।

वहाँ रूबी में optparse या अन्य पुस्तकालयों का उपयोग कर इन बाधाओं से निपटने का एक आसान है?

उत्तर

10

docopt लाइब्रेरी है जिसमें पाइथन और रूबी दोनों कार्यान्वयन हैं। test कार्यक्रम के लिए विनिर्देश है:

usage: test [-h] [-a | -b | -c] [-d] [<filename>] 

एक, ख, ग विकल्प परस्पर अनन्य हैं (-ab एक त्रुटि पैदा करता है), यह संयुक्त विकल्प का समर्थन करता है: -ad, -da, आदि

filename बनाने के पैरामीटर अनिवार्य:

usage: test [-h] [-a | -b | -c] [-d] <filename> 
+0

वाह। वह पागल है। महाकाव्य। अवधि। मैं इतने लंबे समय से क्या कर रहा हूं।यह बहुत अच्छा है। बहुत बहुत धन्यवाद। – p0lAris

संबंधित मुद्दे