# frozen_string_literal: true require 'pay_zen/item' require 'stripe/item' # Payments module module Payment; end # Build the corresponding gateway item, according to the provided klass class Payment::ItemBuilder attr_reader :instance def self.build(klass, *ids) builder = new(klass, *ids) builder.instance end private def initialize(klass, *ids) @instance = case klass when /^PayZen::/ PayZen::Item.new(klass, *ids) when /^Stripe::/ Stripe::Item.new(klass, *ids) else raise TypeError end end end