RERef compile(String pattern) { for (RERef regex : regexes) { if (regex.re.getPattern().equals(pattern)) { return regex; } } // RE regex = factory.compile(pattern); RERef holder = new RERef(regexes.length, regex); regexes = Tools.appendTo(regexes, holder); return holder; }
private boolean matches(HashMap<String, String> context, HashMap<PathParam, String> abc) { // Match any pattern parameter if (this instanceof PatternRoute) { PatternRoute prt = (PatternRoute)this; for (int i = 0;i < prt.params.length;i++) { PathParam param = prt.params[i]; String s = context.get(param.name); String matched = null; if (s != null) { for (int j = 0;j < param.matchingRegex.length;j++) { RERef renderingRegex = param.matchingRegex[j]; if (renderingRegex.re.matcher().matches(s)) { matched = param.templatePrefixes[j] + s + param.templateSuffixes[j]; break; } } } if (matched != null) { context.remove(param.name); abc.put(param, matched); } else { return false; } } } // return true; }
private boolean matches(HashMap<String, String> context, HashMap<PathParam, String> abc) { // Match any pattern parameter if (this instanceof PatternRoute) { PatternRoute prt = (PatternRoute)this; for (int i = 0;i < prt.params.length;i++) { PathParam param = prt.params[i]; String s = context.get(param.name); String matched = null; if (s != null) { for (int j = 0;j < param.matchingRegex.length;j++) { RERef renderingRegex = param.matchingRegex[j]; if (renderingRegex.re.matcher().matches(s)) { matched = param.templatePrefixes[j] + s + param.templateSuffixes[j]; break; } } } if (matched != null) { context.remove(param.name); abc.put(param, matched); } else { return false; } } } // return true; }
RERef compile(String pattern) { for (RERef regex : regexes) { if (regex.re.getPattern().equals(pattern)) { return regex; } } // RE regex = factory.compile(pattern); RERef holder = new RERef(regexes.length, regex); regexes = Tools.appendTo(regexes, holder); return holder; }
RE.Match[] matches = patternRoute.pattern.re.matcher().find(path.getValue());
@Test public void testParameterSegment() throws Exception { Router router = new Router(); router.append("/{a}"); // assertEquals(0, router.getSegmentNames().size()); assertEquals(1, router.getPatternSize()); PatternRoute patternRoute = router.getPattern(0); assertEquals("(?:([^/]+))(?:(?<=^)|(?=/)|$)", patternRoute.pattern.re.getPattern()); assertEquals(1, patternRoute.params.length); assertEquals(Names.A, patternRoute.params[0].name); assertEquals("^(.+)$", patternRoute.params[0].matchingRegex[0].re.getPattern()); assertFalse(patternRoute.params[0].preservePath); assertEquals(2, patternRoute.chunks.length); assertEquals("", patternRoute.chunks[0]); assertEquals("", patternRoute.chunks[1]); }
private void assertLiteral(char c) { PatternBuilder pb = new PatternBuilder(); pb.expr("^"); pb.literal(c); pb.expr("$"); RE pattern = REFactory.JAVA.compile(pb.build()); assertTrue(pattern.matcher().matches(Character.toString(c))); } }
@Test public void testPatternSegment() throws Exception { Router router = new Router(); router.append("/{a}", Collections.singletonMap(Names.A, PathParam.matching(".*"))); // assertEquals(0, router.getSegmentNames().size()); assertEquals(1, router.getPatternSize()); PatternRoute patternRoute = router.getPattern(0); assertEquals("(?:([^/]*))(?:(?<=^)|(?=/)|$)", patternRoute.pattern.re.getPattern()); assertEquals(1, patternRoute.params.length); assertEquals(Names.A, patternRoute.params[0].name); assertEquals("^(.*)$", patternRoute.params[0].matchingRegex[0].re.getPattern()); assertFalse(patternRoute.params[0].preservePath); assertEquals(2, patternRoute.chunks.length); assertEquals("", patternRoute.chunks[0]); assertEquals("", patternRoute.chunks[1]); }
RE.Match[] matches = patternRoute.pattern.re.matcher().find(path.getValue());
@Test public void testPatternSegment() throws Exception { Router router = new Router(); router.append("/{a}", Collections.singletonMap(Names.A, PathParam.matching(".*"))); // assertEquals(0, router.getSegmentNames().size()); assertEquals(1, router.getPatternSize()); PatternRoute patternRoute = router.getPattern(0); assertEquals("(?:([^/]*))(?:(?<=^)|(?=/)|$)", patternRoute.pattern.re.getPattern()); assertEquals(1, patternRoute.params.length); assertEquals(Names.A, patternRoute.params[0].name); assertEquals("^(.*)$", patternRoute.params[0].matchingRegex[0].re.getPattern()); assertFalse(patternRoute.params[0].preservePath); assertEquals(2, patternRoute.chunks.length); assertEquals("", patternRoute.chunks[0]); assertEquals("", patternRoute.chunks[1]); }
private void assertLiteral(char c) { PatternBuilder pb = new PatternBuilder(); pb.expr("^"); pb.literal(c); pb.expr("$"); RE pattern = REFactory.JAVA.compile(pb.build()); assertTrue(pattern.matcher().matches(Character.toString(c))); } }
@Test public void testParameterSegment() throws Exception { Router router = new Router(); router.append("/{a}"); // assertEquals(0, router.getSegmentNames().size()); assertEquals(1, router.getPatternSize()); PatternRoute patternRoute = router.getPattern(0); assertEquals("(?:([^/]+))(?:(?<=^)|(?=/)|$)", patternRoute.pattern.re.getPattern()); assertEquals(1, patternRoute.params.length); assertEquals(Names.A, patternRoute.params[0].name); assertEquals("^(.+)$", patternRoute.params[0].matchingRegex[0].re.getPattern()); assertFalse(patternRoute.params[0].preservePath); assertEquals(2, patternRoute.chunks.length); assertEquals("", patternRoute.chunks[0]); assertEquals("", patternRoute.chunks[1]); }
@Test public void testLiteral() { RE regex = JRegexFactory.INSTANCE.compile("abc"); RE.Match[] matches = regex.matcher().find("abc"); assertEquals(1, matches.length); assertEquals(0, matches[0].getStart()); assertEquals(3, matches[0].getEnd()); assertEquals("abc", matches[0].getValue()); }
@Test public void testQualifiedParameterSegment() throws Exception { Router router = new Router(); router.append("/{q:a}"); // assertEquals(0, router.getSegmentNames().size()); assertEquals(1, router.getPatternSize()); PatternRoute patternRoute = router.getPattern(0); assertEquals("(?:([^/]+))(?:(?<=^)|(?=/)|$)", patternRoute.pattern.re.getPattern()); assertEquals(1, patternRoute.params.length); assertEquals(Names.Q_A, patternRoute.params[0].name); assertEquals("^(.+)$", patternRoute.params[0].matchingRegex[0].re.getPattern()); assertFalse(patternRoute.params[0].preservePath); assertEquals(2, patternRoute.chunks.length); assertEquals("", patternRoute.chunks[0]); assertEquals("", patternRoute.chunks[1]); }
@Test public void testNonCapturingGroup() { RE regex = JRegexFactory.INSTANCE.compile("a(?:b)c"); RE.Match[] matches = regex.matcher().find("abc"); assertEquals(1, matches.length); assertEquals(0, matches[0].getStart()); assertEquals(3, matches[0].getEnd()); assertEquals("abc", matches[0].getValue()); } }
@Test public void testQualifiedParameterSegment() throws Exception { Router router = new Router(); router.append("/{q:a}"); // assertEquals(0, router.getSegmentNames().size()); assertEquals(1, router.getPatternSize()); PatternRoute patternRoute = router.getPattern(0); assertEquals("(?:([^/]+))(?:(?<=^)|(?=/)|$)", patternRoute.pattern.re.getPattern()); assertEquals(1, patternRoute.params.length); assertEquals(Names.Q_A, patternRoute.params[0].name); assertEquals("^(.+)$", patternRoute.params[0].matchingRegex[0].re.getPattern()); assertFalse(patternRoute.params[0].preservePath); assertEquals(2, patternRoute.chunks.length); assertEquals("", patternRoute.chunks[0]); assertEquals("", patternRoute.chunks[1]); }
@Test public void testNonCapturingGroup() { RE regex = JRegexFactory.INSTANCE.compile("a(?:b)c"); RE.Match[] matches = regex.matcher().find("abc"); assertEquals(1, matches.length); assertEquals(0, matches[0].getStart()); assertEquals(3, matches[0].getEnd()); assertEquals("abc", matches[0].getValue()); } }
@Test public void testLiteral() { RE regex = JRegexFactory.INSTANCE.compile("abc"); RE.Match[] matches = regex.matcher().find("abc"); assertEquals(1, matches.length); assertEquals(0, matches[0].getStart()); assertEquals(3, matches[0].getEnd()); assertEquals("abc", matches[0].getValue()); }
@Test public void testSimpleGroup1() { RE regex = JRegexFactory.INSTANCE.compile("(abc)"); RE.Match[] matches = regex.matcher().find("abc"); assertEquals(2, matches.length); assertEquals(0, matches[0].getStart()); assertEquals(3, matches[0].getEnd()); assertEquals("abc", matches[0].getValue()); assertEquals(0, matches[1].getStart()); assertEquals(3, matches[1].getEnd()); assertEquals("abc", matches[1].getValue()); }
@Test public void testSimpleGroup2() { RE regex = JRegexFactory.INSTANCE.compile("a(b)c"); RE.Match[] matches = regex.matcher().find("abc"); assertEquals(2, matches.length); assertEquals(0, matches[0].getStart()); assertEquals(3, matches[0].getEnd()); assertEquals("abc", matches[0].getValue()); assertEquals(1, matches[1].getStart()); assertEquals(2, matches[1].getEnd()); assertEquals("b", matches[1].getValue()); }