static int es_gumbo_find_by_tag_name(duk_context *ctx) { es_gumbo_node_t *egn = es_get_native_obj(ctx, 0, &es_native_gumbo_node); const char *tagstr = duk_to_string(ctx, 1); GumboTag tag = gumbo_tag_enum(tagstr); if(tag == GUMBO_TAG_UNKNOWN) duk_error(ctx, DUK_ERR_ERROR, "Unknown tag %s", tagstr); int idx = 0; duk_push_array(ctx); es_gumbo_find_by_tag_name_r(egn->node, tag, ctx, &idx, egn->output); return 1; }
list_t * gumbo_get_elements_by_tag_name(const char *tag_name, GumboNode *root) { GumboTag tag; list_t *elements = NULL; if (!tag_name || GUMBO_TAG_UNKNOWN == (tag = gumbo_tag_enum(tag_name))) return NULL; if (!(elements = list_new())) return NULL; crawl(tag, elements, root); return elements; }