class Ppl::Format::Custom
Attributes
format[RW]
preset_formats[RW]
Public Class Methods
format(symbol, &block)
click to toggle source
# File lib/ppl/format/custom.rb, line 6 def self.format(symbol, &block) @format_blocks ||= {} @format_blocks[symbol] = block end
new(format = nil)
click to toggle source
# File lib/ppl/format/custom.rb, line 19 def initialize(format = nil) @format = format end
process(key, object)
click to toggle source
# File lib/ppl/format/custom.rb, line 11 def self.process(key, object) if @format_blocks[key] @format_blocks[key][object] else key end end
Public Instance Methods
process(object)
click to toggle source
# File lib/ppl/format/custom.rb, line 23 def process(object) @object = object string_pieces = @format.scan(/[^%]+|%-?\d*./) string_pieces.map(&method(:process_piece)).join end
use_preset(format_name)
click to toggle source
# File lib/ppl/format/custom.rb, line 29 def use_preset(format_name) @format = @preset_formats[format_name] end
Private Instance Methods
generate_output(symbol)
click to toggle source
# File lib/ppl/format/custom.rb, line 45 def generate_output(symbol) self.class.process(symbol, @object) end
pad_output(output, padding)
click to toggle source
# File lib/ppl/format/custom.rb, line 49 def pad_output(output, padding) if padding > 0 output.to_s.rjust(padding, " ") elsif padding < 0 output.to_s.ljust(padding.abs, " ") else output end end
process_piece(string)
click to toggle source
# File lib/ppl/format/custom.rb, line 35 def process_piece(string) matches = string.scan(/^%(-?\d+)?([a-z])$/i) if !matches.empty? output = generate_output(matches[0][1].to_sym) pad_output(output, matches[0][0].to_i) else string end end