Skip to content
This repository was archived by the owner on Jul 3, 2020. It is now read-only.

Commit 7a4fd86

Browse files
support tag ref
1 parent 3278f56 commit 7a4fd86

13 files changed

Lines changed: 145 additions & 13 deletions

File tree

EhDbReleaseBuilder/Properties/launchSettings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"profiles": {
33
"EhDbReleaseBuilder": {
44
"commandName": "Project",
5-
"commandLineArgs": "--source C:/Users/lzy/Documents/Source/EhTagTranslation/EhTagConnector/EHTT-DB/ --target C:/Users/lzy/Documents/Source/EhTagTranslation/EhTagConnector/EHTT-DB/publish --check-tags Parody,Character,Group,Artist"
5+
"commandLineArgs": "--source C:\\Users\\lzy\\Documents\\Source\\EhTagTranslation\\Database --target C:\\Users\\lzy\\Documents\\Source\\EhTagTranslation\\Database\\publish "
66
}
77
}
88
}

EhTagApi/Controllers/ToolsController.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public IActionResult Status()
2525
[HttpPost("normalize")]
2626
public IActionResult Normalize([FromBody] Record record)
2727
{
28+
record.Render("");
2829
return Ok(record);
2930
}
3031

@@ -53,6 +54,7 @@ public IActionResult Parse([FromBody][Required] string tableRow)
5354
error.AddModelError(nameof(tableRow), "Failed to parse it as a markdown table row.");
5455
return BadRequest(error);
5556
}
57+
r.Value.Render(r.Key);
5658
return Ok(r);
5759
}
5860
}

EhTagApi/Controllers/WebhookController.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ public IActionResult Post(
4949
log = $"Pulled form github in {(DateTimeOffset.Now - start).TotalMilliseconds}ms.";
5050
logger.LogInformation(log);
5151
database.Load();
52+
database.Render();
5253
}
5354
else
5455
{

EhTagClient/Context.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
namespace EhTagClient
6+
{
7+
static class Context
8+
{
9+
public static Database Database { get; set; }
10+
public static Namespace Namespace { get; set; }
11+
public static string Raw { get; set; }
12+
public static Record Record { get; set; }
13+
}
14+
}

EhTagClient/DataBase.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,18 @@ public void Load()
3737
}
3838
}
3939

40+
public void Render()
41+
{
42+
Context.Database = this;
43+
foreach (var item in Values)
44+
{
45+
item.Render();
46+
}
47+
}
48+
4049
public void Save()
4150
{
51+
Context.Database = this;
4252
foreach (var item in Values)
4353
{
4454
item.Save();

EhTagClient/MarkdigExt/Extension.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,26 @@ public static (string url, string title, string isNsfw) GetData(this LinkInline
3838

3939
return (url, title, null);
4040
}
41+
public static Record GetTag(string tag, Namespace ns)
42+
{
43+
var table = Context.Database[ns];
44+
return table.Data[tag];
45+
}
46+
47+
public static Record GetTag(string tag)
48+
{
49+
var record = GetTag(tag, Context.Namespace);
50+
if (record != null) return record;
51+
foreach (var item in Context.Database.Keys)
52+
{
53+
if (item != Context.Namespace)
54+
{
55+
record = GetTag(tag, item);
56+
if (record != null) return record;
57+
}
58+
}
59+
Console.WriteLine($"Invalid tag ref {tag}");
60+
return null;
61+
}
4162
}
4263
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
using Markdig.Renderers;
2+
using Markdig.Renderers.Html;
3+
using Markdig.Syntax.Inlines;
4+
using System;
5+
6+
namespace EhTagClient.MarkdigExt.Html
7+
{
8+
class CodeInlineRenderer : HtmlObjectRenderer<CodeInline>
9+
{
10+
protected override void Write(HtmlRenderer renderer, CodeInline obj)
11+
{
12+
var content = obj.Content;
13+
var tag = Extension.GetTag(content);
14+
if (renderer.EnableHtmlForInline)
15+
renderer.Write("<ruby>");
16+
if (tag != null)
17+
{
18+
renderer.WriteEscape(tag.Name.Text);
19+
if (renderer.EnableHtmlForInline)
20+
{
21+
renderer.Write("<rp>(</rp><rt>");
22+
renderer.WriteEscape(content);
23+
renderer.Write("</rt><rp>)</rp>");
24+
}
25+
else
26+
{
27+
renderer.Write('(');
28+
renderer.WriteEscape(content);
29+
renderer.Write(')');
30+
}
31+
}
32+
else
33+
{
34+
renderer.WriteEscape(content);
35+
}
36+
if (renderer.EnableHtmlForInline)
37+
renderer.Write("</ruby>");
38+
}
39+
}
40+
}

EhTagClient/MarkdigExt/Html/EhLinkInlineRenderer.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
using Markdig.Renderers;
22
using Markdig.Renderers.Html;
33
using Markdig.Syntax.Inlines;
4-
using System;
54
using System.Collections.Generic;
65
using System.Text;
76

87
namespace EhTagClient.MarkdigExt.Html
98
{
10-
119
class EhLinkInlineRenderer : HtmlObjectRenderer<LinkInline>
1210
{
1311
protected override void Write(HtmlRenderer renderer, LinkInline link)

EhTagClient/MarkdigExt/Json/JsonRenderer.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,22 @@ protected override void WriteData(JsonRenderer renderer, AutolinkInline obj)
147147

148148
sealed class CodeInlineRenderer : JsonObjectRenderer<CodeInline>
149149
{
150-
protected override string GetType(JsonRenderer renderer, CodeInline obj) => "code";
150+
protected override string GetType(JsonRenderer renderer, CodeInline obj) => "tagref";
151151

152-
protected override void WriteContent(JsonRenderer renderer, CodeInline obj) => renderer.WriteProperty("text", obj.Content);
152+
protected override void WriteContent(JsonRenderer renderer, CodeInline obj)
153+
{
154+
var content = obj.Content;
155+
var tag = Extension.GetTag(content);
156+
if (tag != null)
157+
{
158+
renderer.WriteProperty("tag", content);
159+
renderer.WriteProperty("text", tag.Name.Text);
160+
}
161+
else
162+
{
163+
renderer.WriteProperty("text", content);
164+
}
165+
}
153166
}
154167

155168
sealed class DelimiterInlineRenderer : JsonTextRender<DelimiterInline>

EhTagClient/MarkdigExt/Renderer.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ private static HtmlRenderer _CreateHtmlRenderer(TextWriter writer, bool enableHt
6262
htmlRenderer.EnableHtmlForBlock = false;
6363
htmlRenderer.EnableHtmlForInline = false;
6464
}
65+
htmlRenderer.ObjectRenderers.Replace<Hr.Inlines.CodeInlineRenderer>(new Html.CodeInlineRenderer());
6566
htmlRenderer.ObjectRenderers.Replace<Hr.Inlines.LinkInlineRenderer>(new Html.EhLinkInlineRenderer());
6667
htmlRenderer.ObjectRenderers.Replace<Hr.Inlines.HtmlEntityInlineRenderer>(new Html.HtmlEntityInlineRenderer());
6768
htmlRenderer.ObjectRenderers.Replace<Hr.Inlines.LiteralInlineRenderer>(new Html.LiteralInlineRenderer());

0 commit comments

Comments
 (0)