-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathstring.rb
33 lines (29 loc) · 1.02 KB
/
string.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class String
def to_snake! # no one should change these unless they can benchmark and prove their way is faster. =)
@cached_snake_strings ||= {}
@cached_snake_strings[self] ||= (
while x = index(/([a-z\d])([A-Z\d])/) # unfortunately have to use regex for this one
y=x+1
self[x..y] = self[x..x]+"_"+self[y..y].downcase
end
self
)
end
# Aryk: This might be a better way of writing it. I made a lightweight version to use in my modifications. Feel free to adapt this to the rest.
def to_camel! # no one should change these unless they can benchmark and prove their way is faster. =)
@cached_camel_strings ||= {}
@cached_camel_strings[self] ||= (
# new_string = self.dup # need to do this since sometimes the string is frozen
while x = index("_")
y=x+1
self[x..y] = self[y..y].capitalize # in my tests, it was faster than upcase
end
self
)
end
def to_title
title = self.dup
title[0..0] = title[0..0].upcase
title
end
end