Class: String

Inherits:
Object
  • Object
show all
Defined in:
lib/midwire_common/string.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.random(count = 6, ranges = [('a'..'z'),('A'..'Z'),('0'..'9')]) ⇒ Object



4
5
6
7
# File 'lib/midwire_common/string.rb', line 4

def random(count = 6, ranges = [('a'..'z'),('A'..'Z'),('0'..'9')])
  o =  ranges.map{|i| i.to_a}.flatten;
  string  =  (0..(count-1)).map{ o[rand(o.length)]  }.join;
end

Instance Method Details

#escape_double_quotesObject



152
153
154
# File 'lib/midwire_common/string.rb', line 152

def escape_double_quotes
  self.gsub(/["]/, '\\\\\"')
end

#escape_single_quotesObject



148
149
150
# File 'lib/midwire_common/string.rb', line 148

def escape_single_quotes
  self.gsub(/[']/, '\\\\\'')
end

#format_phoneObject



120
121
122
123
# File 'lib/midwire_common/string.rb', line 120

def format_phone
  self.gsub!(/[a-z,! \-\(\)\:\;\.\&\$]+/i, '')
  '(' << slice(0..2) << ')' << slice(3..5) << '-' << slice(-4,4)
end

#here_with_pipe(linefeeds = false) ⇒ Object

html = <<-stop.here_with_pipe

|<!-- Begin: comment  -->
|<script type="text/javascript">

stop



50
51
52
53
54
55
# File 'lib/midwire_common/string.rb', line 50

def here_with_pipe(linefeeds = false)
  lines = self.split("\n")
  lines.map! {|c| c.sub!(/\s*\|/, '')}
  new_string = lines.join(linefeeds ? "\n" : " ")
  self.replace(new_string)
end

#is_alpha_numeric?Boolean

Returns:

  • (Boolean)


57
58
59
60
# File 'lib/midwire_common/string.rb', line 57

def is_alpha_numeric?
  regex = /^[a-zA-Z0-9]+$/
  return (self =~ regex) == 0 ? true : false
end

#is_email_address?Boolean

Returns:

  • (Boolean)


62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/midwire_common/string.rb', line 62

def is_email_address?
  # //Email address
  # //Use this version to seek out email addresses in random documents and texts.
  # //Does not match email addresses using an IP address instead of a domain name.
  # //Does not match email addresses on new-fangled top-level domains with more than 4 letters such as .museum.
  # //Including these increases the risk of false positives when applying the regex to random documents.
  # '\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b'
  #
  # //Email address (anchored)
  # //Use this anchored version to check if a valid email address was entered.
  # //Does not match email addresses using an IP address instead of a domain name.
  # //Does not match email addresses on new-fangled top-level domains with more than 4 letters such as .museum.
  # //Requires the "case insensitive" option to be ON.
  # '^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$'
  #
  # //Email address (anchored; no consecutive dots)
  # //Use this anchored version to check if a valid email address was entered.
  # //Improves on the original email address regex by excluding addresses with consecutive dots such as [email protected]
  # //Does not match email addresses using an IP address instead of a domain name.
  # //Does not match email addresses on new-fangled top-level domains with more than 4 letters such as .museum.
  # //Including these increases the risk of false positives when applying the regex to random documents.
  # '^[A-Z0-9._%-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$'
  #
  # //Email address (no consecutive dots)
  # //Use this version to seek out email addresses in random documents and texts.
  # //Improves on the original email address regex by excluding addresses with consecutive dots such as [email protected]
  # //Does not match email addresses using an IP address instead of a domain name.
  # //Does not match email addresses on new-fangled top-level domains with more than 4 letters such as .museum.
  # //Including these increases the risk of false positives when applying the regex to random documents.
  # '\b[A-Z0-9._%-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}\b'
  #
  # //Email address (specific TLDs)
  # //Does not match email addresses using an IP address instead of a domain name.
  # //Matches all country code top level domains, and specific common top level domains.
  # '^[A-Z0-9._%-]+@[A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|biz|info|name|aero|biz|info|jobs|museum|name)$'
  #
  # //Email address: Replace with HTML link
  # '\b(?:mailto:)?([A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4})\b'

  email_regex = %r{^[A-Z0-9._%-]+@[A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|biz|info|name|aero|jobs|museum|edu|pro)$}xi # Case insensitive

  return (self =~ email_regex) == 0 ? true : false
end

#is_numeric?Boolean

Returns:

  • (Boolean)


110
111
112
113
114
115
116
117
118
# File 'lib/midwire_common/string.rb', line 110

def is_numeric?
  begin
    Float(self)
  rescue
    false # not numeric
  else
    true # numeric
  end
end

#is_zipcode?Boolean

Returns:

  • (Boolean)


106
107
108
# File 'lib/midwire_common/string.rb', line 106

def is_zipcode?
  self =~ %r{^(\d{5})(-\d{4})?$}x ? true : false
end

#left(count) ⇒ Object



10
11
12
# File 'lib/midwire_common/string.rb', line 10

def left(count)
  self.slice(0,count)
end

#left_trimObject



18
19
20
21
# File 'lib/midwire_common/string.rb', line 18

def left_trim
  # remove leading whitespace
  self.gsub(/^[\t\s]+/, '')
end

#left_trim!Object



23
24
25
# File 'lib/midwire_common/string.rb', line 23

def left_trim!
  self.gsub!(/^[\t\s]+/, '') || ''
end

#right(count) ⇒ Object



14
15
16
# File 'lib/midwire_common/string.rb', line 14

def right(count)
  self.slice(-count,count)
end

#right_trimObject



27
28
29
30
# File 'lib/midwire_common/string.rb', line 27

def right_trim
  # remove trailing whitespace
  self.gsub(/[\t\s]+$/, '')
end

#right_trim!Object



32
33
34
# File 'lib/midwire_common/string.rb', line 32

def right_trim!
  self.gsub!(/[\t\s]+$/, '') || ''
end

#sanitizeObject



125
126
127
# File 'lib/midwire_common/string.rb', line 125

def sanitize
  self.gsub(/[^a-z0-9,! \-\(\)\:\;\.\&\$]+/i, '')
end

#sanitize!Object



129
130
131
# File 'lib/midwire_common/string.rb', line 129

def sanitize!
  self.gsub!(/[^a-z0-9,! \-\(\)\:\;\.\&\$]+/i, '')
end

#shorten(maxcount = 30) ⇒ Object



133
134
135
136
137
138
139
140
141
142
143
144
145
146
# File 'lib/midwire_common/string.rb', line 133

def shorten(maxcount = 30)
  if self.length >= maxcount
    shortened = self[0, maxcount]
    splitted = shortened.split(/\s/)
    if splitted.length > 1
      words = splitted.length
      splitted[0, words-1].join(" ") + '...'
    else
      shortened[0, maxcount - 3] + '...'
    end
  else
    self
  end
end

#trimObject



36
37
38
39
# File 'lib/midwire_common/string.rb', line 36

def trim
  # remove leading and trailing whitespace
  self.left_trim.right_trim
end

#trim!Object



41
42
43
44
# File 'lib/midwire_common/string.rb', line 41

def trim!
  # remove leading and trailing whitespace
  self.left_trim!.right_trim! || ''
end