util-contains-newline.js 1.0 KB

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