/** * Returns {@code CssParserResult}s (including the embedded ones) that * correspond to the given {@code ResultIterator}. * * @param resultIterator {@code ResultIterator} to process. * @return {@code CssParserResult}s contained in the given {@code ResultIterator}. * @throws ParseException when there is a parsing problem. */ public static List<CssParserResult> cssParserResults(ResultIterator resultIterator) throws ParseException { List<ResultIterator> resultIterators = new ArrayList<ResultIterator>(); resultIterators.add(resultIterator); for (Embedding embedding : resultIterator.getEmbeddings()) { String mimeType = embedding.getMimeType(); if ("text/css".equals(mimeType)) { // NOI18N resultIterators.add(resultIterator.getResultIterator(embedding)); } } List<CssParserResult> parserResults = new ArrayList<CssParserResult>(resultIterators.size()); for (ResultIterator iterator : resultIterators) { Parser.Result parserResult = iterator.getParserResult(); if (parserResult instanceof CssParserResult) { parserResults.add((CssParserResult)parserResult); } } return parserResults; }
private Parser.Result findEmbeddedJava (final ResultIterator theMess) throws ParseException { final Collection<Embedding> todo = new ArrayList<Embedding>(); //BFS should perform better than DFS in this dark. for (Embedding embedding : theMess.getEmbeddings()) { if (JavacParser.MIME_TYPE.equals(embedding.getMimeType())) { return theMess.getResultIterator(embedding).getParserResult(); } else { todo.add(embedding); } } for (Embedding embedding : todo) { Parser.Result result = findEmbeddedJava(theMess.getResultIterator(embedding)); if (result != null) { return result; } } return null; }
@CheckForNull private ResultIterator findEmbeddedJava (@NonNull final ResultIterator theMess) throws ParseException { final Collection<Embedding> todo = new LinkedList<>(); //BFS should perform better than DFS in this dark. for (Embedding embedding : theMess.getEmbeddings()) { if (JavacParser.MIME_TYPE.equals(embedding.getMimeType())) { return theMess.getResultIterator(embedding); } else { todo.add(embedding); } } for (Embedding embedding : todo) { final ResultIterator res = findEmbeddedJava(theMess.getResultIterator(embedding)); if (res != null) { return res; } } return null; }
private Parser.Result findEmbeddedJava(final ResultIterator theMess) throws ParseException { final Collection<Embedding> todo = new LinkedList<Embedding>(); //BFS should perform better than DFS in this dark. for (Embedding embedding : theMess.getEmbeddings()) { if (JavacParser.MIME_TYPE.equals(embedding.getMimeType()) && embedding.containsOriginalOffset(region.getStartOffset()) && embedding.containsOriginalOffset(region.getEndOffset())) { return theMess.getResultIterator(currentEmbedding = embedding).getParserResult(); } else { todo.add(embedding); } } for (Embedding embedding : todo) { Parser.Result result = findEmbeddedJava(theMess.getResultIterator(embedding)); if (result != null) { return result; } } return null; } });