Comparing version 0.1.1 to 0.1.2
@@ -37,2 +37,3 @@ import { Segments, Node } from './types'; | ||
static transform<T>(pattern: Pattern, regexp: string | RegExp, callback: (...args: string[]) => T): T; | ||
static parse(path?: Pattern): any; | ||
static getPath(path?: Pattern): any; | ||
@@ -43,2 +44,2 @@ static getIn: (source: any, pattern: Pattern) => any; | ||
} | ||
export {}; | ||
export default Path; |
@@ -463,2 +463,6 @@ "use strict"; | ||
}; | ||
Path.parse = function (path) { | ||
if (path === void 0) { path = ''; } | ||
return Path.getPath(path); | ||
}; | ||
Path.getPath = function (path) { | ||
@@ -504,1 +508,2 @@ if (path === void 0) { path = ''; } | ||
exports.Path = Path; | ||
exports.default = Path; |
{ | ||
"name": "cool-path", | ||
"version": "0.1.1", | ||
"version": "0.1.2", | ||
"description": "Path Matcher/Getter/Setter for Object/Array", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
@@ -67,3 +67,3 @@ # CoolPath | ||
- `getPath(pattern: Pattern)` | ||
- `parse(pattern: Pattern)` | ||
@@ -80,3 +80,67 @@ - `getIn(source: any, pattern: Pattern)` | ||
- Object Pattern | ||
```javascript | ||
Path.setIn({},'a.b.c.{aaa,bbb}',{aaa:123,bbb:321}) | ||
==> | ||
{a:{b:{c:{aaa:123,bbb:321}}}} | ||
Path.getIn({a:{b:{c:{aaa:123,bbb:321}}}},'a.b.c.{aaa,bbb}') | ||
==> | ||
{aaa:123,bbb:321} | ||
Path.setIn({a:{b:{c:{kkk:'ddd'}}}},'a.b.c.{aaa,bbb}',{aaa:123,bbb:321}) | ||
==> | ||
{a:{b:{c:{aaa:123,bbb:321,kkk:'ddd'}}}} | ||
Path.getIn({a:{b:{c:{aaa:123,bbb:321,kkk:'ddd'}}}},'a.b.c.{aaa,bbb}') | ||
==> | ||
{aaa:123,bbb:321} | ||
Path.setIn({a:{b:{c:{kkk:'ddd'}}}},'a.b.c.{aaa:ooo,bbb}',{aaa:123,bbb:321}) | ||
==> | ||
{a:{b:{c:{ooo:123,bbb:321,kkk:'ddd'}}}} | ||
Path.getIn({a:{b:{c:{ooo:123,bbb:321,kkk:'ddd'}}}},'a.b.c.{aaa:ooo,bbb}') | ||
==> | ||
{aaa:123,bbb:321} | ||
``` | ||
- Array Pattern | ||
```javascript | ||
Path.setIn({},'a.b.c.[aaa,bbb]',[123,321]) | ||
==> | ||
{a:{b:{c:{aaa:123,bbb:321}}}} | ||
Path.getIn({a:{b:{c:{aaa:123,bbb:321}}}},'a.b.c.[aaa,bbb]') | ||
==> | ||
[123,321] | ||
Path.setIn({a:{b:{c:{kkk:'ddd'}}}},'a.b.c.[aaa,bbb]',[123,321]) | ||
==> | ||
{a:{b:{c:{aaa:123,bbb:321,kkk:'ddd'}}}} | ||
Path.getIn({a:{b:{c:{aaa:123,bbb:321,kkk:'ddd'}}}},'a.b.c.[aaa,bbb]') | ||
==> | ||
[123,321] | ||
``` | ||
- Nested Array and Object Pattern | ||
```javascript | ||
Path.setIn({},'a.b.c.[{ddd,kkk:mmm},bbb]',[{ddd:123,kkk:'hhhh'},321]) | ||
==> | ||
{a:{b:{c:{ddd:123,bbb:321,mmm:'hhh'}}}} | ||
Path.getIn({a:{b:{c:{ddd:123,bbb:321,mmm:'hhh'}}}},'a.b.c.[{ddd,kkk:mmm},bbb]') | ||
==> | ||
[{ddd:123,kkk:'hhh'},321] | ||
Path.setIn({a:{b:{c:{kkk:'ddd'}}}},'a.b.c.{aaa:ooo,bbb:[ccc,ddd]}',{aaa:123,bbb:[123,321]}) | ||
==> | ||
{a:{b:{c:{ooo:123,ccc:123,ddd:321,kkk:'ddd'}}}} | ||
Path.getIn({a:{b:{c:{ooo:123,ccc:123,ddd:321,kkk:'ddd'}}}},'a.b.c.{aaa:ooo,bbb:[ccc,ddd]}') | ||
==> | ||
{aaa:123,bbb:[123,321]} | ||
``` | ||
### Path Match Pattern Syntax | ||
@@ -83,0 +147,0 @@ |
@@ -499,2 +499,6 @@ import { Parser } from './parser' | ||
static parse(path: Pattern = ''){ | ||
return Path.getPath(path) | ||
} | ||
static getPath(path: Pattern = '') { | ||
@@ -537,1 +541,4 @@ if (path instanceof Path) { | ||
} | ||
export default Path |
@@ -111,1 +111,113 @@ import { Path } from '../src' | ||
}) | ||
test('setIn with a.b.c.{aaa,bbb}', () => { | ||
expect(Path.setIn({}, 'a.b.c.{aaa,bbb}', { aaa: 123, bbb: 321 })).toEqual({ | ||
a: { b: { c: { aaa: 123, bbb: 321 } } } | ||
}) | ||
}) | ||
test('getIn with a.b.c.{aaa,bbb}', () => { | ||
expect( | ||
Path.getIn({ a: { b: { c: { aaa: 123, bbb: 321 } } } }, 'a.b.c.{aaa,bbb}') | ||
).toEqual({ aaa: 123, bbb: 321 }) | ||
}) | ||
test('setIn with a.b.c.{aaa,bbb} source has extra property', () => { | ||
expect( | ||
Path.setIn({ a: { b: { c: { kkk: 'ddd' } } } }, 'a.b.c.{aaa,bbb}', { | ||
aaa: 123, | ||
bbb: 321 | ||
}) | ||
).toEqual({ a: { b: { c: { aaa: 123, bbb: 321, kkk: 'ddd' } } } }) | ||
}) | ||
test('getIn with a.b.c.{aaa,bbb} source has extra property', () => { | ||
expect( | ||
Path.getIn( | ||
{ a: { b: { c: { aaa: 123, bbb: 321, kkk: 'ddd' } } } }, | ||
'a.b.c.{aaa,bbb}' | ||
) | ||
).toEqual({ aaa: 123, bbb: 321 }) | ||
}) | ||
test('setIn with a.b.c.{aaa:ooo,bbb}', () => { | ||
expect( | ||
Path.setIn({ a: { b: { c: { kkk: 'ddd' } } } }, 'a.b.c.{aaa:ooo,bbb}', { | ||
aaa: 123, | ||
bbb: 321 | ||
}) | ||
).toEqual({ a: { b: { c: { ooo: 123, bbb: 321, kkk: 'ddd' } } } }) | ||
}) | ||
test('getIn with a.b.c.{aaa:ooo,bbb}', () => { | ||
expect( | ||
Path.getIn( | ||
{ a: { b: { c: { ooo: 123, bbb: 321, kkk: 'ddd' } } } }, | ||
'a.b.c.{aaa:ooo,bbb}' | ||
) | ||
).toEqual({ aaa: 123, bbb: 321 }) | ||
}) | ||
test('setIn with a.b.c.[aaa,bbb]', () => { | ||
expect(Path.setIn({}, 'a.b.c.[aaa,bbb]', [123, 321])).toEqual({ | ||
a: { b: { c: { aaa: 123, bbb: 321 } } } | ||
}) | ||
}) | ||
test('getIn with a.b.c.[aaa,bbb]', () => { | ||
expect( | ||
Path.getIn({ a: { b: { c: { aaa: 123, bbb: 321 } } } }, 'a.b.c.[aaa,bbb]') | ||
).toEqual([123, 321]) | ||
}) | ||
test('setIn with a.b.c.[aaa,bbb] source has extra property', () => { | ||
expect( | ||
Path.setIn({ a: { b: { c: { kkk: 'ddd' } } } }, 'a.b.c.[aaa,bbb]', [ | ||
123, | ||
321 | ||
]) | ||
).toEqual({ a: { b: { c: { aaa: 123, bbb: 321, kkk: 'ddd' } } } }) | ||
}) | ||
test('getIn with a.b.c.[aaa,bbb] source has extra property', () => { | ||
expect( | ||
Path.getIn( | ||
{ a: { b: { c: { aaa: 123, bbb: 321, kkk: 'ddd' } } } }, | ||
'a.b.c.[aaa,bbb]' | ||
) | ||
).toEqual([123, 321]) | ||
}) | ||
test('setIn with a.b.c.[{ddd,kkk:mmm},bbb]', () => { | ||
expect( | ||
Path.setIn({}, 'a.b.c.[{ddd,kkk:mmm},bbb]', [{ ddd: 123, kkk: 'hhh' }, 321]) | ||
).toEqual({ a: { b: { c: { ddd: 123, bbb: 321, mmm: 'hhh' } } } }) | ||
}) | ||
test('getIn with a.b.c.[{ddd,kkk:mmm},bbb]', () => { | ||
expect( | ||
Path.getIn( | ||
{ a: { b: { c: { ddd: 123, bbb: 321, mmm: 'hhh' } } } }, | ||
'a.b.c.[{ddd,kkk:mmm},bbb]' | ||
) | ||
).toEqual([{ ddd: 123, kkk: 'hhh' }, 321]) | ||
}) | ||
test('setIn with a.b.c.{aaa:ooo,bbb:[ccc,ddd]}', () => { | ||
expect( | ||
Path.setIn( | ||
{ a: { b: { c: { kkk: 'ddd' } } } }, | ||
'a.b.c.{aaa:ooo,bbb:[ccc,ddd]}', | ||
{ aaa: 123, bbb: [123, 321] } | ||
) | ||
).toEqual({ a: { b: { c: { ooo: 123, ccc: 123, ddd: 321, kkk: 'ddd' } } } }) | ||
}) | ||
test('getIn with a.b.c.{aaa:ooo,bbb:[ccc,ddd]}', () => { | ||
expect( | ||
Path.getIn( | ||
{ a: { b: { c: { ooo: 123, ccc: 123, ddd: 321, kkk: 'ddd' } } } }, | ||
'a.b.c.{aaa:ooo,bbb:[ccc,ddd]}' | ||
) | ||
).toEqual({ aaa: 123, bbb: [123, 321] }) | ||
}) |
147361
4717
217