github.com/fretkak/mattermost-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 }