arnebrasseur/ting

View on GitHub
lib/ting/converter.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Ting
  class Converter
    include Procable

    attr_reader :from_conv, :from_tone, :to_conv, :to_tone

    def initialize(from, from_tone, to, to_tone)
      @from_conv, @from_tone, @to_conv, @to_tone = from, from_tone, to, to_tone
    end

    def reader
      @reader ||= Reader.new(from_conv, from_tone)
    end

    def writer
      @writer ||= Writer.new(to_conv, to_tone)
    end

    def convert(str)
      writer.unparse reader.parse(str)
    end

    def to(to, to_tone)
      Converter.new(self.from_conv, self.from_tone, to, to_tone)
    end

    alias :<< :convert
    alias :call :convert
  end
end