private static MarkupContent ReadSyncPNode(StringReader reader, Dictionary<string, Dictionary<string, string>> styles, MarkupContent markupContent, TimeSpan position, Dictionary<string, List<SmiMarker>> markersByLanguage) { MarkupContent malformedContent = null; MarkupType markupType; var cssList = new List<string>(); cssList.Add("p"); var cssClass = markupContent.Parameters.TryGetValue("class"); if (!string.IsNullOrEmpty(cssClass)) { cssList.AddRange(from css in cssClass.Split(' ') select String.Concat("." + css)); } SmiMarker marker = new SmiMarker(); marker.Position = position; StringBuilder markerContent = new StringBuilder(); foreach (var styleRules in cssList) { AssignPropertiesFromStyle(marker, styles.TryGetValue(styleRules)); } GetMarkerList(markersByLanguage, marker.Language ?? string.Empty).Add(marker); while (reader.Peek() != -1) { var newContent = reader.ReadToMarkup().Trim(); if (!string.IsNullOrEmpty(newContent)) { if (markerContent.Length > 0 && markerContent[markerContent.Length - 1] != '\n') { markerContent.Append(' '); } markerContent.Append(newContent); } if (reader.PeekIsMarkup()) { markupType = reader.ReadMarkup(out markupContent, strComp); if ((markupType == MarkupType.Node || markupType == MarkupType.StartNode) && strComp.Compare(markupContent.Name, "br") == 0) { markerContent.Append('\n'); } if ((markupType == MarkupType.ClosingNode && strComp.Compare(markupContent.Name, PMarkup) == 0)) { break; } if((markupType == MarkupType.StartNode && strComp.Compare(markupContent.Name, SyncMarkup) == 0)) { // Malformed Sami file. malformedContent = markupContent; break; } } } if (markerContent.ToString() != " ") marker.Content = HttpUtility.HtmlDecode(markerContent.ToString()).Trim(); else { marker.Content = null; } return malformedContent; }
private static void AssignPropertiesFromStyle(SmiMarker marker, Dictionary<string, string> styleValues) { if (styleValues != null) { string val; if (styleValues.TryGetValue("name", out val)) marker.Name = val; if (styleValues.TryGetValue("lang", out val)) marker.Language = val; } }