Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class String
- def old_snake_case
- gsub(/\B[A-Z]/, '_\&').downcase
- end
- def new_snake_case
- if self =~ /^[A-Z]+$/
- return self.downcase
- else
- self.gsub(/([A-Z]{1,})(?=[A-Z][a-z]?)/) do |m|
- m.capitalize
- end.gsub(/\B[A-Z]/, '_\&').downcase
- end
- end
- def matt_snake_case
- return self.downcase if self =~ /^[A-Z]+$/
- self.gsub(/([A-Z]+)(?=[A-Z][a-z]?)|\B[A-Z]/, '_\&') =~ /_*(.*)/
- return $+.downcase
- end
- end
- puts 'RequestURITooLarge'.new_snake_case
- puts 'HTTPVersionNotSupported'.new_snake_case
- puts 'OK'.new_snake_case
- puts 'CNNNews'.new_snake_case
- puts "HTTPVersionURINotCompatible".new_snake_case
- puts "HeadlineCNNNews".new_snake_case
- # >> request_uri_too_large
- # >> http_version_not_supported
- # >> ok
- # >> cnn_news
- # >> http_version_uri_not_compatible
- # >> headline_cnn_news
- puts 'RequestURITooLarge'.matt_snake_case
- puts 'HTTPVersionNotSupported'.matt_snake_case
- puts 'OK'.matt_snake_case
- puts 'CNNNews'.matt_snake_case
- puts "HTTPVersionURINotCompatible".matt_snake_case
- puts "HeadlineCNNNews".matt_snake_case
- # >> request_uri_too_large
- # >> http_version_not_supported
- # >> ok
- # >> cnn_news
- # >> http_version_uri_not_compatible
- # >> headline_cnn_news
Add Comment
Please, Sign In to add comment