@Override public List<Embedding> getEmbeddings(Snapshot snapshot) { List<Embedding> ems = extractRuby(snapshot); if (ems.isEmpty()) { return Collections.emptyList(); } else { return Collections.singletonList(Embedding.create(ems)); } }
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; } });
/** * 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 boolean initRegionData(final Context.Region region) { if (controller == null || (currentEmbedding != null && !(currentEmbedding.containsOriginalOffset(region.getStartOffset()) && currentEmbedding.containsOriginalOffset(region.getEndOffset())))) { try { if (JavacParser.MIME_TYPE.equals(context.mimePath())) {
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; }
@Override public List<Embedding> getEmbeddings(Snapshot snapshot) { TokenHierarchy<CharSequence> th = TokenHierarchy.create(snapshot.getText(), RhtmlTokenId.language()); TokenSequence<RhtmlTokenId> sequence = th.tokenSequence(RhtmlTokenId.language()); sequence.moveStart(); List<Embedding> embeddings = new ArrayList<Embedding>(); boolean lastEmbeddingIsVirtual = false; while (sequence.moveNext()) { Token t = sequence.token(); if (t.id() == RhtmlTokenId.HTML) { //lets suppose the text is always html :-( embeddings.add(snapshot.create(sequence.offset(), t.length(), "text/html")); //NOI18N lastEmbeddingIsVirtual = false; } else { //replace templating tokens by generated code marker if (!lastEmbeddingIsVirtual) { embeddings.add(snapshot.create(GENERATED_CODE, "text/html")); lastEmbeddingIsVirtual = true; } } } if (embeddings.isEmpty()) { return Collections.emptyList(); } else { return Collections.singletonList(Embedding.create(embeddings)); } }
@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; }
return Collections.singletonList(Embedding.create(embeddings));