/** Parse a CSS style attribute. */ public void parseStyleAttribute( final Reader reader, String systemID, final CssErrorHandler err, final CssContentHandler doc) throws IOException, CssException { CssTokenIterator iter = scan(reader, systemID, err); doc.startDocument(); while (iter.hasNext()) { CssToken tk = iter.next(); if (MATCH_SEMI.apply(tk)) { continue; // starting with ';' is allowed, Issue 238 } try { CssDeclaration decl = handleDeclaration(tk, iter, doc, err, true); if (decl != null) { doc.declaration(decl); } else { // #handleDeclaration has issued errors return; } } catch (PrematureEOFException te) { // The subroutines report premature EOF to ErrHandler // on occurrence; if the listener rethrows it will // be a CssException so we don't catch it here. break; } } doc.endDocument(); }
/** Parse a CSS document. */ public void parse( final Reader reader, final String systemID, final CssErrorHandler err, final CssContentHandler doc) throws IOException, CssException { CssTokenIterator iter = scan(reader, systemID, err); doc.startDocument(); while (iter.hasNext(FILTER_S_CMNT_CDO_CDC)) { CssToken tk = iter.next(FILTER_S_CMNT_CDO_CDC); try { if (tk.type == CssToken.Type.ATKEYWORD) { handleAtRule(tk, iter, doc, err); if (debug) { checkArgument(MATCH_SEMI_CLOSEBRACE.apply(iter.last)); } } else { handleRuleSet(tk, iter, doc, err); if (debug) { checkArgument(MATCH_CLOSEBRACE.apply(iter.last)); } } } catch (PrematureEOFException te) { // The subroutines report premature EOF to ErrHandler // on occurrence; if the listener rethrows it will // be a CssException so we don't catch it here. break; } } doc.endDocument(); }