text.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // Copyright 2007 The Closure Library Authors. All Rights Reserved.
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS-IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. /**
  15. * @fileoverview DOM pattern to match a text node.
  16. *
  17. * @author robbyw@google.com (Robby Walker)
  18. */
  19. goog.provide('goog.dom.pattern.Text');
  20. goog.require('goog.dom.NodeType');
  21. goog.require('goog.dom.pattern');
  22. goog.require('goog.dom.pattern.AbstractPattern');
  23. goog.require('goog.dom.pattern.MatchType');
  24. /**
  25. * Pattern object that matches text by exact matching or regular expressions.
  26. *
  27. * @param {string|RegExp} match String or regular expression to match against.
  28. * @constructor
  29. * @extends {goog.dom.pattern.AbstractPattern}
  30. * @final
  31. */
  32. goog.dom.pattern.Text = function(match) {
  33. /**
  34. * The text or regular expression to match.
  35. *
  36. * @private {string|RegExp}
  37. */
  38. this.match_ = match;
  39. };
  40. goog.inherits(goog.dom.pattern.Text, goog.dom.pattern.AbstractPattern);
  41. /**
  42. * Test whether the given token is a text token which matches the string or
  43. * regular expression provided in the constructor.
  44. *
  45. * @param {Node} token Token to match against.
  46. * @param {goog.dom.TagWalkType} type The type of token.
  47. * @return {goog.dom.pattern.MatchType} <code>MATCH</code> if the pattern
  48. * matches, <code>NO_MATCH</code> otherwise.
  49. * @override
  50. */
  51. goog.dom.pattern.Text.prototype.matchToken = function(token, type) {
  52. if (token.nodeType == goog.dom.NodeType.TEXT &&
  53. goog.dom.pattern.matchStringOrRegex(this.match_, token.nodeValue)) {
  54. this.matchedNode = token;
  55. return goog.dom.pattern.MatchType.MATCH;
  56. }
  57. return goog.dom.pattern.MatchType.NO_MATCH;
  58. };