Skip to content

Commit

Permalink
create stream from object/dictionary
Browse files Browse the repository at this point in the history
  • Loading branch information
kemsky committed Nov 18, 2015
1 parent c407d19 commit b949c55
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 0 deletions.
52 changes: 52 additions & 0 deletions source/com/kemsky/Stream.as
Original file line number Diff line number Diff line change
Expand Up @@ -2192,5 +2192,57 @@ package com.kemsky

return callback == null ? result : result.map(callback);
}

/**
* Create stream from object(dictionary) property names.
* @param object object used as source for a stream
* @return created Stream object
* @example
* <pre>
* var obj:Object = {name1: "first", name2: "second"};
* var s:Stream = Stream.fromKeys(obj);
* trace(s);
* //prints ["name1", "name2"]
* </pre>
* @internal immutable
*/
public static function fromKeys(object:Object):Stream
{
var result:Stream = new Stream();
for (var prop:String in object)
{
if(object.hasOwnProperty(prop))
{
result.push(prop);
}
}
return result;
}

/**
* Create stream from object(dictionary) property values.
* @param object object used as source for a stream
* @return created Stream object
* @example
* <pre>
* var obj:Object = {name1: "first", name2: "second"};
* var s:Stream = Stream.fromValues(obj);
* trace(s);
* //prints ["first", "second"]
* </pre>
* @internal immutable
*/
public static function fromValues(object:Object):Stream
{
var result:Stream = new Stream();
for (var prop:String in object)
{
if(object.hasOwnProperty(prop))
{
result.push(object[prop]);
}
}
return result;
}
}
}
27 changes: 27 additions & 0 deletions testSrc/com/kemsky/TestStream.as
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,33 @@ package com.kemsky
{
}

[Test]
public function testFromValues():void
{
var obj:Object = {name1: "first", name2: "second"};

var s:Stream = Stream.fromValues(obj).sort();
assertEquals(s.length, 2);
assertEquals(s.first, "first");
assertEquals(s.second, "second");

var s2:Stream = Stream.fromKeys(null);
assertEquals(s2.length, 0);
}

[Test]
public function testFromKeys():void
{
var obj:Object = {name1: "first", name2: "second"};

var s:Stream = Stream.fromKeys(obj).sort();
assertEquals(s.length, 2);
assertEquals(s.first, "name1");
assertEquals(s.second, "name2");

var s2:Stream = Stream.fromKeys(null);
assertEquals(s2.length, 0);
}

[Test]
public function testDeduplicate():void
Expand Down

0 comments on commit b949c55

Please sign in to comment.