Skip to content

Commit

Permalink
rename prop to member
Browse files Browse the repository at this point in the history
  • Loading branch information
kemsky committed Dec 4, 2015
1 parent 26859a8 commit 92471da
Show file tree
Hide file tree
Showing 7 changed files with 52 additions and 38 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,8 @@ var result:Stream = s.filter(function(item:Item):Boolean{
});
// 2. using provided global functions(can compare Boolean, Number, Date, XML, String types)
// supports nested properties i.e. prop("prop.prop.prop")
var result:Stream = s.filter(gt(prop("price"), 1));
// supports nested properties i.e. member("prop.prop.prop")
var result:Stream = s.filter(gt(member("price"), 1));
// 3. using Proxy magick and global functions
var result:Stream = s.price(gt(_, 1));
Expand Down
5 changes: 5 additions & 0 deletions source/com/kemsky/$.as
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ package com.kemsky
//$ from list
return new Stream(arg.toArray());
}
else if(arg == null || arg === undefined)
{
//ignore empty arg
return new Stream();
}
else
{
//$ from one item
Expand Down
8 changes: 4 additions & 4 deletions source/com/kemsky/Stream.as
Original file line number Diff line number Diff line change
Expand Up @@ -300,10 +300,10 @@ package com.kemsky
* @example
* <pre>
* var s1:Stream = $(1, 2, 3);
* var s2:Stream = $(1, 2, 3);
* var s2:Stream = $("1", "2", "3");
* var z:Stream = s1.zip(s2);
* trace(z);
* //Stream{Stream{1, 1}, Stream{2, 2}, Stream{3, 3}}
* //Stream{Stream{1, "1"}, Stream{2, "2"}, Stream{3, "3"}}
* </pre>
* @return A new list of lists created from the items and their corresponding items from another strea.
* @internal immutable
Expand Down Expand Up @@ -1236,7 +1236,7 @@ package com.kemsky
* var item2:Object = {id: 2, key: "key1"};
* var item3:Object = {id: 3, key: "key2"};
* var s:Stream = $(item1, item2, item3);
* var d:Dictionary = s.dictionary(prop("key"));
* var d:Dictionary = s.dictionary(member("key"));
* trace(d["key1"]);
* //Stream{item1, item2}
* trace(d["key2"]);
Expand Down Expand Up @@ -1313,7 +1313,7 @@ package com.kemsky
* var item2:Object = {id: 2, key: "key1"};
* var item3:Object = {id: 3, key: "key2"};
* var s:Stream = $(item1, item2, item3);
* var d:Object = s.object(prop("key"));
* var d:Object = s.object(member("key"));
* trace(d["key1"]);
* //Stream{item1, item2}
* trace(d["key2"]);
Expand Down
1 change: 0 additions & 1 deletion source/com/kemsky/combine.as
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.kemsky
{
/**
* @private
* Creates combined function
* @param rest a list of functions
* @return combined function
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ package com.kemsky.filters
{
/**
* Creates function that extracts named property from value
* @param name name of the property (nested properties are supported: 'prop.prop1.prop2')
* @return function function that extracts named property from value
* @param name name of the property or method (nested properties are supported: 'prop.prop1.prop2')
* @return function function that extracts named property or method from value
*/
public function prop(name:String):Function
public function member(name:String):Function
{
var path:Array = name.split(".");

Expand Down
26 changes: 18 additions & 8 deletions testSrc/com/kemsky/TestStream.as
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.kemsky
import com.kemsky.filters._;
import com.kemsky.filters.eq;
import com.kemsky.filters.gt;
import com.kemsky.filters.prop;
import com.kemsky.filters.member;
import com.kemsky.support.stream_internal;

import flash.utils.ByteArray;
Expand All @@ -23,6 +23,16 @@ package com.kemsky
}


[Test]
public function testFactory():void
{
var s:Stream = $(null);
assertEquals(s.length, 0);

var s1:Stream = $(null, undefined);
assertEquals(s1.length, 2);
}

[Test]
public function testVector():void
{
Expand Down Expand Up @@ -153,8 +163,8 @@ package com.kemsky
var item1:Item = new Item("item1", 1);
var item2:Item = new Item("item2", 2);

assertEquals($(item1, item2).max(prop("price")), item2);
assertEquals($().max(prop("price"), 1), 1);
assertEquals($(item1, item2).max(member("price")), item2);
assertEquals($().max(member("price"), 1), 1);

try
{
Expand All @@ -176,8 +186,8 @@ package com.kemsky
var item1:Item = new Item("item1", 1);
var item2:Item = new Item("item2", 2);

assertEquals($(item1, item2).min(prop("price")), item1);
assertEquals($().min(prop("price"), 1), 1);
assertEquals($(item1, item2).min(member("price")), item1);
assertEquals($().min(member("price"), 1), 1);

try
{
Expand Down Expand Up @@ -316,7 +326,7 @@ package com.kemsky
{
var item:Item = new Item("name1", 5, 0);
var s:Stream = $(item);
assertEquals(s.map(prop("name")).first, "name1");
assertEquals(s.map(member("name")).first, "name1");
}

[Test]
Expand Down Expand Up @@ -504,7 +514,7 @@ package com.kemsky

var s:Stream = $(item1, item2);

var d:Dictionary = s.dictionary(prop("name"));
var d:Dictionary = s.dictionary(member("name"));
assertEquals(d["1"], item1);
assertEquals(d["2"], item2);

Expand All @@ -521,7 +531,7 @@ package com.kemsky

var s:Stream = $(item1, item2);

var d:Object = s.object(prop("name"), prop("price"));
var d:Object = s.object(member("name"), member("price"));
assertEquals(d["1"], item1.price);
assertEquals(d["2"], item2.price);
}
Expand Down
40 changes: 20 additions & 20 deletions testSrc/com/kemsky/filters/TestFilters.as
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,8 @@ package com.kemsky.filters

var s:Stream = $(item1, item2);

assertEquals(s.filter(eq(prop("bool"), true)).first, item2);
assertEquals(s.filter(eq(prop("bool"), false)).first, item1);
assertEquals(s.filter(eq(member("bool"), true)).first, item2);
assertEquals(s.filter(eq(member("bool"), false)).first, item1);
}

[Test]
Expand Down Expand Up @@ -183,7 +183,7 @@ package com.kemsky.filters

var s:Stream = $(item1, item2);

var result:Stream = s.filter(gt(prop("price"), 1));
var result:Stream = s.filter(gt(member("price"), 1));
assertEquals(result.length, 1);
assertEquals(result.first, item2);

Expand All @@ -195,19 +195,19 @@ package com.kemsky.filters
assertEquals(result.length, 1);
assertEquals(result.first, item2.price);

result = s.filter(ge(prop("price"), 2));
result = s.filter(ge(member("price"), 2));
assertEquals(result.length, 1);
assertEquals(result.first, item2);

result = s.filter(gt(add(prop("price"), prop("vat"), 0), 2));
result = s.filter(gt(add(member("price"), member("vat"), 0), 2));
assertEquals(result.length, 1);
assertEquals(result.first, item1);

result = s.filter(gt(subtract(prop("price"), prop("vat")), 0));
result = s.filter(gt(subtract(member("price"), member("vat")), 0));
assertEquals(result.length, 1);
assertEquals(result.first, item2);

result = s.filter(gt(subtract(prop("price"), 1), 0));
result = s.filter(gt(subtract(member("price"), 1), 0));
assertEquals(result.length, 1);
assertEquals(result.first, item2);

Expand All @@ -222,43 +222,43 @@ package com.kemsky.filters

var nested:Stream = $(obj);

result = nested.filter(eq(prop("name"), "p0"));
result = nested.filter(eq(member("name"), "p0"));
assertEquals(result.length, 1);

result = nested.filter(eq(prop("name1"), undefined));
result = nested.filter(eq(member("name1"), undefined));
assertEquals(result.length, 1);


result = nested.filter(eq(prop("item.name"), "p1"));
result = nested.filter(eq(member("item.name"), "p1"));
assertEquals(result.length, 1);

result = nested.filter(eq(prop("item.name1"), undefined));
result = nested.filter(eq(member("item.name1"), undefined));
assertEquals(result.length, 1);


result = nested.filter(eq(prop("item.item.name"), "p2"));
result = nested.filter(eq(member("item.item.name"), "p2"));
assertEquals(result.length, 1);

result = nested.filter(eq(prop("item.item.name1"), undefined));
result = nested.filter(eq(member("item.item.name1"), undefined));
assertEquals(result.length, 1);


result = nested.filter(eq(prop("item.item.item.name"), "p3"));
result = nested.filter(eq(member("item.item.item.name"), "p3"));
assertEquals(result.length, 1);

result = nested.filter(eq(prop("item.item.item.name1"), undefined));
result = nested.filter(eq(member("item.item.item.name1"), undefined));
assertEquals(result.length, 1);


result = nested.filter(eq(prop("item.item.item.item.name"), "p4"));
result = nested.filter(eq(member("item.item.item.item.name"), "p4"));
assertEquals(result.length, 1);

result = nested.filter(eq(prop("item.item.item.item.name1"), undefined));
result = nested.filter(eq(member("item.item.item.item.name1"), undefined));
assertEquals(result.length, 1);

try
{
nested.filter(eq(prop("item.item.item.item.item.name"), "p5"));
nested.filter(eq(member("item.item.item.item.item.name"), "p5"));
assertTrue(false);
}
catch(e:Error){}
Expand Down Expand Up @@ -295,8 +295,8 @@ package com.kemsky.filters

var s:Stream = $(item);

assertEquals(s.filter(mapped(prop("name"), d)).length, 1);
assertEquals(s.filter(mapped(prop("name"), o)).length, 1);
assertEquals(s.filter(mapped(member("name"), d)).length, 1);
assertEquals(s.filter(mapped(member("name"), o)).length, 1);


var p:Stream = $("name", "price", "vat");
Expand Down

0 comments on commit 92471da

Please sign in to comment.