master
 1class csx.Proxy
 2  @create: do ->
 3    parse = (object, path) ->
 4      return unless csx.Proxy.typeOf(object) == 'object' and path?
 5      return [object, path] if path.indexOf('.') == -1
 6      path = path.split('.')
 7      tail = path.pop()
 8      for property in path
 9        return unless object.hasOwnProperty(property)
10        object = object[property]
11      [object, tail]
12
13    read = (object, path) ->
14      parts = parse(object, path)
15      return parts[0][parts[1]] if parts
16
17    write = (object, path, value) ->
18      parts = parse(object, path)
19      if parts
20        parts[0][parts[1]] = value
21        value
22
23    (object, path, value) ->
24      return read(object, path) if arguments.length == 2
25      return write(object, path, value) if arguments.length == 3
26      console.error '[csx.Proxy.create] incorrect number of arguments'
27
28  @typeOf: (object) ->
29    return 'array' if _.isArray(object)
30    return 'regexp' if _.isRegExp(object)
31    typeof(object)