Module: Starter::Extensions::String

Defined in:
lib/starter/extensions/string.rb

Defined Under Namespace

Modules: Compression

Class Method Summary collapse

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