Sha256: b58e2ab0bcac35c825d93e659b83c7f9d21926b174dffd93e32ff3b0cc29b5a8

Contents?: true

Size: 1022 Bytes

Versions: 10

Compression:

Stored size: 1022 Bytes

Contents

# ------------------------------------------------------------------ #
# Handles Enum definitions.                                          #
# It creates a helper methods for each one                           #
# and contains utility functions to operate on them                  #
# ------------------------------------------------------------------ #
class Lanes.Models.EnumMap
    constructor: (@klass)->
        @enums = _.clone(@klass::enums)
        for enum_name, def of @enums
            this.defineAccessor(enum_name, _.invert(def))
            for name, id of def
                this.defineEnumHelper(enum_name, name, id)

    defineAccessor: (name, values)->
        Object.defineProperty(@klass.prototype, "#{name}_value", {
            get: ->
                values[this.get(name)]
        })

    defineEnumHelper: (enum_name, name, id)->
        Object.defineProperty(@klass.prototype, "is_#{name}", {
            set: Lanes.emptyFn
            get: ->
                this[enum_name] == id
        })

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
lanes-0.7.0 client/lanes/models/EnumMap.coffee
lanes-0.6.1 client/lanes/models/EnumMap.coffee
lanes-0.6.0 client/lanes/models/EnumMap.coffee
lanes-0.5.6 client/lanes/models/EnumMap.coffee
lanes-0.5.5 client/lanes/models/EnumMap.coffee
lanes-0.5.0 client/lanes/models/EnumMap.coffee
lanes-0.4.0 client/lanes/models/EnumMap.coffee
lanes-0.3.0 client/lanes/models/EnumMap.coffee
lanes-0.1.9.5 client/lanes/models/EnumMap.coffee
lanes-0.1.9 client/lanes/models/EnumMap.coffee