private Marker ParseMarker(JsonReader jsonReader) { Marker result = null; jsonReader.Match(JsonToken.StartArray); var textTypeIdentifier = (int)(long)jsonReader.Match(JsonToken.Integer); var openMarkupIndices = ParseOpenMarkupIndices(jsonReader); var closedMarkups = (int)(long)jsonReader.Match(JsonToken.Integer); if (textTypeIdentifier == 0) { var text = (string)jsonReader.Match(JsonToken.String); result = new MarkupMarker(openMarkupIndices, closedMarkups, text); } else { var atomIndex = (int)(long)jsonReader.Match(JsonToken.Integer); result = new AtomMarker(openMarkupIndices, closedMarkups, atomIndex); } jsonReader.Match(JsonToken.EndArray); return(result); }
private void RenderAtom(AtomMarker atomMarker) { var atomType = _atomTypes.ElementAt(atomMarker.AtomIndex); var atomRenderer = _atomRenderers.FirstOrDefault(x => x.CanRender(atomType)); if (atomRenderer != null) { atomRenderer.Render(_currentNode, atomType); } else { _currentNode.AppendChild(_document.CreateTextNode("")); } }