forked from lug/matterbridge
		
	 04567c765e
			
		
	
	04567c765e
	
	
	
		
			
			This uses our own gomatrix lib with the SendHTML function which adds HTML to formatted_body in matrix. golang-commonmark is used to convert markdown into valid HTML.
		
			
				
	
	
		
			81 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2015 The Authors. All rights reserved.
 | |
| // Use of this source code is governed by a BSD-style
 | |
| // license that can be found in the LICENSE file.
 | |
| 
 | |
| package markdown
 | |
| 
 | |
| import "strings"
 | |
| 
 | |
| func ruleLHeading(s *StateBlock, startLine, endLine int, silent bool) bool {
 | |
| 	nextLine := startLine + 1
 | |
| 
 | |
| 	if s.SCount[startLine]-s.BlkIndent >= 4 {
 | |
| 		return false
 | |
| 	}
 | |
| 
 | |
| 	oldParentType := s.ParentType
 | |
| 	s.ParentType = ptParagraph
 | |
| 	src := s.Src
 | |
| 
 | |
| 	var pos int
 | |
| 	var hLevel int
 | |
| outer:
 | |
| 	for ; nextLine < endLine && !s.IsLineEmpty(nextLine); nextLine++ {
 | |
| 		if s.SCount[nextLine]-s.BlkIndent > 3 {
 | |
| 			continue
 | |
| 		}
 | |
| 
 | |
| 		if s.SCount[nextLine] >= s.BlkIndent {
 | |
| 			pos = s.BMarks[nextLine] + s.TShift[nextLine]
 | |
| 			max := s.EMarks[nextLine]
 | |
| 
 | |
| 			if pos < max {
 | |
| 				marker := src[pos]
 | |
| 
 | |
| 				if marker == '-' || marker == '=' {
 | |
| 					pos = s.SkipBytes(pos, marker)
 | |
| 					pos = s.SkipSpaces(pos)
 | |
| 
 | |
| 					if pos >= max {
 | |
| 						hLevel = 1
 | |
| 						if marker == '-' {
 | |
| 							hLevel++
 | |
| 						}
 | |
| 						break
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		if s.SCount[nextLine] < 0 {
 | |
| 			continue
 | |
| 		}
 | |
| 
 | |
| 		for _, r := range paragraphTerminatedBy {
 | |
| 			if r(s, nextLine, endLine, true) {
 | |
| 				break outer
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	if hLevel == 0 {
 | |
| 		return false
 | |
| 	}
 | |
| 
 | |
| 	s.Line = nextLine + 1
 | |
| 
 | |
| 	s.PushOpeningToken(&HeadingOpen{
 | |
| 		HLevel: hLevel,
 | |
| 		Map:    [2]int{startLine, s.Line},
 | |
| 	})
 | |
| 	s.PushToken(&Inline{
 | |
| 		Content: strings.TrimSpace(s.Lines(startLine, nextLine, s.BlkIndent, false)),
 | |
| 		Map:     [2]int{startLine, s.Line - 1},
 | |
| 	})
 | |
| 	s.PushClosingToken(&HeadingClose{HLevel: hLevel})
 | |
| 
 | |
| 	s.ParentType = oldParentType
 | |
| 
 | |
| 	return true
 | |
| }
 |