All Downloads are FREE. Search and download functionalities are using the official Maven repository.

goja.core.libs.Matcher Maven / Gradle / Ivy

/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright (c) 2013-2014 sagyf Yang. The Four Group.
 */

package goja.core.libs;

import goja.core.libs.base.Option;

/**
 * 

.

* * @author sagyf yang * @version 1.0 2014-09-11 13:36 * @since JDK 1.6 */ public abstract class Matcher { public static Matcher String = new Matcher() { @Override public Option match(Object o) { if (o instanceof String) { return Option.Some((String) o); } return Option.None(); } }; public static Matcher ClassOf(final Class clazz) { return new Matcher() { @Override public Option match(Object o) { if (o instanceof Option && ((Option) o).isDefined()) { o = ((Option) o).get(); } if (clazz.isInstance(o)) { return Option.Some((K) o); } return Option.None(); } }; } public static Matcher StartsWith(final String prefix) { return new Matcher() { @Override public Option match(String o) { if (o.startsWith(prefix)) { return Option.Some(o); } return Option.None(); } }; } public static Matcher Re(final String pattern) { return new Matcher() { @Override public Option match(String o) { if (o.matches(pattern)) { return Option.Some(o); } return Option.None(); } }; } public static Matcher Equals(final X other) { return new Matcher() { @Override public Option match(X o) { if (o.equals(other)) { return Option.Some(o); } return Option.None(); } }; } public abstract Option match(T o); public Option match(Option o) { if (o.isDefined()) { return match(o.get()); } return Option.None(); } public Matcher and(final Matcher nextMatcher) { final Matcher firstMatcher = this; return new Matcher() { @Override public Option match(T o) { for (R r : firstMatcher.match(o)) { return nextMatcher.match(r); } return Option.None(); } }; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy