github.com/RajatVaryani/mattermost-server@v5.11.1+incompatible/utils/markdown/lines.go (about)

     1  // Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
     2  // See License.txt for license information.
     3  
     4  package markdown
     5  
     6  type Line struct {
     7  	Range
     8  }
     9  
    10  func ParseLines(markdown string) (lines []Line) {
    11  	lineStartPosition := 0
    12  	isAfterCarriageReturn := false
    13  	for position, r := range markdown {
    14  		if r == '\n' {
    15  			lines = append(lines, Line{Range{lineStartPosition, position + 1}})
    16  			lineStartPosition = position + 1
    17  		} else if isAfterCarriageReturn {
    18  			lines = append(lines, Line{Range{lineStartPosition, position}})
    19  			lineStartPosition = position
    20  		}
    21  		isAfterCarriageReturn = r == '\r'
    22  	}
    23  	if lineStartPosition < len(markdown) {
    24  		lines = append(lines, Line{Range{lineStartPosition, len(markdown)}})
    25  	}
    26  	return
    27  }