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 71 72 73 74 75 76 77 | package Torello.HTML; import Torello.Java.LV; import java.util.Vector; import java.util.stream.IntStream; class RemoveAll { static int[] removeAll( final Vector<? super TagNode> html, final int sPos, final int ePos ) { // Use Java Stream to keep a list of Vector-Locations that were updated / modified. IntStream.Builder b = IntStream.builder(); // Loop Variables LV l = new LV(sPos, ePos, html); TagNode tn; for (int i=l.start; i < l.end; i++) // REQUIREMENTS: Only Opening-TagNodes // If element-length = tok-length+2, there are no attributes: '<', TOKEN, '>' if ((tn = ((HTMLNode) html.elementAt(i)).openTag()) != null) if (tn.str.length() > (tn.tok.length() + 2)) { // Replace the old TagNode html.setElementAt(tn.removeAllAV(), i); // Make sure to keep the index where it resides, to return to the user b.accept(i); } // Build the IntStream, Convert the IntStream -> int[], Return it. return b.build().toArray(); } static int[] removeAll( final Vector<? super TagNode> html, final int[] posArr ) { // Use Java Stream to keep a list of Vector-Locations that were updated / modified. IntStream.Builder b = IntStream.builder(); for (int i : posArr) { HTMLNode n = (HTMLNode) html.elementAt(i); if (! n.isTagNode()) throw new TagNodeExpectedException(i); TagNode tn = (TagNode) n; if (tn.isClosing) throw new OpeningTagNodeExpectedException(i); // If element-length = tok-length+2, there are no attributes! // Otherwise, replace the old TagNode with a new, empty, one // Make sure to keep the index where it resides, to return to the user if (tn.str.length() > (tn.tok.length() + 2)) { html.setElementAt(tn.removeAllAV(), i); b.accept(i); } } // Build the IntStream, Convert the IntStream -> int[], Return it. return b.build().toArray(); } } |