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

org.raml.ramltopojo.EcmaPattern Maven / Gradle / Ivy

There is a newer version: 1.0.8
Show newest version
package org.raml.ramltopojo;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created. There, you have it.
 */
public class EcmaPattern {

    static private final Pattern ECMA_WITH_SLASHES = Pattern.compile("^/(.*)/([a-z]*)$");
    private final Pattern pattern;

    public EcmaPattern(Pattern pattern) {

        this.pattern = pattern;
    }

    public static boolean isSlashedPattern(String name) {
        return ECMA_WITH_SLASHES.matcher(name).matches();
    }

    public String asJavaPattern() {

        return pattern.toString();
    }

    public static EcmaPattern fromString(String ecmaPattern) {


        Matcher matcher = ECMA_WITH_SLASHES.matcher(ecmaPattern);
        if ( matcher.matches()) {

            return ecmaToJavaRegexp(matcher.group(1), matcher.group(2));
        } else {

            return ecmaToJavaRegexp(ecmaPattern, "");
        }
    }

    private static EcmaPattern ecmaToJavaRegexp(String ecmaPattern, String options) {
        int flags = 0;

        if ( options.contains("i") ) {
            flags |= Pattern.CASE_INSENSITIVE;
        }

        if ( options.contains("m") ) {
            flags |= Pattern.MULTILINE;
        }

        return new EcmaPattern(Pattern.compile(ecmaPattern, flags));
    }

    public int flags() {
        return pattern.flags();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy