1// Package ast defines AST nodes that represetns emoji extension's elements.
2package ast
3
4import (
5 "fmt"
6
7 "github.com/yuin/goldmark-emoji/definition"
8 gast "github.com/yuin/goldmark/ast"
9)
10
11// Emoji represents an inline emoji.
12type Emoji struct {
13 gast.BaseInline
14
15 ShortName []byte
16 Value *definition.Emoji
17}
18
19// Dump implements Node.Dump.
20func (n *Emoji) Dump(source []byte, level int) {
21 m := map[string]string{
22 "ShortName": string(n.ShortName),
23 "Value": fmt.Sprintf("%#v", n.Value),
24 }
25 gast.DumpHelper(n, source, level, m, nil)
26}
27
28// KindEmoji is a NodeKind of the emoji node.
29var KindEmoji = gast.NewNodeKind("Emoji")
30
31// Kind implements Node.Kind.
32func (n *Emoji) Kind() gast.NodeKind {
33 return KindEmoji
34}
35
36// NewEmoji returns a new Emoji node.
37func NewEmoji(shortName []byte, value *definition.Emoji) *Emoji {
38 return &Emoji{
39 ShortName: shortName,
40 Value: value,
41 }
42}