fork download
  1. def cmd_split(s)
  2. rx = /(?<command>[^<>\s]+)(<(?<args>(\d+)+(?:,\s*\d+)*)>)?/
  3. res = []
  4. s.scan(rx) {
  5. res << ($~[:args] != nil ?
  6. Hash["command", $~[:command], "args", $~[:args].split(/,\s*/)] :
  7. Hash[$~[:command], ""]) }
  8. return res
  9. end
  10.  
  11. puts cmd_split("print<1, 2, 3>")
  12. puts cmd_split("disp<1>")
  13. puts cmd_split("+")
  14.  
Success #stdin #stdout 0.02s 9664KB
stdin
Standard input is empty
stdout
{"command"=>"print", "args"=>["1", "2", "3"]}
{"command"=>"disp", "args"=>["1"]}
{"+"=>""}