From 5449342016c7fcc9e7f9b1d595e87d94b2b2c11c Mon Sep 17 00:00:00 2001 From: Steven Date: Mon, 8 Jan 2024 20:57:44 +0800 Subject: [PATCH] fix: auto link converters --- api/v2/markdown_service.go | 4 ++-- plugin/gomark/parser/auto_link.go | 4 ++-- proto/api/v2/markdown_service.proto | 1 + proto/gen/api/v2/README.md | 1 + proto/gen/api/v2/markdown_service.pb.go | 16 +++++++++++++--- 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/api/v2/markdown_service.go b/api/v2/markdown_service.go index 12c0229d..88336608 100644 --- a/api/v2/markdown_service.go +++ b/api/v2/markdown_service.go @@ -79,7 +79,7 @@ func convertFromASTNode(rawNode ast.Node) *apiv2pb.Node { case *ast.Link: node.Node = &apiv2pb.Node_LinkNode{LinkNode: &apiv2pb.LinkNode{Text: n.Text, Url: n.URL}} case *ast.AutoLink: - node.Node = &apiv2pb.Node_AutoLinkNode{AutoLinkNode: &apiv2pb.AutoLinkNode{Url: n.URL}} + node.Node = &apiv2pb.Node_AutoLinkNode{AutoLinkNode: &apiv2pb.AutoLinkNode{Url: n.URL, IsRawText: n.IsRawText}} case *ast.Tag: node.Node = &apiv2pb.Node_TagNode{TagNode: &apiv2pb.TagNode{Content: n.Content}} case *ast.Strikethrough: @@ -148,7 +148,7 @@ func convertToASTNode(node *apiv2pb.Node) ast.Node { case *apiv2pb.Node_LinkNode: return &ast.Link{Text: n.LinkNode.Text, URL: n.LinkNode.Url} case *apiv2pb.Node_AutoLinkNode: - return &ast.AutoLink{URL: n.AutoLinkNode.Url} + return &ast.AutoLink{URL: n.AutoLinkNode.Url, IsRawText: n.AutoLinkNode.IsRawText} case *apiv2pb.Node_TagNode: return &ast.Tag{Content: n.TagNode.Content} case *apiv2pb.Node_StrikethroughNode: diff --git a/plugin/gomark/parser/auto_link.go b/plugin/gomark/parser/auto_link.go index 48ba22ff..700110bd 100644 --- a/plugin/gomark/parser/auto_link.go +++ b/plugin/gomark/parser/auto_link.go @@ -58,9 +58,9 @@ func (p *AutoLinkParser) Parse(tokens []*tokenizer.Token) (ast.Node, error) { url := tokenizer.Stringify(tokens[:size]) isRawText := true - if tokens[0].Type == tokenizer.LessThan && tokens[len(tokens)-1].Type == tokenizer.GreaterThan { + if tokens[0].Type == tokenizer.LessThan && tokens[size-1].Type == tokenizer.GreaterThan { isRawText = false - url = tokenizer.Stringify(tokens[1 : len(tokens)-1]) + url = tokenizer.Stringify(tokens[1 : size-1]) } return &ast.AutoLink{ URL: url, diff --git a/proto/api/v2/markdown_service.proto b/proto/api/v2/markdown_service.proto index 5f4d1215..d00062c4 100644 --- a/proto/api/v2/markdown_service.proto +++ b/proto/api/v2/markdown_service.proto @@ -156,6 +156,7 @@ message LinkNode { message AutoLinkNode { string url = 1; + bool is_raw_text = 2; } message TagNode { diff --git a/proto/gen/api/v2/README.md b/proto/gen/api/v2/README.md index 79843418..cab6e6c6 100644 --- a/proto/gen/api/v2/README.md +++ b/proto/gen/api/v2/README.md @@ -968,6 +968,7 @@ | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | url | [string](#string) | | | +| is_raw_text | [bool](#bool) | | | diff --git a/proto/gen/api/v2/markdown_service.pb.go b/proto/gen/api/v2/markdown_service.pb.go index abd2cf0b..2b737229 100644 --- a/proto/gen/api/v2/markdown_service.pb.go +++ b/proto/gen/api/v2/markdown_service.pb.go @@ -1476,7 +1476,8 @@ type AutoLinkNode struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + IsRawText bool `protobuf:"varint,2,opt,name=is_raw_text,json=isRawText,proto3" json:"is_raw_text,omitempty"` } func (x *AutoLinkNode) Reset() { @@ -1518,6 +1519,13 @@ func (x *AutoLinkNode) GetUrl() string { return "" } +func (x *AutoLinkNode) GetIsRawText() bool { + if x != nil { + return x.IsRawText + } + return false +} + type TagNode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1887,9 +1895,11 @@ var file_api_v2_markdown_service_proto_rawDesc = []byte{ 0x08, 0x4c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, - 0x20, 0x0a, 0x0c, 0x41, 0x75, 0x74, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x12, + 0x40, 0x0a, 0x0c, 0x41, 0x75, 0x74, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, - 0x6c, 0x22, 0x23, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x6c, 0x12, 0x1e, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x72, 0x61, 0x77, 0x5f, 0x74, 0x65, 0x78, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x52, 0x61, 0x77, 0x54, 0x65, 0x78, + 0x74, 0x22, 0x23, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x2d, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x69, 0x6b, 0x65, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63,