diff --git a/System/Libraries/Html/Renderer.HC b/System/Libraries/Html/Renderer.HC index cbdd834..4feb5a6 100644 --- a/System/Libraries/Html/Renderer.HC +++ b/System/Libraries/Html/Renderer.HC @@ -710,6 +710,16 @@ Bool @code_point_is_whitespace(I32 code_point) } } +@html_dom_node* @self_or_ancestor_matches_tag_name(@html_dom_node* node, U8* tagName) +{ + while (node) { + if (!StrICmp(node->tagName, tagName)) + return node; + node = node->parentNode; + } + return NULL; +} + U8* @resolved_font_weight_for_node(@html_dom_node* node) { U8 buf[128]; @@ -785,7 +795,6 @@ U0 @render_node_text(@html_dom_node* node, HtmlRenderer* renderer) U32 fragment_bounding_box_color = Color(0x00, 0xff, 0x00); U8* font_name = @resolved_font_weight_for_node(node->parentNode); - "font_name: %s\n", font_name; for (i = 0; i < fragment_count; i++) { if (fragments[i] && *fragments[i]) { @@ -939,6 +948,24 @@ U0 @render_node_list(@html_dom_node* node, HtmlRenderer* renderer) @renderer_append_image(renderer, img_widget); } + if (!StrICmp(node->tagName, "li")) { + @html_dom_node* prepend_text_node = NULL; + if (@self_or_ancestor_matches_tag_name(node, "ol")) { + I64 ordered_list_index = @self_or_ancestor_matches_tag_name(node, "ol")->attributes->@("orderedListIndex") + 1; + @self_or_ancestor_matches_tag_name(node, "ol")->attributes->set("orderedListIndex", ordered_list_index, JSON_NUMBER); + prepend_text_node = @create_new_node("InternalTextNode", renderer->task); + prepend_text_node->parentNode = node; + prepend_text_node->text = CAlloc(16, renderer->task); + StrPrint(prepend_text_node->text, "%d.", ordered_list_index); + node->children->prepend(prepend_text_node); + } else if (@self_or_ancestor_matches_tag_name(node, "ul")) { + prepend_text_node = @create_new_node("InternalTextNode", renderer->task); + prepend_text_node->parentNode = node; + prepend_text_node->text = StrNew("\xe2\x80\xa2", renderer->task); + node->children->prepend(prepend_text_node); + } + } + if (node->children->length) { for (i = 0; i < node->children->length; i++) @render_node_list(node->children->@(i), renderer); @@ -954,16 +981,6 @@ U0 @render_node_list(@html_dom_node* node, HtmlRenderer* renderer) --renderer->indent; } -@html_dom_node* @self_or_ancestor_matches_tag_name(@html_dom_node* node, U8* tagName) -{ - while (node) { - if (!StrICmp(node->tagName, tagName)) - return node; - node = node->parentNode; - } - return NULL; -} - U0 @reflow_node_list(HtmlRenderer* renderer) { if (!renderer)