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)