[文档]defparagraph(state:StateBlock,startLine:int,endLine:int,silent:bool=False):LOGGER.debug("entering paragraph: %s, %s, %s, %s",state,startLine,endLine,silent)nextLine=startLine+1ruler:Ruler=state.md.block.rulerterminatorRules=ruler.getRules("paragraph")endLine=state.lineMaxoldParentType=state.parentTypestate.parentType="paragraph"# jump line-by-line until empty one or EOFwhilenextLine<endLine:ifstate.isEmpty(nextLine):break# this would be a code block normally, but after paragraph# it's considered a lazy continuation regardless of what's thereifstate.sCount[nextLine]-state.blkIndent>3:nextLine+=1continue# quirk for blockquotes, this line should already be checked by that ruleifstate.sCount[nextLine]<0:nextLine+=1continue# Some tags can terminate paragraph without empty line.terminate=FalseforterminatorRuleinterminatorRules:ifterminatorRule(state,nextLine,endLine,True):terminate=Truebreakifterminate:breaknextLine+=1content=state.getLines(startLine,nextLine,state.blkIndent,False).strip()state.line=nextLinetoken=state.push("paragraph_open","p",1)token.map=[startLine,state.line]token=state.push("inline","",0)token.content=contenttoken.map=[startLine,state.line]token.children=[]token=state.push("paragraph_close","p",-1)state.parentType=oldParentTypereturnTrue