1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | package Torello.HTML.NodeSearch.SearchLoops.CommentNodes; import java.util.Vector; import java.util.function.Predicate; import Torello.HTML.*; import Torello.Java.LV; public class CmtNPeek { public static CommentNodeIndex nth (Vector<? extends HTMLNode> html, int nth, LV l, Predicate<String> p) { HTMLNode n; for (int i=l.start; i < l.end; i++) if ( ((n = html.elementAt(i)).isCommentNode()) && p.test(((CommentNode) n).body) && (--nth == 0) ) return new CommentNodeIndex(i, (CommentNode) n); return null; } public static CommentNodeIndex nthFromEnd (Vector<? extends HTMLNode> html, int nth, LV l, Predicate<String> p) { HTMLNode n; for (int i=l.end-1; i >= l.start; i--) if ( ((n = html.elementAt(i)).isCommentNode()) && p.test(((CommentNode) n).body) && (--nth == 0) ) return new CommentNodeIndex(i, (CommentNode) n); return null; } public static Vector<CommentNodeIndex> all (Vector<? extends HTMLNode> html, LV l, Predicate<String> p) { Vector<CommentNodeIndex> ret = new Vector<>(); HTMLNode n; for (int i=l.start; i < l.end; i++) if ((n = html.elementAt(i)).isCommentNode()) if (p.test(((CommentNode) n).body)) ret.addElement(new CommentNodeIndex(i, (CommentNode) n)); return ret; } public static Vector<CommentNodeIndex> allExcept (Vector<? extends HTMLNode> html, LV l, Predicate<String> p) { Vector<CommentNodeIndex> ret = new Vector<>(); HTMLNode n; for (int i=l.start; i < l.end; i++) if ((n=html.elementAt(i)).isCommentNode()) if (! p.test(((CommentNode) n).body)) ret.addElement(new CommentNodeIndex(i, (CommentNode) n)); return ret; } } |