Sha256: e515e5f36bd29839f1e41722aa0ab9caacc588cfd72ba97d7c5e7bbb315ee679

Contents?: true

Size: 676 Bytes

Versions: 6

Compression:

Stored size: 676 Bytes

Contents

require "ostruct"

module Calendlyr
  class Object < OpenStruct
    def self.get_slug(path)
      path.split("/").last
    end

    def initialize(attributes)
      super(to_ostruct(attributes.merge(uuid: extract_uuid(attributes))))
    end

    def to_ostruct(obj)
      if obj.is_a?(Hash)
        OpenStruct.new(obj.map { |key, val| [key, to_ostruct(val)] }.to_h)
      elsif obj.is_a?(Array)
        obj.map { |o| to_ostruct(o) }
      else # Assumed to be a primitive value
        obj
      end
    end

    def extract_uuid(attrs)
      attrs["uri"] ? get_slug(attrs["uri"]) : nil
    end

    def get_slug(path)
      Calendlyr::Object.get_slug(path)
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
calendlyr-0.7.5 lib/calendlyr/object.rb
calendlyr-0.7.4 lib/calendlyr/object.rb
calendlyr-0.7.3 lib/calendlyr/object.rb
calendlyr-0.7.2 lib/calendlyr/object.rb
calendlyr-0.7.1 lib/calendlyr/object.rb
calendlyr-0.7.0 lib/calendlyr/object.rb