Class: String

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

Overview

Add some useful String methods

Instance Method Summary collapse

Instance Method Details

#compareSemester(s) ⇒ Object

Method to compare semesters. Returns true if self is later, false if self is before, 0 if same s should be a string like “2009A”



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/classes/string.rb', line 48

def compareSemester(s)
  year = self[0..3]
  season = self[4]
  compYear = s[0..3]
  compSeason = s[4]
  
  if year.to_i > compYear.to_i #Later year
    return 1
  elsif year.to_i < compYear.to_i #Earlier year
    return -1
  elsif year.to_i == compYear.to_i #Same year, so test season
    if season > compSeason #Season is later
      return 1
    elsif season = compSeason #Exact same time
      return 0
    elsif season < compSeason #compSeason is later
      return -1
    end
  end
end

#isValidCourseCode?Boolean

Checks if String is valid Penn course code format

Returns:

  • (Boolean)


4
5
6
7
8
9
10
11
# File 'lib/classes/string.rb', line 4

def isValidCourseCode?
  test = self.split('-')
  if test[0].length == 4 and test[1].length == 3
    true
  else
    false
  end
end

#smart_capitalizeObject



31
32
33
34
35
36
37
38
39
40
# File 'lib/classes/string.rb', line 31

def smart_capitalize
  # ignore any leading crazy characters and capitalize the first real character
  if self =~ /^['"\(\[']*([a-z])/
    i = index($1)
    x = self[i,self.length]
    # word with capitals and periods mid-word are left alone
    self[i,1] = self[i,1].upcase unless x =~ /[A-Z]/ or x =~ /\.\w+/
  end
  self
end

#smart_capitalize!Object



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

def smart_capitalize!
  replace(smart_capitalize)
end

#titlecaseObject

Methods to convert strings to titlecase. Thanks github.com/samsouder/titlecase



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/classes/string.rb', line 15

def titlecase
  small_words = %w(a an and as at but by en for if in of on or the to v v. via vs vs.)

  x = split(" ").map do |word|
    # note: word could contain non-word characters!
    # downcase all small_words, capitalize the rest
    small_words.include?(word.gsub(/\W/, "").downcase) ? word.downcase! : word.smart_capitalize!
    word
  end
  # capitalize first and last words
  x.first.smart_capitalize!
  x.last.smart_capitalize!
  # small words after colons are capitalized
  x.join(" ").gsub(/:\s?(\W*#{small_words.join("|")}\W*)\s/) { ": #{$1.smart_capitalize} " }
end