static void Test03()
{
    const char *s = "a < b > c <> d <";
    HtmlPullParser parser(s, str::Len(s));
    HtmlToken *t = parser.Next();
    assert(t && t->IsText() && StrEqNIx(t->s, t->sLen, "a "));
    t = parser.Next();
    assert(t && t->IsText() && StrEqNIx(t->s, t->sLen, "< b > c "));
    t = parser.Next();
    assert(t && t->IsText() && StrEqNIx(t->s, t->sLen, "<> d "));
    t = parser.Next();
    assert(t && t->IsError() && HtmlToken::UnclosedTag == t->error);
    t = parser.Next();
    assert(!t);
}
Exemple #2
0
// for now just ignores any namespace qualifier
// (i.e. succeeds for "opf:content" with name="content" and any value of ns)
// TODO: add proper namespace support
bool HtmlToken::NameIsNS(const char *name, const char *ns) const
{
    CrashIf(!ns);
    const char *nameStart = (const char *)memchr(s, ':', nLen);
    nameStart = nameStart ? nameStart + 1 : s;
    return StrEqNIx(nameStart, nLen - (nameStart - s), name);
}
Exemple #3
0
// for now just ignores any namespace qualifier
// (i.e. succeeds for "xlink:href" with name="href" and any value of attrNS)
// TODO: add proper namespace support
bool AttrInfo::NameIsNS(const char *s, const char *ns) const
{
    CrashIf(!ns);
    const char *nameStart = (const char *)memchr(name, ':', nameLen);
    nameStart = nameStart ? nameStart + 1 : name;
    return StrEqNIx(nameStart, nameLen - (nameStart - name), s);
}
static void Test02()
{
    const char *s = "<p>Last paragraph";
    HtmlPullParser parser(s, str::Len(s));
    HtmlToken *t = parser.Next();
    assert(t && t->IsTag() && t->IsStartTag() && Tag_P == t->tag);
    t = parser.Next();
    assert(t && t->IsText() && StrEqNIx(t->s, t->sLen, "Last paragraph"));
}
Exemple #5
0
bool AttrInfo::ValIs(const char *s) const
{
    return StrEqNIx(val, valLen, s);
}
Exemple #6
0
bool AttrInfo::NameIs(const char *s) const
{
    return StrEqNIx(name, nameLen, s);
}