Class: Text::Format::Alpha
- Inherits:
-
Object
- Object
- Text::Format::Alpha
- Defined in:
- lib/text/format/alpha.rb
Overview
Provides a numbering object that will produce letters. Accepts four options for numbering that will control how the letters are presented when given as #[](index). This numbering object will only provide 26 values (“a” .. “z”) unless :wrap is true
.
:transform
-
The symbol representing the method to be called on the letter. This must be a method that does not require any arguments.
:postfix
-
The value that will be appended to the letter presented by #[]. Defaults to
nil
. :prefix
-
The value that will be prepended to the letter presented by #[]. Defaults to
nil
. :wrap
-
If
true
, then indexes will be wrapped from “z” to “a”.
a1 = Text::Format::Alpha.new(:postfix => ".")
puts a1[0] # => "a."
puts a1[1] # => "b.
puts a1[27] # => ""
a2 = Text::Format::Alpha.new(:prefix => "A.")
puts a2[0] # => "A.a"
puts a2[1] # => "A.b"
puts a2[27] # => ""
a3 = Text::Format::Alpha.new(:transform => :upcase)
puts a3[0] # => "A"
puts a3[1] # => "B"
puts a3[27] # => ""
a4 = Text::Format::Alpha.new(:wrap => true)
puts a4[0] # => "a"
puts a4[27] # => "b"
Instance Method Summary collapse
- #[](index) ⇒ Object
-
#initialize(options = {}) ⇒ Alpha
constructor
:yields self:.
Constructor Details
#initialize(options = {}) ⇒ Alpha
:yields self:
55 56 57 58 59 60 |
# File 'lib/text/format/alpha.rb', line 55 def initialize( = {}) #:yields self: @transform = [:transform] || nil @wrap = [:wrap] || false @postfix = [:postfix] || nil @prefix = [:prefix] || nil end |
Instance Method Details
#[](index) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/text/format/alpha.rb', line 35 def [](index) if @wrap ltr = (?a + (index % 26)).chr elsif index.between?(0, 25) ltr = (?a + index).chr else ltr = nil end if ltr if @transform "#{@prefix}#{ltr.send(transform)}#{@postfix}" else "#{@prefix}#{ltr}#{@postfix}" end else "" end end |