text.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. 'use strict';
  2. module.exports = text;
  3. function text(eat, value, silent) {
  4. var self = this;
  5. var methods;
  6. var tokenizers;
  7. var index;
  8. var length;
  9. var subvalue;
  10. var position;
  11. var tokenizer;
  12. var name;
  13. var min;
  14. var now;
  15. /* istanbul ignore if - never used (yet) */
  16. if (silent) {
  17. return true;
  18. }
  19. methods = self.inlineMethods;
  20. length = methods.length;
  21. tokenizers = self.inlineTokenizers;
  22. index = -1;
  23. min = value.length;
  24. while (++index < length) {
  25. name = methods[index];
  26. if (name === 'text' || !tokenizers[name]) {
  27. continue;
  28. }
  29. tokenizer = tokenizers[name].locator;
  30. if (!tokenizer) {
  31. eat.file.fail('Missing locator: `' + name + '`');
  32. }
  33. position = tokenizer.call(self, value, 1);
  34. if (position !== -1 && position < min) {
  35. min = position;
  36. }
  37. }
  38. subvalue = value.slice(0, min);
  39. now = eat.now();
  40. self.decode(subvalue, now, function (content, position, source) {
  41. eat(source || content)({
  42. type: 'text',
  43. value: content
  44. });
  45. });
  46. }