Sha256: 672ebb334ded982fea95965182fd0e97ab3c3db21f0abaa2a786e8297cedf6df

Contents?: true

Size: 678 Bytes

Versions: 7

Compression:

Stored size: 678 Bytes

Contents

module Lionel
  class ExportBuilder

    def self.build(&block)
      new.configure(&block)
    end

    def self.default
      build do
        A { id }
        B { name }
        C { url }
      end
    end

    def configure(&block)
      instance_eval(&block)
      self
    end

    def columns
      @columns ||= {}
    end

    def method_missing(sym, *args, &block)
      column_name = sym.to_s.upcase
      if column_name =~ /\A[A-Z]+\z/
        columns[sym.to_s.upcase] = block_given? ? block : lambda { args.first }
      else
        raise ColumnNameError.new("Method '#{sym}' does not represent a valid Google Spreadsheet column name")
      end
    end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
lionel_richie-0.3.1 lib/lionel/export_builder.rb
lionel_richie-0.3.0 lib/lionel/export_builder.rb
lionel_richie-0.2.4 lib/lionel/export_builder.rb
lionel_richie-0.2.3.1 lib/lionel/export_builder.rb
lionel_richie-0.2.3 lib/lionel/export_builder.rb
lionel_richie-0.2.1 lib/lionel/export_builder.rb
lionel_richie-0.2.0 lib/lionel/export_builder.rb