36 lines
		
	
	
		
			765 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			36 lines
		
	
	
		
			765 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | module StringHelper | ||
|  |   extend self | ||
|  | 
 | ||
|  |   # from Rails' ActiveSupport | ||
|  |   def underscore(string) | ||
|  |     string.gsub(/::/, '/'). | ||
|  |     gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2'). | ||
|  |     gsub(/([a-z\d])([A-Z])/,'\1_\2'). | ||
|  |     tr("-", "_"). | ||
|  |     downcase | ||
|  |   end | ||
|  | 
 | ||
|  |   def underscore_class(klass, without_ancestors=true) | ||
|  |     class_name = if without_ancestors | ||
|  |       klass.to_s.split('::').last | ||
|  |     else | ||
|  |       klass.to_s | ||
|  |     end | ||
|  |     StringHelper.underscore(class_name) | ||
|  |   end | ||
|  | 
 | ||
|  |   # from Rails' ActiveSupport | ||
|  |   def camelize(term) | ||
|  |     string = term.to_s | ||
|  |     string = string.sub(/^[a-z\d]*/) { $&.capitalize } | ||
|  |     string.gsub!(/(?:_|(\/))([a-z\d]*)/i) { "#{$1}#{$2.capitalize}" } | ||
|  |     string.gsub!(/\//, '::') | ||
|  |     string | ||
|  |   end | ||
|  | 
 | ||
|  |   # rough simplification | ||
|  |   def pluralize(string) | ||
|  |     "#{string}s" | ||
|  |   end | ||
|  | end |