text.js 1017 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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, handler)
  41. function handler(content, position, source) {
  42. eat(source || content)({type: 'text', value: content})
  43. }
  44. }