Sha256: 1aa7896054bc72744a3aff21cdfa3f8fd881d57f6218dd5be4ecc60de60868eb

Contents?: true

Size: 1.58 KB

Versions: 7

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 RubyMotion only 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

7 entries across 7 versions & 1 rubygems

Version Path
bubble-wrap-1.9.5 motion/util/constants.rb
bubble-wrap-1.9.4 motion/util/constants.rb
bubble-wrap-1.9.3 motion/util/constants.rb
bubble-wrap-1.9.2 motion/util/constants.rb
bubble-wrap-1.9.1 motion/util/constants.rb
bubble-wrap-1.9.0 motion/util/constants.rb
bubble-wrap-1.8.0 motion/util/constants.rb