Python Save() and SavedLiteral(). Split factory and matcher.

This commit is contained in:
Ian Gulliver
2014-08-03 11:25:29 -07:00
parent b11a659f0c
commit d0ab66a823
3 changed files with 76 additions and 19 deletions

View File

@@ -475,7 +475,7 @@ rr.Ref.cache_ = {};
* @param {rr.typeMatcher} child
* @private
*/
rr.Save_ = function(key, child) {
rr.SaveAndDiscard_ = function(key, child) {
this.key_ = key;
this.child_ = child;
};
@@ -485,7 +485,7 @@ rr.Save_ = function(key, child) {
* @param {rr.Context} context
* @return {rr.typeIterator}
*/
rr.Save_.prototype.match = function(context) {
rr.SaveAndDiscard_.prototype.match = function(context) {
var iterator = this.child_.match(context);
return {
'next': function() {
@@ -510,17 +510,6 @@ rr.Save_.prototype.match = function(context) {
};
/**
* @param {string} key
* @param {rr.typeMatcher} saveChild
* @param {rr.typeMatcher} matchChild
* @return {rr.SequentialPair_}
*/
rr.Save = function(key, saveChild, matchChild) {
return new rr.SequentialPair_(new rr.Save_(key, saveChild), matchChild);
};
/**
* @constructor
@@ -785,6 +774,18 @@ rr.OneOrMore = function(child) {
};
/**
* @param {string} key
* @param {rr.typeMatcher} saveChild
* @param {rr.typeMatcher} matchChild
* @return {rr.SequentialPair_}
*/
rr.Save = function(key, saveChild, matchChild) {
save = new rr.SaveAndDiscard_(key, saveChild);
return new rr.SequentialPair_(save, matchChild);
};
/**
* @return {rr.SequentialPair_|rr.typeMatcher}
*/