util-contains-newline.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. 'use strict';
  2. function containsNewline(key) {
  3. if (!key)
  4. return null;
  5. switch (key.type) {
  6. case 'alias':
  7. case 'scalar':
  8. case 'double-quoted-scalar':
  9. case 'single-quoted-scalar':
  10. if (key.source.includes('\n'))
  11. return true;
  12. if (key.end)
  13. for (const st of key.end)
  14. if (st.type === 'newline')
  15. return true;
  16. return false;
  17. case 'flow-collection':
  18. for (const it of key.items) {
  19. for (const st of it.start)
  20. if (st.type === 'newline')
  21. return true;
  22. if (it.sep)
  23. for (const st of it.sep)
  24. if (st.type === 'newline')
  25. return true;
  26. if (containsNewline(it.key) || containsNewline(it.value))
  27. return true;
  28. }
  29. return false;
  30. default:
  31. return true;
  32. }
  33. }
  34. exports.containsNewline = containsNewline;