From 58dda9c40e9649aea56c2f7ef7ba71dc6b2f02f4 Mon Sep 17 00:00:00 2001 From: Alexander Date: Fri, 13 Nov 2015 11:09:07 +0300 Subject: [PATCH] compact method --- source/com/kemsky/Stream.as | 17 ++++++++++++++--- testSrc/com/kemsky/TestStream.as | 15 +++++++++++++-- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/source/com/kemsky/Stream.as b/source/com/kemsky/Stream.as index 5f1d3b0..8d04406 100644 --- a/source/com/kemsky/Stream.as +++ b/source/com/kemsky/Stream.as @@ -2,6 +2,7 @@ package com.kemsky { import com.kemsky.filters._; import com.kemsky.filters.defined; + import com.kemsky.filters.existing; import com.kemsky.support.*; import flash.utils.ByteArray; @@ -182,8 +183,11 @@ package com.kemsky } /** - * Creates a new list for all items that are not strictly equal to undefined (item !== undefined). + * Creates a new list for all items that match defined or existing filters depending on undefinedOnly parameter. + * @param undefinedOnly use defined filter * @return A new list that contains all items from the original list that are not equal to undefined. + * @see com.kemsky.filters.defined + * @see com.kemsky.filters.existing * @example *
          *     var s:Stream = new Stream();
@@ -195,9 +199,16 @@ package com.kemsky
          * 
* @internal immutable */ - public function compact():Stream + public function compact(undefinedOnly:Boolean = false):Stream { - return filter(defined(_)); + if(undefinedOnly) + { + return filter(defined(_)); + } + else + { + return filter(existing(_)); + } } /** diff --git a/testSrc/com/kemsky/TestStream.as b/testSrc/com/kemsky/TestStream.as index f0649f1..6665b2f 100644 --- a/testSrc/com/kemsky/TestStream.as +++ b/testSrc/com/kemsky/TestStream.as @@ -131,12 +131,23 @@ package com.kemsky { var s:Stream = $(); s[0] = 1; - s[10] = 2; + s[3] = 2; - var c:Stream = s.compact(); + var c:Stream = s.compact(true); assertEquals(c.length, 2); assertEquals(c.first, 1); assertEquals(c.second, 2); + + var s1:Stream = $(); + s1[0] = 1; + s1[1] = null; + s1[2] = NaN; + s1[3] = 2; + + var c1:Stream = s1.compact(); + assertEquals(c1.length, 2); + assertEquals(c1.first, 1); + assertEquals(c1.second, 2); } [Test]