newline.js 718 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. 'use strict';
  2. var whitespace = require('is-whitespace-character');
  3. module.exports = newline;
  4. /* Tokenise newline. */
  5. function newline(eat, value, silent) {
  6. var character = value.charAt(0);
  7. var length;
  8. var subvalue;
  9. var queue;
  10. var index;
  11. if (character !== '\n') {
  12. return;
  13. }
  14. /* istanbul ignore if - never used (yet) */
  15. if (silent) {
  16. return true;
  17. }
  18. index = 1;
  19. length = value.length;
  20. subvalue = character;
  21. queue = '';
  22. while (index < length) {
  23. character = value.charAt(index);
  24. if (!whitespace(character)) {
  25. break;
  26. }
  27. queue += character;
  28. if (character === '\n') {
  29. subvalue += queue;
  30. queue = '';
  31. }
  32. index++;
  33. }
  34. eat(subvalue);
  35. }