Module: Starter::Extensions::String
- Defined in:
- lib/starter/extensions/string.rb
Defined Under Namespace
Modules: Compression
Class Method Summary collapse
- .camel_case(string) ⇒ Object
- .hex(string) ⇒ Object
- .snake_case(string) ⇒ Object
- .title_case(string) ⇒ Object
- .unhex(string) ⇒ Object
- .xor(str1, str2) ⇒ Object
Class Method Details
.camel_case(string) ⇒ Object
7 8 9 10 11 |
# File 'lib/starter/extensions/string.rb', line 7 def self.camel_case(string) string.split('_').map do |word| "#{word.slice(/^\w/).upcase}#{word.slice(/^\w(\w+)/, 1)}" end.join end |
.hex(string) ⇒ Object
22 23 24 |
# File 'lib/starter/extensions/string.rb', line 22 def self.hex(string) string.unpack("H*")[0] end |
.snake_case(string) ⇒ Object
13 14 15 |
# File 'lib/starter/extensions/string.rb', line 13 def self.snake_case(string) string.gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').gsub(/([a-z\d])([A-Z])/,'\1_\2').downcase end |
.title_case(string) ⇒ Object
17 18 19 20 |
# File 'lib/starter/extensions/string.rb', line 17 def self.title_case(string) # FIXME: I think that the block form of gsub is not thread safe. string.gsub( /\b\w/ ) { |x| x.upcase } end |
.unhex(string) ⇒ Object
26 27 28 |
# File 'lib/starter/extensions/string.rb', line 26 def self.unhex(string) [string].pack("H*") end |
.xor(str1, str2) ⇒ Object
30 31 32 33 34 35 36 37 38 39 |
# File 'lib/starter/extensions/string.rb', line 30 def self.xor(str1, str2) a1 = str1.unpack('C*') a2 = str2.unpack('C*') * (str1.length / str2.length + 1) xor = "" 0.upto(a1.length - 1) do |i| x = a1[i] ^ a2[i].to_i xor << x.chr() end xor end |