figure.ts 719 B

1234567891011121314151617181920212223242526
  1. import { SyntaxNode, SyntaxNodeRef } from '@lezer/common'
  2. import { CenteringCtrlSeq } from '../../lezer-latex/latex.terms.mjs'
  3. export function centeringNodeForEnvironment(
  4. environmentNodeRef: SyntaxNodeRef
  5. ): SyntaxNode | null {
  6. let centeringNode: SyntaxNode | null = null
  7. const cursor = environmentNodeRef.node.cursor()
  8. cursor.iterate(nodeRef => {
  9. if (centeringNode) {
  10. return false
  11. }
  12. if (nodeRef.type.is(CenteringCtrlSeq)) {
  13. centeringNode = nodeRef.node
  14. return false
  15. }
  16. // don't descend into nested environments
  17. if (
  18. nodeRef.node !== environmentNodeRef.node &&
  19. nodeRef.type.is('$Environment')
  20. ) {
  21. return false
  22. }
  23. })
  24. return centeringNode
  25. }