Guest User

Untitled

a guest
Apr 21st, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. class String
  2.  
  3. def old_snake_case
  4. gsub(/\B[A-Z]/, '_\&').downcase
  5. end
  6.  
  7. def new_snake_case
  8. if self =~ /^[A-Z]+$/
  9. return self.downcase
  10. else
  11. self.gsub(/([A-Z]{1,})(?=[A-Z][a-z]?)/) do |m|
  12. m.capitalize
  13. end.gsub(/\B[A-Z]/, '_\&').downcase
  14. end
  15. end
  16.  
  17. def matt_snake_case
  18. return self.downcase if self =~ /^[A-Z]+$/
  19. self.gsub(/([A-Z]+)(?=[A-Z][a-z]?)|\B[A-Z]/, '_\&') =~ /_*(.*)/
  20. return $+.downcase
  21. end
  22.  
  23. end
  24.  
  25. puts 'RequestURITooLarge'.new_snake_case
  26. puts 'HTTPVersionNotSupported'.new_snake_case
  27. puts 'OK'.new_snake_case
  28. puts 'CNNNews'.new_snake_case
  29. puts "HTTPVersionURINotCompatible".new_snake_case
  30. puts "HeadlineCNNNews".new_snake_case
  31.  
  32. # >> request_uri_too_large
  33. # >> http_version_not_supported
  34. # >> ok
  35. # >> cnn_news
  36. # >> http_version_uri_not_compatible
  37. # >> headline_cnn_news
  38.  
  39. puts 'RequestURITooLarge'.matt_snake_case
  40. puts 'HTTPVersionNotSupported'.matt_snake_case
  41. puts 'OK'.matt_snake_case
  42. puts 'CNNNews'.matt_snake_case
  43. puts "HTTPVersionURINotCompatible".matt_snake_case
  44. puts "HeadlineCNNNews".matt_snake_case
  45.  
  46. # >> request_uri_too_large
  47. # >> http_version_not_supported
  48. # >> ok
  49. # >> cnn_news
  50. # >> http_version_uri_not_compatible
  51. # >> headline_cnn_news
Add Comment
Please, Sign In to add comment