Skip to content

Commit

Permalink
Add in a new Tokenizer.Iterator for String. Add a few other enhanceme…
Browse files Browse the repository at this point in the history
…nts to make tokenizers and tokens easier to use
  • Loading branch information
Whiteknight committed Sep 8, 2011
1 parent d49252c commit 856b944
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 0 deletions.
1 change: 1 addition & 0 deletions setup.winxed
Expand Up @@ -228,6 +228,7 @@ function setup_stable_libraries(var rosella)
"string/tokenizer/CClass",
"string/tokenizer/Delimiter",
"string/tokenizer/DelimiterRegion",
"string/tokenizer/Iterator",
"string/tokenizer/Token"
);

Expand Down
5 changes: 5 additions & 0 deletions src/string/Tokenizer.winxed
Expand Up @@ -146,5 +146,10 @@ namespace Rosella { namespace String
self.data = substr(str, count + skip);
return substr(str, 0, count);
}

function get_iter[vtable]()
{
return new Rosella.String.Tokenizer.Iterator(self);
}
}
}}
34 changes: 34 additions & 0 deletions src/string/tokenizer/Iterator.winxed
@@ -0,0 +1,34 @@
namespace Rosella.String.Tokenizer
{
class Iterator
{
var tokenizer;

function Iterator(var tokenizer)
{
self.tokenizer = tokenizer;
}

function set_integer_native[vtable](int direction)
{
// ignored
}

function get_bool[vtable]()
{
return self.tokenizer != null && self.tokenizer.has_tokens();
}

function shift_pmc[vtable]()
{
say("shift_pmc");
return self.tokenizer.get_token();
}

function shift_string[vtable]()
{
say("shift_string");
return self.tokenizer.get_token().data();
}
}
}
5 changes: 5 additions & 0 deletions src/string/tokenizer/Token.winxed
Expand Up @@ -31,6 +31,11 @@ namespace Rosella { namespace String { namespace Tokenizer
return self.data;
}

function get_string[vtable]()
{
return string(self.data);
}

// Get the metadata object;
function metadata()
{
Expand Down

0 comments on commit 856b944

Please sign in to comment.