|
|
|
@ -26,37 +26,65 @@ public class ContentParser : IContentParser, ITransientDependency |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
MatchCollection mc = Regex.Matches(content, @"(?<=\[Wid)(.*?)(?=\])");//(?<=X)(.*?)(?=Y)
|
|
|
|
string delimeter = "----"; |
|
|
|
var replacedText = Regex.Replace(content, @"\[.*?\]", delimeter); |
|
|
|
|
|
|
|
MatchCollection mcPollName = Regex.Matches(content, @"(?<=PollName="")(.*?)(?="")"); |
|
|
|
var pollNames = mcPollName.Select(p => p.Value).ToList(); |
|
|
|
var parsedList = new List<string>(); |
|
|
|
|
|
|
|
string split = "-----"; |
|
|
|
if (!replacedText.Contains(delimeter)) |
|
|
|
{ |
|
|
|
parsedList.Add(replacedText); |
|
|
|
} |
|
|
|
|
|
|
|
var polls = new List<string>(); |
|
|
|
foreach (Match m in mc) |
|
|
|
while (replacedText.Contains(delimeter)) |
|
|
|
{ |
|
|
|
polls.Add("[Wid" + m + "]"); |
|
|
|
content = content.Replace("[Wid" + m + "]", split); |
|
|
|
//For parsing delimeter
|
|
|
|
var index = replacedText.IndexOf(delimeter); |
|
|
|
if (index != 0) |
|
|
|
{ |
|
|
|
parsedList.Add(replacedText.Substring(0, index)); |
|
|
|
replacedText = replacedText.Substring(index, replacedText.Length - index); |
|
|
|
index = 0; |
|
|
|
} |
|
|
|
|
|
|
|
parsedList.Add(replacedText.Substring(index, delimeter.Length)); |
|
|
|
replacedText = replacedText.Substring(delimeter.Length, replacedText.Length - delimeter.Length); |
|
|
|
|
|
|
|
//for parsing the other side
|
|
|
|
index = replacedText.IndexOf(delimeter); |
|
|
|
if (index != -1) |
|
|
|
{ |
|
|
|
parsedList.Add(replacedText.Substring(0, index)); |
|
|
|
replacedText = replacedText.Substring(index, replacedText.Length - index); |
|
|
|
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
parsedList.Add(replacedText); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
var splittedContent = content.Split(split, StringSplitOptions.RemoveEmptyEntries); |
|
|
|
var name = _options.WidgetConfigs.FirstOrDefault(p => p.Key == "Poll").Value?.Name; |
|
|
|
|
|
|
|
var pollNames = Regex.Matches(content, @"(?<=PollName="")(.*?)(?="")").Select(p => p.Value).ToList(); |
|
|
|
|
|
|
|
var contentFragments = new List<ContentFragment>(); |
|
|
|
var name = _options.WidgetConfigs.FirstOrDefault(p => p.Key == "Poll").Value?.Name; |
|
|
|
for (int i = 0; i < splittedContent.Length; i++) |
|
|
|
for (int i = 0, k = 0; i < parsedList.Count; i++) |
|
|
|
{ |
|
|
|
contentFragments.Add(new MarkdownContentFragment() { Content = splittedContent[i] }); |
|
|
|
if (i != splittedContent.Length - 1) |
|
|
|
if (parsedList[i] == delimeter) |
|
|
|
{ |
|
|
|
contentFragments.Add(new WidgetContentFragment(name) |
|
|
|
{ |
|
|
|
Properties = |
|
|
|
{ |
|
|
|
{ "name", pollNames[i] } |
|
|
|
{ "name", pollNames[k++] } |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
contentFragments.Add(new MarkdownContentFragment() { Content = parsedList[i] }); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return contentFragments; |
|
|
|
|