Class: String
- Inherits:
-
Object
- Object
- String
- Defined in:
- lib/string_extensions.rb
Overview
String Extensions
- Author
-
Joel Parker Henderson, [email protected]
- Copyright
-
Copyright © 2006-2008 Joel Parker Henderson
- License
-
CreativeCommons License, Non-commercial Share Alike
- License
-
LGPL, GNU Lesser General Public License
Ruby String base class extensions
Class Method Summary collapse
-
.prev_char(c) ⇒ Object
(also: pred_char)
Return the previous character, with a changed flag and carry flag.
Instance Method Summary collapse
- #capitalize_words ⇒ Object
-
#decrement(step = 1) ⇒ Object
Decrement the rightmost integer in a string, if any.
-
#increment(step = 1) ⇒ Object
Increment the rightmost integer in a string, if any.
-
#prev ⇒ Object
(also: #pred)
Return the previous string.
-
#prev! ⇒ Object
(also: #pred!)
Do String#prev in place.
- #split_tab ⇒ Object
- #words ⇒ Object
Class Method Details
.prev_char(c) ⇒ Object Also known as: pred_char
Return the previous character, with a changed flag and carry flag
Examples
String.prev_char('n') => 'm', true, false # change
String.prev_char('a') => 'z', true, true # change & carry
String.prev_char('6') => '5', true, false # change
String.prev_char('0') => '9', true, true # change & carry
String.prev_char('-') => '-', false, false # unchanged
52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/string_extensions.rb', line 52 def self.prev_char(c) #=> prev_char, changed_flag, carry_flag case c when '1'..'9', 'B'..'Z', 'b'..'z' return (c[0]-1).chr, true, false when '0' return '9', true, true when 'A' return 'Z', true, true when 'a' return 'z', true, true else return c, false, false end end |
Instance Method Details
#capitalize_words ⇒ Object
22 23 24 |
# File 'lib/string_extensions.rb', line 22 def capitalize_words split(/\b/).map{|x| x.capitalize }.join end |
#decrement(step = 1) ⇒ Object
Decrement the rightmost integer in a string, if any
cf. String#succ cf. String#prev
38 39 40 |
# File 'lib/string_extensions.rb', line 38 def decrement(step=1) sub(/(.*)(\d+)/){|s| $1+((($2.to_i)-step).to_s) } end |
#increment(step = 1) ⇒ Object
Increment the rightmost integer in a string, if any
cf. String#succ cf. String#prev
30 31 32 |
# File 'lib/string_extensions.rb', line 30 def increment(step=1) sub(/(.*)(\d+)/){|s| $1+((($2.to_i)+step).to_s) } end |
#prev ⇒ Object Also known as: pred
Return the previous string
c.f. String#next
Examples
'888'.prev => '887'
'n'.prev => 'm'
'N'.prev => 'M'
Examples with carry
'880'.prev => '879'
'nna'.prev => 'nmz'
'NNA'.prev => 'NMZ'
'nn0aA'.prev => 'nm9zZ'
82 83 84 |
# File 'lib/string_extensions.rb', line 82 def prev self.clone.prev! end |
#prev! ⇒ Object Also known as: pred!
Do String#prev in place
87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/string_extensions.rb', line 87 def prev! return self if length==0 i=length-1 # rightmost while true do c=self[i].chr prev_c,changed_flag,carry_flag=String.prev_char(c) return self if !changed_flag self[i]=prev_c return self if !carry_flag i-=1 return nil if i<0 end end |
#split_tab ⇒ Object
18 19 20 |
# File 'lib/string_extensions.rb', line 18 def split_tab split(/\t/) end |
#words ⇒ Object
14 15 16 |
# File 'lib/string_extensions.rb', line 14 def words split(/\W*\b\W*/) end |