cJSON *expression_render(struct simpleNode *n,struct context *context){ //set_already_rendered(n); struct simpleNode *child = n->firstChild; cJSON *r = node_render(child, context); return r; }
void htmlview_update (LifereaHtmlView *htmlview, itemViewMode mode) { GSList *iter; GString *output; itemPtr item = NULL; gchar *baseURL = NULL; gboolean summaryMode; /* determine base URL */ switch (mode) { case ITEMVIEW_SINGLE_ITEM: item = itemlist_get_selected (); if(item) { baseURL = (gchar *)node_get_base_url (node_from_id (item->nodeId)); item_unload (item); } break; default: if (htmlView_priv.node) baseURL = (gchar *) node_get_base_url (htmlView_priv.node); break; } if (baseURL) baseURL = g_markup_escape_text (baseURL, -1); output = g_string_new (NULL); htmlview_start_output (output, baseURL, TRUE, TRUE); /* HTML view updating means checking which items need to be updated, render them and then concatenate everything from cache and output it */ switch (mode) { case ITEMVIEW_SINGLE_ITEM: item = itemlist_get_selected (); if (item) { gchar *html = htmlview_render_item (item, mode, FALSE); if (html) { g_string_append (output, html); g_free (html); } item_unload (item); } break; case ITEMVIEW_ALL_ITEMS: /* Output optimization for feeds without item content. This is not done for folders, because we only support all items in summary mode or all in detailed mode. With folder item sets displaying everything in summary because of only a single feed without item descriptions would make no sense. */ summaryMode = (NULL != htmlView_priv.node) && !IS_FOLDER (htmlView_priv.node) && !IS_VFOLDER (htmlView_priv.node) && (htmlView_priv.missingContent > 3); /* concatenate all items */ iter = htmlView_priv.orderedChunks; while (iter) { /* try to retrieve item HTML chunk from cache */ htmlChunkPtr chunk = (htmlChunkPtr)iter->data; /* if not found: render new item now and add to cache */ if (!chunk->html) { item = item_load (chunk->id); if (item) { debug1 (DEBUG_HTML, "rendering item to HTML view: >>>%s<<<", item_get_title (item)); chunk->html = htmlview_render_item (item, mode, summaryMode); item_unload (item); } } if (chunk->html) g_string_append (output, chunk->html); iter = g_slist_next (iter); } break; case ITEMVIEW_NODE_INFO: { gchar *html; if (htmlView_priv.node) { html = node_render (htmlView_priv.node); if (html) { g_string_append (output, html); g_free (html); } } } break; default: g_warning ("HTML view: invalid viewing mode!!!"); break; } htmlview_finish_output (output); debug1 (DEBUG_HTML, "writing %d bytes to HTML view", strlen (output->str)); liferea_htmlview_write (htmlview, output->str, baseURL); g_string_free (output, TRUE); g_free (baseURL); }