Sha256: 07187f40f3de7208805f49ea1767c23227feb736ba566e7891a24a080e90cc23

Contents?: true

Size: 1.34 KB

Versions: 5

Compression:

Stored size: 1.34 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
    def get(base, *values)
      value = values.size == 1 ? values.first : values.flatten
      case value
      when Numeric
        value.to_i
      when NSArray
        value.reduce { |i, j|
          get(base, i) | get(base, j)
        }
      else
        value = value.to_s.camelize
        Kernel.const_get("#{base}#{value}")
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
bubble-wrap-1.5.0 motion/util/constants.rb
bubble-wrap-1.5.0.rc1 motion/util/constants.rb
bubble-wrap-1.4.0 motion/util/constants.rb
bubble-wrap-1.3.0 motion/util/constants.rb
bubble-wrap-1.3.0.osx motion/util/constants.rb