001package Torello.HTML.NodeSearch;
002
003import java.util.*;
004
005import Torello.HTML.*;
006import Torello.HTML.NodeSearch.searchLoops.TagNodes.TNPeek;
007import Torello.Java.LV;
008
009/**
010 * Searches an HTML-{@code Vector} for HTML-Tag's that match a specified search-criteria based on
011 * Tag-Name and whether the Tag is an opening or closing tag, and returns both the
012 * {@code Vector}-index and the Tag itself (as instances of {@link TagNodeIndex}).
013 * 
014 * <BR /><BR /><EMBED CLASS='external-html' DATA-FILE-ID=TagNodePeek>
015 */
016@Torello.JavaDoc.JDHeaderBackgroundImg
017@Torello.JavaDoc.StaticFunctional
018public class TagNodePeek
019{
020    private TagNodePeek() { }
021
022    public static TagNodeIndex              first                       (Vector<? extends HTMLNode> html, TC tagCriteria, String... htmlTags)
023    { return                                TNPeek.nth                  (html, 1, new LV(html, 0, -1), tagCriteria, ARGCHECK.htmlTags(htmlTags)); }
024
025    public static TagNodeIndex              last                        (Vector<? extends HTMLNode> html, TC tagCriteria, String... htmlTags)
026    { return                                TNPeek.nthFromEnd           (html, 1, new LV(html, 0, -1), tagCriteria, ARGCHECK.htmlTags(htmlTags)); }
027
028    public static Vector<TagNodeIndex>      all                         (Vector<? extends HTMLNode> html, TC tagCriteria, String... htmlTags)
029    { return                                TNPeek.all                  (html, new LV(html, 0, -1), tagCriteria, ARGCHECK.htmlTags(htmlTags)); }
030
031    public static Vector<TagNodeIndex>      allExcept                   (Vector<? extends HTMLNode> html, TC tagCriteria, String... htmlTags)
032    { return                                TNPeek.allExcept            (html, new LV(html, 0, -1), tagCriteria, ARGCHECK.htmlTags(htmlTags)); }
033
034    public static TagNodeIndex              first                       (Vector<? extends HTMLNode> html, int sPos, int ePos, TC tagCriteria, String... htmlTags)
035    { return                                TNPeek.nth                  (html, 1, new LV(html, sPos, ePos), tagCriteria, ARGCHECK.htmlTags(htmlTags)); }
036
037    public static TagNodeIndex              last                        (Vector<? extends HTMLNode> html, int sPos, int ePos, TC tagCriteria, String... htmlTags)
038    { return                                TNPeek.nthFromEnd           (html, 1, new LV(html, sPos, ePos), tagCriteria, ARGCHECK.htmlTags(htmlTags)); }
039
040    public static Vector<TagNodeIndex>      all                         (Vector<? extends HTMLNode> html, int sPos, int ePos, TC tagCriteria, String... htmlTags)
041    { return                                TNPeek.all                  (html, new LV(html, sPos, ePos), tagCriteria, ARGCHECK.htmlTags(htmlTags)); }
042
043    public static Vector<TagNodeIndex>      allExcept                   (Vector<? extends HTMLNode> html, int sPos, int ePos, TC tagCriteria, String... htmlTags)
044    { return                                TNPeek.allExcept            (html, new LV(html, sPos, ePos), tagCriteria, ARGCHECK.htmlTags(htmlTags)); }
045
046    // NEW ADDITIONS - nth and nthFromEnd
047
048    public static TagNodeIndex              nth                         (Vector<? extends HTMLNode> html, int nth, TC tagCriteria, String... htmlTags)
049    { return                                TNPeek.nth                  (html, ARGCHECK.n(nth, html), new LV(html, 0, -1), tagCriteria, ARGCHECK.htmlTags(htmlTags)); }
050
051    public static TagNodeIndex              nthFromEnd                  (Vector<? extends HTMLNode> html, int nth, TC tagCriteria, String... htmlTags)
052    { return                                TNPeek.nthFromEnd           (html, ARGCHECK.n(nth, html), new LV(html, 0, -1), tagCriteria, ARGCHECK.htmlTags(htmlTags)); }
053
054    public static TagNodeIndex              nth                         (Vector<? extends HTMLNode> html, int nth, int sPos, int ePos, TC tagCriteria, String... htmlTags)
055    { return                                TNPeek.nth                  (html, ARGCHECK.n(nth, html), new LV(html, sPos, ePos), tagCriteria, ARGCHECK.htmlTags(htmlTags)); }
056
057    public static TagNodeIndex              nthFromEnd                  (Vector<? extends HTMLNode> html, int nth, int sPos, int ePos, TC tagCriteria, String... htmlTags)
058    { return                                TNPeek.nthFromEnd           (html, ARGCHECK.n(nth, html), new LV(html, sPos, ePos), tagCriteria, ARGCHECK.htmlTags(htmlTags)); }
059
060}