代码拉取完成,页面将自动刷新
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DocTools
{
public class JS
{
private static Jint.Engine jt = null;
static JS()
{
//jt = new Jint.Engine(cfg =>
//{
// //cfg.LimitRecursion();
// cfg.Strict();
//});
jt = new Jint.Engine();
jt.SetValue("log", new Action<object>(Console.WriteLine));
var text = string.Empty;
var names = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames();
foreach (var name in names)
{
if (Path.GetExtension(name) == ".js")
{
text = System.Reflection.Assembly.GetExecutingAssembly().GetResourceContent(name);
try
{
jt.Execute(text);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
}
/// summary>
/// https://zeroturnaround.github.io/sql-formatter/
/// 格式化SQL语句
/// </summary>
/// <param name="sql">SQL语句</param>
/// <param name="dbtype">数据库类型</param>
/// <returns>格式化后的SQL语句</returns>
public static string RunFmtSql(string sql, string dbtype)
{
var supportLang = new List<string>()
{
"sql",
"redshift",
"db2",
"mariadb",
"mysql",
"n1ql",
"plsql",
"postgresql",
"spark",
"tsql"
};
var lang = dbtype.ToLower();
if (!supportLang.Contains(lang))
{
if (lang.StartsWith("oracle"))
{
lang = "plsql";
}
else if (lang == "sqlserver")
{
lang = "tsql";
}
else
{
lang = "sql";
}
}
sql = sql.Replace("`", "");
var code = $@"var fmtSql = sqlFormatter.format(`{ sql }`, {{language: ""{ lang }"",uppercase: true }});";
var res = sql;
try
{
jt.Execute(code);
res = jt.GetValue("fmtSql").ToString();
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
return res;
}
/// <summary>
/// https://highlightjs.org/static/demo/
/// 9.9版本
/// 返回带有css样式的高亮SQL代码
/// </summary>
/// <param name="sql">格式化后的SQL代码</param>
/// <param name="dbtype">数据库类型</param>
/// <returns></returns>
public static string RunHighlightHtml(string sql, string dbtype)
{
dbtype = dbtype.ToLower();
var lang = "sql";
//if (dbtype.StartsWith("oracle"))
//{
// lang = "ruleslanguage";
//}
//else if (dbtype == "postgresql")
//{
// lang = "pgsql";
//}
sql = sql.Replace("`", "");
var code = $@"var hlhtml = hljs.highlight(""{ lang }"",`{ sql }`,true).value;";
var res = sql;
try
{
jt.Execute(code);
res = jt.GetValue("hlhtml").ToString();
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
return res;
}
public static string RunStyleSql(string sql, string dbtype)
{
var fmtSql = RunFmtSql(sql, dbtype);
var reSql = RunHighlightHtml(fmtSql, dbtype);
return reSql;
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。