View Javadoc
1 // $Id: PatternSet.java,v 1.3 2004/02/12 22:34:10 powerpete Exp $ 2 // [JMP, 03.02.2004] Created this file. 3 package org.jface.stepmt.core.util; 4 5 import java.util.ArrayList; 6 import java.util.Collection; 7 import java.util.Iterator; 8 import java.util.List; 9 10 import org.jface.stepmt.core.Interval; 11 import org.jface.stepmt.core.Pattern; 12 import org.jface.stepmt.core.PatternMap; 13 import org.jface.stepmt.core.patterns.StringPattern; 14 15 /*** 16 * @author <a href="mailto:powerpete@users.sf.net">M. Petersen</a> 17 * @version $Id: PatternSet.java,v 1.3 2004/02/12 22:34:10 powerpete Exp $ 18 */ 19 public class PatternSet 20 { 21 private List patterns = new ArrayList(); 22 private Collection containerPatterns = new ArrayList(); 23 24 public PatternSet() 25 {} 26 27 public PatternSet(String str) 28 { 29 int start = 0; 30 int end = 0; 31 while ((start = str.indexOf("${", end)) != -1) 32 { 33 int tmp = str.indexOf("}", start); 34 if (tmp == -1) 35 { 36 addStringPattern(str.substring(end)); 37 return; 38 } 39 else 40 { 41 addStringPattern(str.substring(end, start)); 42 addContainerPattern(str.substring(start + 2, tmp)); 43 end = tmp + 1; 44 } 45 } 46 addStringPattern(str.substring(end)); 47 } 48 49 private void addContainerPattern(String string) 50 { 51 Pattern pattern = new ContainerPattern(string); 52 patterns.add(pattern); 53 containerPatterns.add(pattern); 54 } 55 56 private void addStringPattern(String str) 57 { 58 if (str.length() != 0) 59 { 60 add(new StringPattern(str)); 61 } 62 } 63 64 void add(Pattern pattern) 65 { 66 patterns.add(pattern); 67 } 68 69 public void resolve(PatternMap patternMap) 70 { 71 for (Iterator it = containerPatterns.iterator(); it.hasNext();) 72 { 73 ContainerPattern containerPattern = (ContainerPattern) it.next(); 74 containerPattern.resolve(patternMap); 75 } 76 } 77 78 public Interval match(String text) 79 { 80 Interval interval = null; 81 int index = 0; 82 for (int i = 0; i < patterns.size(); i++) 83 //for (Iterator it = patterns.iterator(); it.hasNext();) 84 { 85 //Pattern pattern = (Pattern) it.next(); 86 Pattern pattern = (Pattern) patterns.get(i); 87 if (interval == null) 88 { 89 interval = getInterval(text, pattern, index); 90 if (interval == null) 91 { 92 return null; 93 } 94 } 95 else 96 { 97 interval = interval.merge(pattern.match(text, index)); 98 } 99 if (interval == null) 100 { 101 i = -1; 102 } 103 else 104 { 105 index = interval.indexAfter(); 106 } 107 } 108 return interval; 109 } 110 111 private Interval getInterval(String text, Pattern pattern, int index) 112 { 113 for (int i = index; i < text.length(); i++) 114 { 115 Interval interval = pattern.match(text, i); 116 if (interval != null) 117 { 118 return interval; 119 } 120 } 121 return null; 122 } 123 124 public Interval matchesAtStart(String text) 125 { 126 int index = 0; 127 Interval interval = new Interval(0, 0); 128 for (Iterator it = patterns.iterator(); it.hasNext();) 129 { 130 Pattern pattern = (Pattern) it.next(); 131 interval = interval.merge(pattern.match(text, index)); 132 if (interval == null) 133 { 134 return null; 135 } 136 index = interval.indexAfter(); 137 } 138 return interval; 139 } 140 }

This page was automatically generated by Maven