HTML-Parser

 view release on metacpan or  search on metacpan

Parser.xs  view on Meta::CPAN

	SvREADONLY_on(sv);

	hv_stores(hv, "_hparser_xs_state", newRV_noinc(sv));

void
parse(self, chunk)
	SV* self;
	SV* chunk
    PREINIT:
	PSTATE* p_state = get_pstate_hv(aTHX_ self);
    PPCODE:
    (void)sv_2mortal(SvREFCNT_inc(SvRV(self)));
	if (p_state->parsing)
    	    croak("Parse loop not allowed");
        p_state->parsing = 1;
	if (SvROK(chunk) && SvTYPE(SvRV(chunk)) == SVt_PVCV) {
	    SV* generator = chunk;
	    STRLEN len;
	    do {
                int count;
		PUSHMARK(SP);

Parser.xs  view on Meta::CPAN

        }
	else {
	    PUSHs(self);
	}

void
eof(self)
    SV* self;
    PREINIT:
    PSTATE* p_state = get_pstate_hv(aTHX_ self);
    PPCODE:
        if (p_state->parsing)
            p_state->eof = 1;
        else {
            p_state->parsing = 1;
            parse(aTHX_ p_state, 0, self); /* flush */
            SPAGAIN;
            p_state->parsing = 0;
        }
        PUSHs(self);

Parser.xs  view on Meta::CPAN

void
handler(pstate, eventname,...)
	PSTATE* pstate
	SV* eventname
    PREINIT:
	STRLEN name_len;
	char *name = SvPV(eventname, name_len);
        int event = -1;
        int i;
        struct p_handler *h;
    PPCODE:
	/* map event name string to event_id */
	for (i = 0; i < EVENT_COUNT; i++) {
	    if (strEQ(name, event_id_str[i])) {
	        event = i;
	        break;
	    }
	}
        if (event < 0)
	    croak("No handler for %s events", name);

Parser.xs  view on Meta::CPAN

	}


MODULE = HTML::Parser		PACKAGE = HTML::Entities

void
decode_entities(...)
    PREINIT:
        int i;
	HV *entity2char = get_hv("HTML::Entities::entity2char", 0);
    PPCODE:
	if (GIMME_V == G_SCALAR && items > 1)
            items = 1;
	for (i = 0; i < items; i++) {
	    if (GIMME_V != G_VOID)
	        ST(i) = sv_2mortal(newSVsv(ST(i)));
	    else {
#ifdef SV_CHECK_THINKFIRST
                SV_CHECK_THINKFIRST(ST(i));
#endif
                if (SvREADONLY(ST(i)))



( run in 0.991 second using v1.01-cache-2.11-cpan-5511b514fd6 )