module Materialistic

Constants

VERSION

Public Class Methods

item(args) click to toggle source
# File lib/materialistic.rb, line 16
def self.item(args)
  provider_id, sku = args.to_a.first

  provider = Object.const_get("Materialistic::Providers::#{camelcase(provider_id)}").new
  provider.item(sku)
end
list(query) click to toggle source
# File lib/materialistic.rb, line 5
def self.list(query)
  providers.inject([]) do |results, provider|
    context = provider.new
    results << {
      id: underscore(context.class.to_s.gsub(/(^.+::)?/, '')),
      display_name: context.display_name,
      items: context.list(query)
    }
  end
end

Private Class Methods

camelcase(str) click to toggle source
# File lib/materialistic.rb, line 36
def self.camelcase(str)
  str.to_s.split("_").map(&:capitalize).join
end
providers() click to toggle source
# File lib/materialistic.rb, line 25
def self.providers
  ObjectSpace.each_object(Providers::Base.singleton_class).select{ |klass| klass.superclass == Providers::Base }
end
underscore(str) click to toggle source
# File lib/materialistic.rb, line 29
def self.underscore(str)
  str.gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
  gsub(/([a-z\d])([A-Z])/,'\1_\2').
  tr("-", "_").
  downcase
end