Sha256: ff7b455d9237369fb816ddb844e42f6810102c5e8bbe6f22aab2dec89c29dc46

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

module Typekit
  module Element
    module Persistence
      def self.included(base)
        base.extend(ClassMethods)
      end

      def new?
        id.to_s.empty?
      end

      def persistent?
        !(new? || deleted?)
      end

      def deleted?
        !!@deleted
      end

      def save!
        if new?
          element = process(:create, serialize)
        else
          element = process(:update, id, serialize)
        end
        become(element)
        true
      end

      def update!(*arguments)
        assign_attributes(*arguments)
        become(process(:update, id, serialize))
        true
      end

      def delete!
        process(:delete, id) if persistent?
        @deleted = true
        true
      end

      [:save, :update, :delete].each do |method|
        class_eval <<-CODE, __FILE__, __LINE__ + 1
          def #{method}(*arguments)
            #{method}!(*arguments)
          rescue ServerError
            false
          end
        CODE
      end

      module ClassMethods
        def create(*arguments)
          element = new(*arguments)
          element.save
          element
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
typekit-client-0.0.6 lib/typekit/element/persistence.rb