Sha256: fa9615f81b0d8fa2ac50433baeda5b05ccb2cdac5f6e4d5bffc3a6941f21e8a0

Contents?: true

Size: 1.58 KB

Versions: 4

Compression:

Stored size: 1.58 KB

Contents

# Stupid hack because the RubyMotion dependency detection has a bug.
module BubbleWrap
  module Constants
    module_function

    # Looks like RubyMotiononly  adds UIKit constants
    # at compile time. If you don't use these
    # directly in your code, they don't get added
    # to Kernel and Constants.get crashes.
    # Examples
    # Constants.register UIReturnKeyDone, UIReturnKeyNext
    def register(*ui_constants)
      # do nothing, just get the constants in the code
    end

    # @param [String] base of the constant
    # @param [Integer, NSArray, String, Symbol] the suffix of the constant
    #   when NSArray, will return the bitmask of all suffixes in the array
    # @return [Integer] the constant for this base and suffix
    # Examples
    # get("UIReturnKey", :done) => UIReturnKeyDone == 9
    # get("UIReturnKey", "done") => UIReturnKeyDone == 9
    # get("UIReturnKey", 9) => 9
    # get("UIImagePickerControllerSourceType", ["photo_library", "camera", "saved_photos_album"]) => 3
    # get("UIActivityType", [:air_drop, :print]) => ["com.apple.UIKit.activity.AirDrop", "com.apple.UIKit.activity.Print"]
    def get(base, *values)
      value = values.size == 1 ? values.first : values.flatten
      case value
      when Numeric
        value.to_i
      when NSArray
        unless get(base, value.first).is_a? Fixnum
          value.map { |v| get(base, v) }
        else
          value.reduce { |i, j|
            get(base, i) | get(base, j)
          }
        end
      else
        value = value.to_s.camelize
        Kernel.const_get("#{base}#{value}")
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
bubble-wrap-1.7.1 motion/util/constants.rb
bubble-wrap-1.7.0 motion/util/constants.rb
bubble-wrap-1.6.0 motion/util/constants.rb
bubble-wrap-1.6.0.rc1 motion/util/constants.rb