2010-06-02 5 views
1

Comment puis-je analyser des chaînes dans ruby ​​comme le font de nombreux utilitaires de ligne de commande? J'ai des chaînes similaires à "command [--opt1=...] [--enable-opt2] --opt3=... arg1" et des méthodes similaires à command(opt1,opt2,opt3,arg1...). Je veux laisser les arguments venir dans un ordre aléatoire, certains d'entre eux peuvent être optionnels.Ruby regexp pour analyser la ligne de commande

Au moment où je wrilte regexp chaque fois que je dois analyser nouvelle commande, comme par exemple pour analyser "--chan = your_CHANNEL Cafe Du Coin/section /"

J'ai cette expression régulière:

text = "lastpost --chan=0chan.ru /s/" 
    command = (text.match /^\w+/)[0] 
    args = text.gsub(/^\w+/,'') 
    if args =~ /[[:blank:]]*(--chan\=([[:graph:]]+)[[:blank:]]+)*\/?(\w+)\/?/ 
     chan = $2 
     section = $3 
     do_command(chan,section) 
    else 
     puts "wrong args" 
    end 

Je voudrais avoir create_regexp (opts, args), qui devrait produire une expression régulière.

Répondre

1

Ok, j'ai trouvé optparse peut le faire pour moi

+0

Si vous avez (sous) commandes, consultez la gemme 'commander'. –

Questions connexes