Python Save() and SavedLiteral(). Split factory and matcher.
This commit is contained in:
@@ -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}
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user