Пример #1
0
 internal Element(GumboElementNode node, Node parent, GumboFactory factory)
     : base(node, parent)
 {
     _children         = factory.CreateLazy(() => ImmutableArray.CreateRange(node.GetChildren().OrderBy(x => x.index_within_parent).Select(x => factory.CreateNode(x, this))));
     _attributes       = factory.CreateLazy(() => ImmutableArray.CreateRange(node.GetAttributes().Select(x => factory.CreateAttribute(x, this))));
     _value            = factory.CreateLazy(() => string.Concat(Children.Select(x => x is Element ? ((Element)x).Value : ((Text)x).Value)));
     StartPosition     = node.element.start_pos;
     EndPosition       = node.element.end_pos;
     Tag               = node.element.tag;
     TagNamespace      = node.element.tag_namespace;
     OriginalTag       = NativeUtf8.StringFromNativeUtf8(node.element.original_tag.data, (int)node.element.original_tag.length);
     OriginalTagName   = GetTagNameFromOriginalTag(node.element);
     OriginalEndTag    = NativeUtf8.StringFromNativeUtf8(node.element.original_end_tag.data, (int)node.element.original_end_tag.length);
     NormalizedTagName = NativeUtf8.StringFromNativeUtf8(NativeMethods.gumbo_normalized_tagname(node.element.tag));
 }
Пример #2
0
 public static IEnumerable <GumboAttribute> GetAttributes(this GumboElementNode node) => MarshalToPtrArray(node.element.attributes).Select(Marshal.PtrToStructure <GumboAttribute>);
Пример #3
0
 public static IEnumerable <GumboNode> GetChildren(this GumboElementNode node) => MarshalToPtrArray(node.element.children).Select(MarshalToSpecificNode);