Java源码示例:com.googlecode.totallylazy.Pair

示例1
private Option<Pair<String, Sequence<String>>> parseExpression(Pair<String, Sequence<String>> expression) {
    Option<Class<?>> expressionClass = evaluator.classFrom(expression.first());

    if (!expressionClass.isEmpty()) {
        return some(expression);
    }

    if (expression.first().contains(".")) {
        final String packagePart = expression.first().substring(0, expression.first().lastIndexOf("."));
        final String classPart = expression.first().substring(expression.first().lastIndexOf(".") + 1);

        return parseExpression(pair(packagePart, expression.second().cons(classPart)));
    }

    return Option.none();

}
 
示例2
public CompletionResult call(String expression) throws Exception {
    final int lastSeparator = lastIndexOfSeparator(characters(" "), expression) + 1;
    final String packagePart = expression.substring(lastSeparator);

    Option<Pair<Class<?>, String>> completion = completionFor(packagePart);

    if (!completion.isEmpty()) {
        Function1<CompletionCandidate, String> value = CompletionCandidate::value;
        Sequence<CompletionCandidate> candidates = reflectionOf(completion.get().first())
                .declaredMembers()
                .filter(isStatic().and(isPublic()).and(not(isSynthetic())))
                .groupBy(candidateName())
                .map(candidate())
                .filter(where(value, startsWith(completion.get().second())));

        final int beginIndex = packagePart.lastIndexOf('.') + 1;
        return new CompletionResult(expression, lastSeparator + beginIndex, candidates);
    } else {
        return new CompletionResult(expression, 0, Sequences.empty(CompletionCandidate.class));
    }
}
 
示例3
@Test
public void canPutAndReturnOldValue() throws Exception {
    PersistentMap <Integer, String> pairs = map(4, "Four", 5, "Five", 3, "Three", 2, "Two", 6, "Six");
    Pair<PersistentMap <Integer, String>, Option<String>> result = PersistentMap.methods.put(pairs, 4, "NewFour");
    assertThat(result.first().lookup(4).get(), is("NewFour"));
    assertThat(result.second().get(), is("Four"));
}
 
示例4
private Callable1<? super TestMethod, ? extends Iterable<Pair<String, TestMethod>>> methodTags() {
    return new Callable1<TestMethod, Iterable<Pair<String, TestMethod>>>() {
        @Override
        public Iterable<Pair<String, TestMethod>> call(TestMethod resultFileAndTestMethod) throws Exception {
            return sequence(tagFinder.tags(resultFileAndTestMethod)).zip(repeat(resultFileAndTestMethod));
        }
    };
}
 
示例5
@Override
public Result<Pair<A, B>> parse(Segment<Character> characters) {
    Result<? extends A> resultA = parserA.parse(characters);
    if (resultA instanceof Failure) return cast(resultA);

    Result<? extends B> resultB = parserB.parse(resultA.remainder());
    if (resultB instanceof Failure) return cast(resultB);

    return success(Pair.pair(resultA.value(), resultB.value()), resultB.remainder());
}
 
示例6
@Override
public ConsoleResult execute(String expression) {
    if (!authenticated) {
        if (expression.startsWith(":login")) {
            Pair<String, Option<String>> command = parseStringCommand(expression);
            if (!command.second().isEmpty()) {
                if (command.second().get().equals(password)) {
                    authenticated = true;
                    return new ConsoleResult(expression, one(success("Logged in")));
                } else {
                    return new ConsoleResult(expression, one(error("Invalid password")));
                }
            } else {
                return new ConsoleResult(expression, one(error("Please specify password")));
            }
        } else {
            return new ConsoleResult(expression, one(error("Please authenticate first.\n    :login <password> to authenticate.\n    :logout at the end of the session to finish.")));
        }
    } else {
        if (expression.startsWith(":logout")) {
            authenticated = false;
            return new ConsoleResult(expression, one(error("Logged out")));
        } else {
            return super.execute(expression);
        }
    }
}
 
示例7
@Override
protected Pair<K, V> getNext() throws Exception {
    if(zipper.isEmpty()) return finished();
    Pair<K, V> pair = zipper.get().pair();
    zipper = zipper.get().nextOption();
    return pair;
}
 
示例8
private Option<Pair<Class<?>, String>> completionFor(String expression) {
    Option<Pair<String, Sequence<String>>> parsedClass = parseExpression(pair(expression, Sequences.empty(String.class)));

    if (!parsedClass.isEmpty() && !parsedClass.get().second().isEmpty()) {
        return some(Pair.<Class<?>, String>pair(
                evaluator.classFrom(parsedClass.get().first()).get(),
                parsedClass.get().second().toString(".").trim()));
    } else {
        return none();
    }
}
 
示例9
private static <T> Sequence<Sequence<T>> cartesianProductPower(Sequence<T> items, int times) {
    if (times == 0)
        return items.cartesianProduct().map(Pair.functions.values()).unsafeCast();

    return cartesianProductPower(items, times - 1)
            .cartesianProduct(items)
            .map(pair -> pair.first().append(pair.second()).unique())
            .unique();
}
 
示例10
@Override
public int indexOf(Object pair) {
    int difference = difference(Unchecked.<Pair<K,V>>cast(pair).first());
    if (difference == 0) return left.size();
    if (difference < 0) return left.indexOf(pair);
    return 1 + left.size() + right.indexOf(pair);
}
 
示例11
private <T> WikiResultRenderer withCustomRenderer(Predicate<T> predicate, Renderer<T> renderer) {
    customRenderers.add(Pair.<Predicate, Renderer>pair(predicate, renderer));
    return this;
}
 
示例12
@SafeVarargs
public static Transformer transformer(Pair<String, Object>... attributes) throws TransformerConfigurationException {
    return internalTransformer(attributes);
}
 
示例13
@Override
Pair<AVLTree<K, V>, Pair<K, V>> removeLast();
 
示例14
@Test
public void canRemoveFirst() throws Exception {
    final Pair<? extends PersistentSortedMap<Integer, String>, Pair<Integer, String>> result = sortedMap(4, "Alex", 1, "Dan", 3, "Stu", 2, "Ray").removeFirst();
    assertThat(result.first(), hasExactly(pair(2, "Ray"), pair(3, "Stu"), pair(4, "Alex")));
    assertThat(result.second(), is(pair(1, "Dan")));
}
 
示例15
default <B> Parser<Pair<A, B>> then(Parser<? extends B> parser) {
    return PairParser.pair(this, parser);
}
 
示例16
static <A, B> Parser<Pair<A, B>> pair(final Parser<? extends A> parserA, final Parser<? extends B> parserB) {
    return PairParser.pair(parserA, parserB);
}
 
示例17
@Override
public Option<V> lookup(K key) {
    return list.toSequence().find(key(key)).map(Pair::getValue);
}
 
示例18
public static Predicate<? super Pair<Type, Type>> equalTo() {
    return pair -> equalTo(pair.first(), pair.second());
}
 
示例19
@Test
public void doesBlowUpWhenLessCharacters() throws Exception {
    Result<Pair<Character, Character>> result = PairParser.pair(character('A'), character('B')).parse("A");
    assertThat(result, instanceOf(Failure.class));
}
 
示例20
@Test
public void canCombineTwoParsers() throws Exception {
    Result<Pair<Character, Character>> result = PairParser.pair(character('A'), character('B')).parse("ABC");
    assertThat(result.value(), is(pair('A', 'B')));
    assertThat(result.remainder(), is(characters("C")));
}
 
示例21
private static <T> Unary<Pair<String, Sequence<String>>> overrideMessages(final T instance, final Function1<T, String> messageBuilder) {
    return keyAndMessages -> {
        String message1 = Callers.call(messageBuilder, instance);
        return pair(keyAndMessages.first(), keyAndMessages.second().map(returns1(message1)));
    };
}
 
示例22
public Sequence<Pair<String, Sequence<String>>> messages() {
    return sequence(messages);
}
 
示例23
@Override
public Pair<K, V> value() {
    return focus.head();
}
 
示例24
@Test
@SuppressWarnings("unchecked")
public void supportsFold() throws Exception {
    assertThat(map(1, "2").fold(Lists.list(pair(0, "1")), Lists.functions.<Pair<Integer, String>>add()), is(Lists.list(pair(0, "1"), pair(1, "2"))));
}
 
示例25
@Override
public <S> S fold(S seed, Function2<? super S, ? super Pair<K, V>, ? extends S> callable) {
    return toSequence().fold(seed, callable);
}
 
示例26
public static Curried2<ValidationResult, Pair<String, ? extends Iterable<String>>, ValidationResult> add() {
    return (validationResult, keyAndMessages) -> validationResult.add(keyAndMessages.first(), keyAndMessages.second());
}
 
示例27
@Override
Pair<AVLTree<K, V>, Pair<K, V>> removeFirst();
 
示例28
public static <V> Result<Sequence<Pair<String, V>>> parsePairs(Reader json) {
    return cast(Grammar.PAIRS.parse(json));
}
 
示例29
@Override
public PersistentList<Pair<K, V>> toPersistentList() {
    return PersistentList.constructors.empty();
}
 
示例30
@Override
public Pair<K, V> head() throws NoSuchElementException {
    return iterator().next();
}