mirror of
https://github.com/yuin/goldmark
synced 2025-03-04 23:04:52 +00:00
parent
a302193b06
commit
3393022ab6
2 changed files with 59 additions and 2 deletions
|
|
@ -25,3 +25,44 @@ Some say '90s, others say 90's, but I can't say which is best.
|
||||||
//- - - - - - - - -//
|
//- - - - - - - - -//
|
||||||
<p>Some say ’90s, others say 90’s, but I can’t say which is best.</p>
|
<p>Some say ’90s, others say 90’s, but I can’t say which is best.</p>
|
||||||
//= = = = = = = = = = = = = = = = = = = = = = = =//
|
//= = = = = = = = = = = = = = = = = = = = = = = =//
|
||||||
|
|
||||||
|
5
|
||||||
|
//- - - - - - - - -//
|
||||||
|
[Cat][]'s Pajamas
|
||||||
|
|
||||||
|
[Cat]: http://example.com
|
||||||
|
//- - - - - - - - -//
|
||||||
|
<p><a href="http://example.com">Cat</a>’s Pajamas</p>
|
||||||
|
//= = = = = = = = = = = = = = = = = = = = = = = =//
|
||||||
|
|
||||||
|
6
|
||||||
|
//- - - - - - - - -//
|
||||||
|
reported "issue 1 (IE-only)"
|
||||||
|
//- - - - - - - - -//
|
||||||
|
<p>reported “issue 1 (IE-only)”</p>
|
||||||
|
//= = = = = = = = = = = = = = = = = = = = = = = =//
|
||||||
|
|
||||||
|
7
|
||||||
|
//- - - - - - - - -//
|
||||||
|
Yahoo!'s
|
||||||
|
//- - - - - - - - -//
|
||||||
|
<p>Yahoo!’s</p>
|
||||||
|
//= = = = = = = = = = = = = = = = = = = = = = = =//
|
||||||
|
|
||||||
|
8
|
||||||
|
//- - - - - - - - -//
|
||||||
|
Alice's, I'm ,Don't, You'd
|
||||||
|
|
||||||
|
I've, I'll, You're
|
||||||
|
//- - - - - - - - -//
|
||||||
|
<p>Alice’s, I’m ,Don’t, You’d</p>
|
||||||
|
<p>I’ve, I’ll, You’re</p>
|
||||||
|
//= = = = = = = = = = = = = = = = = = = = = = = =//
|
||||||
|
|
||||||
|
9
|
||||||
|
//- - - - - - - - -//
|
||||||
|
My height is 5'6"".
|
||||||
|
//- - - - - - - - -//
|
||||||
|
<p>My height is 5'6"".</p>
|
||||||
|
//= = = = = = = = = = = = = = = = = = = = = = = =//
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -143,7 +143,6 @@ func (s *typographerParser) Trigger() []byte {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *typographerParser) Parse(parent gast.Node, block text.Reader, pc parser.Context) gast.Node {
|
func (s *typographerParser) Parse(parent gast.Node, block text.Reader, pc parser.Context) gast.Node {
|
||||||
before := block.PrecendingCharacter()
|
|
||||||
line, _ := block.PeekLine()
|
line, _ := block.PeekLine()
|
||||||
c := line[0]
|
c := line[0]
|
||||||
if len(line) > 2 {
|
if len(line) > 2 {
|
||||||
|
|
@ -189,6 +188,7 @@ func (s *typographerParser) Parse(parent gast.Node, block text.Reader, pc parser
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if c == '\'' || c == '"' {
|
if c == '\'' || c == '"' {
|
||||||
|
before := block.PrecendingCharacter()
|
||||||
d := parser.ScanDelimiter(line, before, 1, defaultTypographerDelimiterProcessor)
|
d := parser.ScanDelimiter(line, before, 1, defaultTypographerDelimiterProcessor)
|
||||||
if d == nil {
|
if d == nil {
|
||||||
return nil
|
return nil
|
||||||
|
|
@ -218,7 +218,17 @@ func (s *typographerParser) Parse(parent gast.Node, block text.Reader, pc parser
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if s.Substitutions[LeftSingleQuote] != nil && d.CanOpen && !d.CanClose {
|
if s.Substitutions[LeftSingleQuote] != nil && d.CanOpen && !d.CanClose {
|
||||||
node := gast.NewString(s.Substitutions[LeftSingleQuote])
|
nt := LeftSingleQuote
|
||||||
|
// special cases: Alice's, I'm ,Don't, You'd
|
||||||
|
if len(line) > 1 && (line[1] == 's' || line[1] == 'm' || line[1] == 't' || line[1] == 'd') && (len(line) < 3 || util.IsPunct(line[2]) || util.IsSpace(line[2])) {
|
||||||
|
nt = RightSingleQuote
|
||||||
|
}
|
||||||
|
// special cases: I've, I'll, You're
|
||||||
|
if len(line) > 2 && ((line[1] == 'v' && line[2] == 'e') || (line[1] == 'l' && line[2] == 'l') || (line[1] == 'r' && line[2] == 'e')) && (len(line) < 4 || util.IsPunct(line[3]) || util.IsSpace(line[3])) {
|
||||||
|
nt = RightSingleQuote
|
||||||
|
}
|
||||||
|
|
||||||
|
node := gast.NewString(s.Substitutions[nt])
|
||||||
node.SetCode(true)
|
node.SetCode(true)
|
||||||
block.Advance(1)
|
block.Advance(1)
|
||||||
return node
|
return node
|
||||||
|
|
@ -231,6 +241,12 @@ func (s *typographerParser) Parse(parent gast.Node, block text.Reader, pc parser
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if c == '"' {
|
if c == '"' {
|
||||||
|
// special case: 7'1""
|
||||||
|
if len(line) > 1 && line[1] == '"' && unicode.IsDigit(before) {
|
||||||
|
node := gast.NewString(line[0:2])
|
||||||
|
block.Advance(2)
|
||||||
|
return node
|
||||||
|
}
|
||||||
if s.Substitutions[LeftDoubleQuote] != nil && d.CanOpen && !d.CanClose {
|
if s.Substitutions[LeftDoubleQuote] != nil && d.CanOpen && !d.CanClose {
|
||||||
node := gast.NewString(s.Substitutions[LeftDoubleQuote])
|
node := gast.NewString(s.Substitutions[LeftDoubleQuote])
|
||||||
node.SetCode(true)
|
node.SetCode(true)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue