Sha256: 451154e959389f8de27e1e7aabc7ebf50557991452f0813350ddeb2513d60ef9

Contents?: true

Size: 1.05 KB

Versions: 6

Compression:

Stored size: 1.05 KB

Contents

# Persistence module built on top of NSUserDefaults
module BubbleWrap
  module Persistence
    module_function

    def app_key
      @app_key ||= BubbleWrap::App.identifier
    end

    def []=(key, value)
      storage.setObject(value, forKey: storage_key(key))
      storage.synchronize
    end

    def [](key)
      value = storage.objectForKey storage_key(key)

      # RubyMotion currently has a bug where the strings returned from
      # standardUserDefaults are missing some methods (e.g. to_data).
      # And because the returned object is slightly different than a normal
      # String, we can't just use `value.is_a?(String)`
      value.class.to_s == 'String' ? value.dup : value
    end

    def merge(values)
      values.each do |key, value|
        storage.setObject(value, forKey: storage_key(key))
      end
      storage.synchronize
    end

    def storage
      NSUserDefaults.standardUserDefaults
    end

    def storage_key(key)
      app_key + '_' + key.to_s
    end
  end

end
::Persistence = BubbleWrap::Persistence unless defined?(::Persistence)

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
bubble-wrap-1.3.0 motion/core/persistence.rb
bubble-wrap-1.3.0.osx motion/core/persistence.rb
bubble-wrap-1.2.0 motion/core/persistence.rb
bubble-wrap-1.2.0.pre motion/core/persistence.rb
bubble-wrap-1.1.5 motion/core/persistence.rb
bubble-wrap-1.1.4 motion/core/persistence.rb