001package Torello.HTML.NodeSearch;
002
003import java.util.Vector;
004import java.util.regex.Pattern;
005import java.util.function.Predicate;
006
007import Torello.HTML.*;
008import Torello.HTML.NodeSearch.searchLoops.CmtNPoll;
009import Torello.Java.LV;
010
011/**
012 * Searches for, and extracts, HTML Comments from Vectorized-HTML that match a user-specified
013 * search-criteria, <I>and returns those extracted node or nodes</I>.
014 * 
015 * <BR /><BR /><EMBED CLASS="external-html" DATA-FILE-ID=CommentNodePoll> 
016 */
017@Torello.HTML.Tools.JavaDoc.JDHeaderBackgroundImg
018@Torello.HTML.Tools.JavaDoc.StaticFunctional
019public class CommentNodePoll
020{
021    private CommentNodePoll() { }
022
023    // ********************************************************************************************
024    // FIRST, LAST
025    // ********************************************************************************************
026
027    // **** first: no sPos, ePos 
028    public static CommentNode first (Vector<? extends HTMLNode> html, TextComparitor tc, String... compareStr)
029    { return CmtNPoll.nth (html, 1, new LV(html, 0, -1), ARGCHECK.TC(tc, compareStr)); }
030    public static CommentNode first (Vector<? extends HTMLNode> html, Pattern p)
031    { return CmtNPoll.nth (html, 1, new LV(html, 0, -1), ARGCHECK.REGEX(p)); }
032    public static CommentNode first (Vector<? extends HTMLNode> html, Predicate<String> p)
033    { return CmtNPoll.nth (html, 1, new LV(html, 0, -1), p); }
034
035    // **** first: CRITERIA INCLUDES sPos, ePos
036    public static CommentNode first (Vector<? extends HTMLNode> html, int sPos, int ePos, TextComparitor tc, String... compareStr)
037    { return CmtNPoll.nth (html, 1, new LV(html, sPos, ePos), ARGCHECK.TC(tc, compareStr)); }
038    public static CommentNode first (Vector<? extends HTMLNode> html, int sPos, int ePos, Pattern p)
039    { return CmtNPoll.nth (html, 1, new LV(html, sPos, ePos), ARGCHECK.REGEX(p)); }
040    public static CommentNode first (Vector<? extends HTMLNode> html, int sPos, int ePos, Predicate<String> p)
041    { return CmtNPoll.nth (html, 1, new LV(html, sPos, ePos), p); }
042
043    // **** last: no sPos, ePos
044    public static CommentNode last (Vector<? extends HTMLNode> html, TextComparitor tc, String... compareStr)
045    { return CmtNPoll.nthFromEnd (html, 1, new LV(html, 0, -1), ARGCHECK.TC(tc, compareStr)); }
046    public static CommentNode last (Vector<? extends HTMLNode> html, Pattern p)
047    { return CmtNPoll.nthFromEnd (html, 1, new LV(html, 0, -1), ARGCHECK.REGEX(p)); }
048    public static CommentNode last (Vector<? extends HTMLNode> html, Predicate<String> p)
049    { return CmtNPoll.nthFromEnd (html, 1, new LV(html, 0, -1), p); }
050
051    // **** last: CRITERIA INCLUDES sPos, ePos
052    public static CommentNode last (Vector<? extends HTMLNode> html, int sPos, int ePos, TextComparitor tc, String... compareStr)
053    { return CmtNPoll.nthFromEnd (html, 1, new LV(html, sPos, ePos), ARGCHECK.TC(tc, compareStr)); }
054    public static CommentNode last (Vector<? extends HTMLNode> html, int sPos, int ePos, Pattern p)
055    { return CmtNPoll.nthFromEnd (html, 1, new LV(html, sPos, ePos), ARGCHECK.REGEX(p)); }
056    public static CommentNode last (Vector<? extends HTMLNode> html, int sPos, int ePos, Predicate<String> p)
057    { return CmtNPoll.nthFromEnd (html, 1, new LV(html, sPos, ePos), p); }
058
059    // ********************************************************************************************
060    // NEW ADDITIONS: nth and nthFromEnd
061    // ********************************************************************************************
062
063    // **** nth: no sPos, ePos 
064    public static CommentNode nth (Vector<? extends HTMLNode> html, int nth, TextComparitor tc, String... compareStr)
065    { return CmtNPoll.nth (html, ARGCHECK.n(nth, html), new LV(html, 0, -1), ARGCHECK.TC(tc, compareStr)); }
066    public static CommentNode nth (Vector<? extends HTMLNode> html, int nth, Pattern p)
067    { return CmtNPoll.nth (html, ARGCHECK.n(nth, html), new LV(html, 0, -1), ARGCHECK.REGEX(p)); }
068    public static CommentNode nth (Vector<? extends HTMLNode> html, int nth, Predicate<String> p)
069    { return CmtNPoll.nth (html, ARGCHECK.n(nth, html), new LV(html, 0, -1), p); }
070
071    // **** nth: CRITERIA INCLUDES sPos, ePos
072    public static CommentNode nth (Vector<? extends HTMLNode> html, int nth, int sPos, int ePos, TextComparitor tc, String... compareStr)
073    { return CmtNPoll.nth (html, ARGCHECK.n(nth, html), new LV(html, sPos, ePos), ARGCHECK.TC(tc, compareStr)); }
074    public static CommentNode nth (Vector<? extends HTMLNode> html, int nth, int sPos, int ePos, Pattern p)
075    { return CmtNPoll.nth (html, ARGCHECK.n(nth, html), new LV(html, sPos, ePos), ARGCHECK.REGEX(p)); }
076    public static CommentNode nth (Vector<? extends HTMLNode> html, int nth, int sPos, int ePos, Predicate<String> p)
077    { return CmtNPoll.nth (html, ARGCHECK.n(nth, html), new LV(html, sPos, ePos), p); }
078
079    // **** nthFromEnd: no sPos, ePos
080    public static CommentNode nthFromEnd (Vector<? extends HTMLNode> html, int nth, TextComparitor tc, String... compareStr)
081    { return CmtNPoll.nthFromEnd (html, ARGCHECK.n(nth, html), new LV(html, 0, -1), ARGCHECK.TC(tc, compareStr)); }
082    public static CommentNode nthFromEnd (Vector<? extends HTMLNode> html, int nth, Pattern p)
083    { return CmtNPoll.nthFromEnd (html, ARGCHECK.n(nth, html), new LV(html, 0, -1), ARGCHECK.REGEX(p)); }
084    public static CommentNode nthFromEnd (Vector<? extends HTMLNode> html, int nth, Predicate<String> p)
085    { return CmtNPoll.nthFromEnd (html, ARGCHECK.n(nth, html), new LV(html, 0, -1), p); }
086
087    // **** nthFromEnd: CRITERIA INCLUDES sPos, ePos
088    public static CommentNode nthFromEnd (Vector<? extends HTMLNode> html, int nth, int sPos, int ePos, TextComparitor tc, String... compareStr)
089    { return CmtNPoll.nthFromEnd (html, ARGCHECK.n(nth, html), new LV(html, sPos, ePos), ARGCHECK.TC(tc, compareStr)); }
090    public static CommentNode nthFromEnd (Vector<? extends HTMLNode> html, int nth, int sPos, int ePos, Pattern p)
091    { return CmtNPoll.nthFromEnd (html, ARGCHECK.n(nth, html), new LV(html, sPos, ePos), ARGCHECK.REGEX(p)); }
092    public static CommentNode nthFromEnd (Vector<? extends HTMLNode> html, int nth, int sPos, int ePos, Predicate<String> p)
093    { return CmtNPoll.nthFromEnd (html, ARGCHECK.n(nth, html), new LV(html, sPos, ePos), p); }
094
095    // ********************************************************************************************
096    // ALL methods
097    // ********************************************************************************************
098
099    // **** all: no sPos, ePos
100    public static Vector<CommentNode> all (Vector<? extends HTMLNode> html, TextComparitor tc, String... compareStr)
101    { return CmtNPoll.all (html, new LV(html, 0, -1), ARGCHECK.TC(tc, compareStr)); }
102    public static Vector<CommentNode> all (Vector<? extends HTMLNode> html, Pattern p)
103    { return CmtNPoll.all (html, new LV(html, 0, -1), ARGCHECK.REGEX(p)); }
104    public static Vector<CommentNode> all (Vector<? extends HTMLNode> html, Predicate<String> p)
105    { return CmtNPoll.all (html, new LV(html, 0, -1), p); }
106
107    // **** all: CRITERIA INCLUDES sPos, ePos
108    public static Vector<CommentNode> all (Vector<? extends HTMLNode> html, int sPos, int ePos, TextComparitor tc, String... compareStr)
109    { return CmtNPoll.all (html, new LV(html, sPos, ePos), ARGCHECK.TC(tc, compareStr)); }
110    public static Vector<CommentNode> all (Vector<? extends HTMLNode> html, int sPos, int ePos, Pattern p)
111    { return CmtNPoll.all (html, new LV(html, sPos, ePos), ARGCHECK.REGEX(p)); }
112    public static Vector<CommentNode> all (Vector<? extends HTMLNode> html, int sPos, int ePos, Predicate<String> p)
113    { return CmtNPoll.all (html, new LV(html, sPos, ePos), p); }
114
115
116    // **** allExcept: no sPos, ePos
117    public static Vector<CommentNode> allExcept (Vector<? extends HTMLNode> html, TextComparitor tc, String... compareStr)
118    { return CmtNPoll.allExcept (html, new LV(html, 0, -1), ARGCHECK.TC(tc, compareStr)); }
119    public static Vector<CommentNode> allExcept (Vector<? extends HTMLNode> html, Pattern p)
120    { return CmtNPoll.allExcept (html, new LV(html, 0, -1), ARGCHECK.REGEX(p)); }
121    public static Vector<CommentNode> allExcept (Vector<? extends HTMLNode> html, Predicate<String> p)
122    { return CmtNPoll.allExcept (html, new LV(html, 0, -1), p); }
123
124    // **** allExcept: CRITERIA INCLUDES sPos, ePos
125    public static Vector<CommentNode> allExcept (Vector<? extends HTMLNode> html, int sPos, int ePos, TextComparitor tc, String... compareStr)
126    { return CmtNPoll.allExcept (html, new LV(html, sPos, ePos), ARGCHECK.TC(tc, compareStr)); }
127    public static Vector<CommentNode> allExcept (Vector<? extends HTMLNode> html, int sPos, int ePos, Pattern p)
128    { return CmtNPoll.allExcept (html, new LV(html, sPos, ePos), ARGCHECK.REGEX(p)); }
129    public static Vector<CommentNode> allExcept (Vector<? extends HTMLNode> html, int sPos, int ePos, Predicate<String> p)
130    { return CmtNPoll.allExcept (html, new LV(html, sPos, ePos), p); }
131}