mirror of
https://github.com/yuin/goldmark
synced 2025-03-04 23:04:52 +00:00
Fixes #213
This commit is contained in:
parent
75d8cce5b7
commit
ab798ea4aa
4 changed files with 20 additions and 5 deletions
|
|
@ -141,3 +141,16 @@ on two lines.</p>
|
||||||
</dl>
|
</dl>
|
||||||
//= = = = = = = = = = = = = = = = = = = = = = = =//
|
//= = = = = = = = = = = = = = = = = = = = = = = =//
|
||||||
|
|
||||||
|
|
||||||
|
6: Definition lists indented with tabs
|
||||||
|
//- - - - - - - - -//
|
||||||
|
0
|
||||||
|
: ```
|
||||||
|
0
|
||||||
|
//- - - - - - - - -//
|
||||||
|
<dl>
|
||||||
|
<dt>0</dt>
|
||||||
|
<dd><pre><code> 0</code></pre>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
//= = = = = = = = = = = = = = = = = = = = = = = =//
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,7 @@ func (b *definitionDescriptionParser) Open(parent gast.Node, reader text.Reader,
|
||||||
para.Parent().RemoveChild(para.Parent(), para)
|
para.Parent().RemoveChild(para.Parent(), para)
|
||||||
}
|
}
|
||||||
cpos, padding := util.IndentPosition(line[pos+1:], pos+1, list.Offset-pos-1)
|
cpos, padding := util.IndentPosition(line[pos+1:], pos+1, list.Offset-pos-1)
|
||||||
reader.AdvanceAndSetPadding(cpos, padding)
|
reader.AdvanceAndSetPadding(cpos+1, padding)
|
||||||
|
|
||||||
return ast.NewDefinitionDescription(), parser.HasChildren
|
return ast.NewDefinitionDescription(), parser.HasChildren
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ func (b *codeBlockParser) Continue(node ast.Node, reader text.Reader, pc Context
|
||||||
|
|
||||||
// if code block line starts with a tab, keep a tab as it is.
|
// if code block line starts with a tab, keep a tab as it is.
|
||||||
if segment.Padding != 0 {
|
if segment.Padding != 0 {
|
||||||
preserveLeadingTabInCodeBlock(&segment, reader)
|
preserveLeadingTabInCodeBlock(&segment, reader, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
node.Lines().Append(segment)
|
node.Lines().Append(segment)
|
||||||
|
|
@ -84,11 +84,12 @@ func (b *codeBlockParser) CanAcceptIndentedLine() bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func preserveLeadingTabInCodeBlock(segment *text.Segment, reader text.Reader) {
|
func preserveLeadingTabInCodeBlock(segment *text.Segment, reader text.Reader, indent int) {
|
||||||
offsetWithPadding := reader.LineOffset()
|
offsetWithPadding := reader.LineOffset() + indent
|
||||||
sl, ss := reader.Position()
|
sl, ss := reader.Position()
|
||||||
reader.SetPosition(sl, text.NewSegment(ss.Start-1, ss.Stop))
|
reader.SetPosition(sl, text.NewSegment(ss.Start-1, ss.Stop))
|
||||||
if offsetWithPadding == reader.LineOffset() {
|
if offsetWithPadding == reader.LineOffset() {
|
||||||
|
println("here")
|
||||||
segment.Padding = 0
|
segment.Padding = 0
|
||||||
segment.Start--
|
segment.Start--
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -71,9 +71,10 @@ func (b *fencedCodeBlockParser) Open(parent ast.Node, reader text.Reader, pc Con
|
||||||
func (b *fencedCodeBlockParser) Continue(node ast.Node, reader text.Reader, pc Context) State {
|
func (b *fencedCodeBlockParser) Continue(node ast.Node, reader text.Reader, pc Context) State {
|
||||||
line, segment := reader.PeekLine()
|
line, segment := reader.PeekLine()
|
||||||
fdata := pc.Get(fencedCodeBlockInfoKey).(*fenceData)
|
fdata := pc.Get(fencedCodeBlockInfoKey).(*fenceData)
|
||||||
|
|
||||||
// if code block line starts with a tab, keep a tab as it is.
|
// if code block line starts with a tab, keep a tab as it is.
|
||||||
if segment.Padding != 0 {
|
if segment.Padding != 0 {
|
||||||
preserveLeadingTabInCodeBlock(&segment, reader)
|
preserveLeadingTabInCodeBlock(&segment, reader, fdata.indent)
|
||||||
}
|
}
|
||||||
w, pos := util.IndentWidth(line, reader.LineOffset())
|
w, pos := util.IndentWidth(line, reader.LineOffset())
|
||||||
if w < 4 {
|
if w < 4 {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue