Sha256: e7dc9cfa827c66c12460cf5812034f3cc19a1a214503c9fee93b0766fe06548e

Contents?: true

Size: 1.04 KB

Versions: 2

Compression:

Stored size: 1.04 KB

Contents

module Cardflex
  module BaseModule
    module ClassMethods
      def set_instance_variables_from_hash(hash)
        hash.each do |k, v|
          instance_variable_set("@#{k}", v)
        end
      end

      def snakecase(str)
        str.gsub('-', '_').downcase
      end

      # takes a module that contains constants with method names.
      # create class methods using these names that add the root
      # xml node to the request. these methods are just sugar
      def create_helper_methods(type)
        method_names = type.constants.map { |t| type.const_get(t) }

        method_names.each do |name|
          define_singleton_method(name) do |attributes|
            yield(name => attributes)
          end
        end
      end
    end

    def self.included(base)
      base.extend(self)
    end

    # add support for merchant_defined_field_#
    def method_missing(method, *args)
      if method =~ /^merchant_defined_field_\d+$/
        instance_variable_get("@#{method}")
      else
        super
      end
    end

    include ClassMethods
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cardflex-ruby-0.1.2 lib/cardflex/base_module.rb
cardflex-ruby-0.1.1 lib/cardflex/base_module.rb