Mercurial > hg4j
view test/org/tmatesoft/hg/test/OutputParser.java @ 648:690e71d29bf6
Introduced RevisionSet to ease update of phase roots on push
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Tue, 25 Jun 2013 20:48:37 +0200 |
parents | ab21ac7dd833 |
children |
line wrap: on
line source
/* * Copyright (c) 2011-2013 TMate Software Ltd * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * For information on how to redistribute this software under * the terms of a license other than GNU General Public License * contact TMate Software at support@hg4j.com */ package org.tmatesoft.hg.test; import java.util.Iterator; import java.util.NoSuchElementException; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * * @author Artem Tikhomirov * @author TMate Software Ltd. */ public interface OutputParser { public void parse(CharSequence seq); public class Stub implements OutputParser { private boolean shallDump; private CharSequence result; public Stub() { this(false); } public Stub(boolean dump) { shallDump = dump; } public void parse(CharSequence seq) { result = seq; if (shallDump) { System.out.println(seq); } // else no-op } public CharSequence result() { return result; } public void reset() { result = null; } public Iterable<String> lines() { return lines(Pattern.compile("(.+)$", Pattern.MULTILINE), 1); } public Iterable<String> lines(Pattern pattern, final int group) { final Matcher m = pattern.matcher(result); class S implements Iterable<String>, Iterator<String> { public Iterator<String> iterator() { return this; } private boolean next; { next = m.find(); } public boolean hasNext() { return next; } public String next() { if (next) { String rv = m.group(group); next = m.find(); return rv; } throw new NoSuchElementException(); } public void remove() { throw new UnsupportedOperationException(); } }; return new S(); } } }