Guest User

Untitled

a guest
Apr 23rd, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.60 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2.  
  3. unless ARGV[0]
  4. puts <<EOS
  5. Usage:
  6. ruby parse_volume.rb NUM
  7.  
  8. Example:
  9. ./parse_volume 12-15,19,23-29
  10. #=> 12 13 14 15 19 23 24 25 26 27 28 29
  11. EOS
  12. exit
  13. end
  14.  
  15. str = ARGV[0].gsub(/\s/, "")
  16. vol = Array.new
  17.  
  18. if /^(?!^[^\d])(?!.*[^\d]$)(?!.*\,-)(?!.*-\,)(?!.*--)[-\,\d]*$/ =~ str
  19. str.split(',').each do |s|
  20. next if s.empty?
  21.  
  22. pair = s.split('-')
  23. if pair.length > 1 # ex. a = "3-6" => (3..6).to_a
  24. vol.concat((pair[0].to_i..pair[1].to_i).to_a)
  25. else
  26. vol << pair[0].to_i
  27. end
  28. end
  29.  
  30. vol.uniq!
  31. vol.sort!
  32. puts vol.join(' ')
  33. else
  34. puts "Can't parse '#{str}'"
  35. end
Add Comment
Please, Sign In to add comment