@Nonnull private CSSExpressionMemberTermURI _createExpressionURL(@Nonnull final CSSNode aNode) { _expectNodeType(aNode, ECSSNodeType.URL); final int nChildCount = aNode.jjtGetNumChildren(); if (nChildCount > 0) _throwUnexpectedChildrenCount(aNode, "Expected 0 children but got " + nChildCount + "!"); final CSSURI aURI = new CSSURI(aNode.getText()); aURI.setSourceLocation(aNode.getSourceLocation()); return new CSSExpressionMemberTermURI(aURI); }
@Nonnull private CSSImportRule _createImportRule(@Nonnull final CSSNode aNode) { _expectNodeType(aNode, ECSSNodeType.IMPORTRULE); final int nChildCount = aNode.jjtGetNumChildren(); if (nChildCount > 2) _throwUnexpectedChildrenCount( aNode, "Expected at last 2 children but got " + nChildCount + "!"); CSSURI aImportURI = null; int nCurrentIndex = 0; if (nChildCount > 0) { final CSSNode aURINode = aNode.jjtGetChild(0); if (ECSSNodeType.URL.isNode(aURINode, m_eVersion)) { aImportURI = new CSSURI(aURINode.getText()); aImportURI.setSourceLocation(aURINode.getSourceLocation()); ++nCurrentIndex; } else if (!ECSSNodeType.MEDIALIST.isNode(aURINode, m_eVersion)) throw new IllegalStateException( "Expected an URI or MEDIALIST node but got " + ECSSNodeType.getNodeName(aURINode, m_eVersion)); } if (aImportURI == null) { // No URI child node present, so the location is printed directly // E.g. @import "abc.css" aImportURI = new CSSURI(CSSParseHelper.extractStringValue(aNode.getText())); } // Import rule final CSSImportRule ret = new CSSImportRule(aImportURI); ret.setSourceLocation(aNode.getSourceLocation()); if (nChildCount > nCurrentIndex) { // We have a media query present! final CSSNode aMediaListNode = aNode.jjtGetChild(nCurrentIndex); if (ECSSNodeType.MEDIALIST.isNode(aMediaListNode, m_eVersion)) { for (final CSSNode aMediaQueryNode : aMediaListNode) { ret.addMediaQuery(_createMediaQuery(aMediaQueryNode)); } ++nCurrentIndex; } else s_aLogger.error( "Expected an MEDIALIST node but got " + ECSSNodeType.getNodeName(aMediaListNode, m_eVersion)); } if (nCurrentIndex < nChildCount) s_aLogger.error("Import statement has children which are unhandled."); return ret; }