Class: String

Inherits:
Object show all
Defined in:
lib/ramaze/snippets/divide.rb,
lib/ramaze/snippets/string/esc.rb,
lib/ramaze/snippets/string/ord.rb,
lib/ramaze/snippets/string/each.rb,
lib/ramaze/snippets/string/color.rb,
lib/ramaze/snippets/string/unindent.rb,
lib/ramaze/snippets/string/camel_case.rb,
lib/ramaze/snippets/string/snake_case.rb,
lib/ramaze/snippets/string/start_with.rb

Overview

Extensions for String

Instance Method Summary collapse

Instance Method Details

#/(obj) ⇒ Object

A convenient way to do File.join Usage:

'a' / 'b' # => 'a/b'


8
9
10
# File 'lib/ramaze/snippets/divide.rb', line 8

def / obj
  File.join(self, obj.to_s)
end

#camel_caseObject

simple transformation to CamelCase from snake_case

'foo_bar'.camel_case # => 'FooBar'


12
13
14
# File 'lib/ramaze/snippets/string/camel_case.rb', line 12

def camel_case
  split('_').map{|e| e.capitalize}.join
end

#escape(which = :html) ⇒ Object Also known as: esc

String#escape is an extensible escaping mechanism for string. currently it suports

'<div>foo bar</div>'.esc(:html)
'foo bar'.esc(:uri)
'foo bar'.esc(:cgi)


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/ramaze/snippets/string/esc.rb', line 12

def escape which = :html
  case which
  when :html
    ::CGI.escapeHTML(self)
  when :cgi
    ::CGI.escape(self)
  when :uri
    ::URI.escape(self)
  when :sql
    Ramaze::deprecated("String#escape(:sql)")
    gsub(%r/'/, "''")
  else
    raise ArgumentError, "do not know how to escape '#{ which }'"
  end
end

#ordObject

compatibility with Ruby 1.9



11
12
13
# File 'lib/ramaze/snippets/string/ord.rb', line 11

def ord
  self[0]
end

#snake_caseObject

convert to snake_case from CamelCase

'FooBar'.snake_case # => 'foo_bar'


12
13
14
# File 'lib/ramaze/snippets/string/snake_case.rb', line 12

def snake_case
  gsub(/\B[A-Z][^A-Z]/, '_\&').downcase.gsub(' ', '_')
end

#start_with?(other) ⇒ Boolean

Compatibility with 1.9

Returns:

  • (Boolean)


4
5
6
# File 'lib/ramaze/snippets/string/start_with.rb', line 4

def start_with?(other)
  self[0, other.size] == other
end

#unindentObject Also known as: ui

Useful for writing indented String and unindent on demand, based on the first line with indentation.



4
5
6
7
8
9
10
11
12
# File 'lib/ramaze/snippets/string/unindent.rb', line 4

def unindent
  find_indent = proc{ |l| l.find{|l| !l.strip.empty?}.to_s[/^(\s+)/, 1] }

  lines = self.split("\n")
  space = find_indent[lines]
  space = find_indent[lines.reverse] unless space

  strip.gsub(/^#{space}/, '')
end

#unindent!Object Also known as: ui!

Destructive variant of undindent, replacing the String



16
17
18
# File 'lib/ramaze/snippets/string/unindent.rb', line 16

def unindent!
  self.replace unindent
end