package parser

import (
	
	
)

type emphasisDelimiterProcessor struct {
}

func ( *emphasisDelimiterProcessor) ( byte) bool {
	return  == '*' ||  == '_'
}

func ( *emphasisDelimiterProcessor) (,  *Delimiter) bool {
	return .Char == .Char
}

func ( *emphasisDelimiterProcessor) ( int) ast.Node {
	return ast.NewEmphasis()
}

var defaultEmphasisDelimiterProcessor = &emphasisDelimiterProcessor{}

type emphasisParser struct {
}

var defaultEmphasisParser = &emphasisParser{}
NewEmphasisParser return a new InlineParser that parses emphasises.
func () InlineParser {
	return defaultEmphasisParser
}

func ( *emphasisParser) () []byte {
	return []byte{'*', '_'}
}

func ( *emphasisParser) ( ast.Node,  text.Reader,  Context) ast.Node {
	 := .PrecendingCharacter()
	,  := .PeekLine()
	 := ScanDelimiter(, , 1, defaultEmphasisDelimiterProcessor)
	if  == nil {
		return nil
	}
	.Segment = .WithStop(.Start + .OriginalLength)
	.Advance(.OriginalLength)
	.PushDelimiter()
	return