import { Range } from 'vscode-languageserver' ; import lineColumn from 'line-column' ; import { ensureArray } from './array' ; export function removeRangesFromString ( str , rangeOrRanges ) { let ranges = ensureArray ( rangeOrRanges ) ; let finder = lineColumn ( str + '\n' , { origin : 0 } ) ; let indexRanges = [ ] ; ranges . forEach ( ( range ) => { let start = finder . toIndex ( range . start . line , range . start . character ) ; let end = finder . toIndex ( range . end . line , range . end . character ) ; for ( let i = start - 1 ; i >= 0 ; i -- ) { if ( /\s/ . test ( str . charAt ( i ) ) ) { start = i ; } else { break ; } } indexRanges . push ( { start , end } ) ; } ) ; indexRanges . sort ( ( a , b ) => a . start - b . start ) ; let result = '' ; let i = 0 ; indexRanges . forEach ( ( indexRange ) => { result += str . substring ( i , indexRange . start ) ; i = indexRange . end ; } ) ; result += str . substring ( i ) ; return result . trim ( ) ; }