mirror of https://github.com/2dust/v2rayN
parent
7901a59aa4
commit
7ceaf5c071
|
@ -1,4 +1,5 @@
|
||||||
using YamlDotNet.Serialization;
|
using YamlDotNet.Core;
|
||||||
|
using YamlDotNet.Serialization;
|
||||||
using YamlDotNet.Serialization.NamingConventions;
|
using YamlDotNet.Serialization.NamingConventions;
|
||||||
|
|
||||||
namespace ServiceLib.Common
|
namespace ServiceLib.Common
|
||||||
|
@ -35,13 +36,17 @@ namespace ServiceLib.Common
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="obj"></param>
|
/// <param name="obj"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static string ToYaml(Object obj)
|
public static string ToYaml(Object? obj)
|
||||||
{
|
{
|
||||||
|
string result = string.Empty;
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
var serializer = new SerializerBuilder()
|
var serializer = new SerializerBuilder()
|
||||||
.WithNamingConvention(HyphenatedNamingConvention.Instance)
|
.WithNamingConvention(HyphenatedNamingConvention.Instance)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
string result = string.Empty;
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
result = serializer.Serialize(obj);
|
result = serializer.Serialize(obj);
|
||||||
|
@ -53,6 +58,24 @@ namespace ServiceLib.Common
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string? PreprocessYaml(string str)
|
||||||
|
{
|
||||||
|
var deserializer = new DeserializerBuilder()
|
||||||
|
.WithNamingConvention(PascalCaseNamingConvention.Instance)
|
||||||
|
.Build();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var mergingParser = new MergingParser(new Parser(new StringReader(str)));
|
||||||
|
var obj = new DeserializerBuilder().Build().Deserialize(mergingParser);
|
||||||
|
return ToYaml(obj);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logging.SaveLog("PreprocessYaml", ex);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion YAML
|
#endregion YAML
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -64,6 +64,12 @@
|
||||||
var txtFile = File.ReadAllText(addressFileName);
|
var txtFile = File.ReadAllText(addressFileName);
|
||||||
txtFile = txtFile.Replace(tagYamlStr1, tagYamlStr2);
|
txtFile = txtFile.Replace(tagYamlStr1, tagYamlStr2);
|
||||||
|
|
||||||
|
//YAML anchors
|
||||||
|
if (txtFile.Contains("<<:") && txtFile.Contains("*") && txtFile.Contains("&"))
|
||||||
|
{
|
||||||
|
txtFile = YamlUtils.PreprocessYaml(txtFile);
|
||||||
|
}
|
||||||
|
|
||||||
var fileContent = YamlUtils.FromYaml<Dictionary<string, object>>(txtFile);
|
var fileContent = YamlUtils.FromYaml<Dictionary<string, object>>(txtFile);
|
||||||
if (fileContent == null)
|
if (fileContent == null)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue