Sha256: 443da44fa2d5c690de37979de253fe13289e4aeebcae017f70cd522df849a74b

Contents?: true

Size: 1004 Bytes

Versions: 3

Compression:

Stored size: 1004 Bytes

Contents

define 'value_objects/phone', ->

  # TODO locales support
  class @Phone

    constructor: (@area_code, @number) ->
      {@area_code, @number} = @area_code if typeof @area_code == 'object'


      # TODO parse argument types to validate value object domain
      # constraints

      unless @number
        @number    = @area_code
        @area_code = null

      # TODO add as requirement observable shim!
      Object.defineProperty @, 'valid', get: @validate

    # TODO move type validation to indemma files
    validate: -> @area_code && @number

    toString: ->
      striped_number = @number.replace /\-/g, ''

      if striped_number
        if striped_number.length > 4
          formatted_number = striped_number.substr(0, 4) + '-' + striped_number.substr(4)
        else
          formatted_number = striped_number

      if @area_code?
        "(#{@area_code}) #{formatted_number}"
      else
        formatted_number or ''

    toJSON: ->
      area_code: @area_code
      number: @number

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ende-0.2.2 lib/assets/javascripts/value_objects/phone.js.coffee
ende-0.2.1 lib/assets/javascripts/value_objects/phone.js.coffee
ende-0.2.0 lib/assets/javascripts/value_objects/phone.js.coffee