Пример #1
0
static void
render_rss_item(struct dom_renderer *renderer, struct dom_node *item)
{
	struct rss_renderer *rss = renderer->data;
	struct dom_string *title  = get_rss_text(item, RSS_ELEMENT_TITLE);
	struct dom_string *link   = get_rss_text(item, RSS_ELEMENT_LINK);
	struct dom_string *author = get_rss_text(item, RSS_ELEMENT_AUTHOR);
	struct dom_string *date   = get_rss_text(item, RSS_ELEMENT_PUBDATE);

	if (item->data.element.type == RSS_ELEMENT_ITEM) {
		Y(renderer)++;
		X(renderer) = 0;
	}

	if (title && is_dom_string_set(title)) {
		if (item->data.element.type == RSS_ELEMENT_CHANNEL) {
			unsigned char *str;

			str = convert_string(renderer->convert_table,
					     title->string, title->length,
					     renderer->document->options.cp,
					     CSM_DEFAULT, NULL, NULL, NULL);
			if (str)
				renderer->document->title = str;
		}
		render_dom_text(renderer, &rss->styles[RSS_STYLE_TITLE],
				title->string, title->length);
	}

	if (link && is_dom_string_set(link)) {
		X(renderer)++;
		add_dom_link(renderer, "[link]", 6, link->string, link->length);
	}

	/* New line, and indent */
	Y(renderer)++;
	X(renderer) = 0;

	if (author && is_dom_string_set(author)) {
		render_dom_text(renderer, &rss->styles[RSS_STYLE_AUTHOR],
				author->string, author->length);
	}

	if (date && is_dom_string_set(date)) {
		if (author && is_dom_string_set(author)) {
			render_dom_text(renderer, &rss->styles[RSS_STYLE_AUTHOR_DATE_SEP],
					" - ", 3);
		}

		render_dom_text(renderer, &rss->styles[RSS_STYLE_DATE],
				date->string, date->length);
	}

	if ((author && is_dom_string_set(author))
	    || (date && is_dom_string_set(date))) {
		/* New line, and indent */
		Y(renderer)++;
		X(renderer) = 0;
	}
}
Пример #2
0
enum dom_code  render_dom_element_end_source( struct dom_stack *stack, struct dom_node *node, void *data )
{
  int eax;
  int ecx;
  int edx;
  struct dom_renderer *renderer = &stack->current[0].data[0];
  unsigned char *string;
  if ( assert_failed == 0 )
    assert_failed = 0;
  if ( stack->contexts[0]->info->object_size )
  {
    if ( assert_failed == 0 )
    {
      assert_failed = *(int*)(esi + 4) == 0;
      if ( !(_Bool)( *(int*)(esi + 4) != 0 ) )
      {
        errfile = "/home/naftali/source/elinks-0.12~pre5/src/dom/stack.h";
        errline = 198;
        elinks_internal( "assertion context->state_objects failed!" );
        *ebp_32 = stack->depth;
      }
    }
  }
  string[0] = *(int*)(eax + 20);
  if ( assert_failed == 0 )
  {
    if ( node && renderer[0] && renderer->document )
      assert_failed = 0;
    else
    {
      assert_failed = 1;
      errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c";
      errline = 578;
      elinks_internal( "assertion node && renderer && renderer->document failed!" );
      string[0] = string[0];
    }
  }
  if ( esi && string[0] )
  {
    if ( renderer->source <= string[0] && string[ esi ] <= renderer->end )
    {
      render_dom_flush( &renderer[0], &string[0] );
      renderer->position = &edi;
      if ( assert_failed == 0 )
      {
        if ( renderer->position < renderer->source || renderer->end < renderer->position )
        {
          assert_failed = 1;
          errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c";
          errline = 586;
          elinks_internal( "assertion check_dom_node_source(renderer, renderer-&gt;position, 0) failed: renderer[%p : %p] str[%p : %p]" );
        }
        else
          assert_failed = 0;
      }
    }
    render_dom_text( &renderer[0], &renderer->styles[ node[0].type ] );
  }
  return DOM_CODE_OK;
}
Пример #3
0
void render_dom_flush( struct dom_renderer *renderer, unsigned char *string )
{
  int ecx;
  if ( assert_failed == 0 )
  {
    if ( renderer->position < renderer->source || renderer->end < renderer->position )
    {
      assert_failed = 1;
      errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c";
      errline = 457;
      elinks_internal( renderer->source );
      if ( assert_failed == 0 )
      {
        if ( string[0] < renderer->source )
        {
          assert_failed = 1;
          errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c";
          errline = 458;
          elinks_internal( renderer->source );
        }
      }
    }
    else
    {
      assert_failed = 0;
      if ( string[0] < renderer->source )
        continue;
    }
    if ( renderer->end < string[0] )
      continue;
    else
      assert_failed = 0;
  }
  if ( string - renderer->position >= 1 )
  {
    render_dom_text( &renderer[0], &renderer->styles[3], renderer->position, string - renderer->position );
    renderer->position = &string[0];
    if ( assert_failed == 0 )
    {
      if ( string[0] < renderer->source || renderer->end < string[0] )
      {
        assert_failed = 1;
        errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c";
        errline = 464;
        elinks_internal( renderer->source );
        string[0] = string[0];
      }
      else
      {
        assert_failed = 0;
      }
    }
  }
  return;
}
Пример #4
0
enum dom_code  render_dom_node_source( struct dom_stack *stack, struct dom_node *node, void *data )
{
  int eax;
  int ecx;
  int edx;
  struct dom_renderer *renderer = &stack->current[0].data[0];
  if ( assert_failed == 0 )
  {
    if ( node[0] && renderer[0] && renderer->document )
      assert_failed = 0;
    else
    {
      assert_failed = 1;
      errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c";
      errline = 540;
      elinks_internal( "assertion node && renderer && renderer-&gt;document failed!" );
    }
  }
  if ( node->type == 5 )
  {
  }
  if ( renderer->source <= node->string.string && node->string.string + node <= renderer->end )
  {
    *(int*)(esi - renderer->position) = node->string.string - renderer->position;
    if ( assert_failed == 0 )
    {
      if ( renderer->source <= renderer->position && renderer->position <= renderer->end )
        assert_failed = 0;
      else
      {
        assert_failed = 1;
        errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c";
        errline = 457;
        elinks_internal( "assertion check_dom_node_source(renderer, renderer-&gt;position, 0) failed: renderer[%p : %p] str[%p : %p]" );
        *ebp_40 = node->string.string - renderer->position;
        if ( assert_failed == 0 )
          goto B28;
      }
B28:      if ( node->string.string < renderer->source || renderer->end < node->string.string )
      {
        assert_failed = 1;
        errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c";
        errline = 458;
        elinks_internal( "assertion check_dom_node_source(renderer, string, 0) failed: renderer[%p : %p] str[%p : %p]" );
        *ebp_40 = ebp_40;
      }
      else
        assert_failed = 0;
    }
    if ( ebp_40 >= 1 )
    {
      render_dom_text( &renderer[0], &renderer->styles[3], renderer->position );
      renderer->position = node->string.string;
      if ( assert_failed == 0 )
      {
        if ( renderer->position < renderer->source || renderer->end < renderer->position )
        {
          assert_failed = 1;
          errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c";
          errline = 464;
          elinks_internal( "assertion check_dom_node_source(renderer, renderer-&gt;position, 0) failed: renderer[%p : %p] str[%p : %p]" );
        }
        else
          assert_failed = 0;
      }
    }
    renderer->position = node->string.string + node->string.length;
    if ( assert_failed == 0 )
    {
      if ( renderer->position < renderer->source || renderer->end < renderer->position )
      {
        assert_failed = 1;
        errfile = "/home/naftali/source/elinks-0.12~pre5/src/document/dom/renderer.c";
        errline = 482;
        elinks_internal( "assertion check_dom_node_source(renderer, renderer-&gt;position, 0) failed: renderer[%p : %p] str[%p : %p]" );
        render_dom_text( &renderer[0], &renderer->styles[ node->type ], node->string.string, node->string.length );
        return DOM_CODE_OK;
      }
      else
        assert_failed = 0;
    }
  }
}