
com.cinchapi.common.base.SplitOption Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of accent4j Show documentation
Show all versions of accent4j Show documentation
Accent4J is a suite of libraries, helpers and data structures that make Java programming idioms more fluent.
/*
* Copyright (c) 2013-2017 Cinchapi Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.cinchapi.common.base;
/**
* An option that can be passed to a {@link StringSplitter} to specify
* additional split behaviour to supplement the delimiter (i.e. always splitting
* on a newline).
*
* @author Jeff Nelson
*/
public enum SplitOption {
/**
* Split on a newline character sequence (\n, \r\n, \r) in addition to
* splitting on the delimiter. This is useful for simulating the reading a
* string, line by line while also splitting on delimiters within that line
* without traversing the string multiple times.
*/
SPLIT_ON_NEWLINE(0),
/**
* In addition to splitting on the delimiter, split on an any kind of
* parenthesis and return the same as an individual token.
*/
TOKENIZE_PARENTHESIS(1),
/**
* For the {@link QuoteAwareStringSplitter} drop any quotes that surround a
* quoted sequence that may contain a delimiter.
*/
DROP_QUOTES(2),
/**
* Trim any leading and trailing whitespace from each token.
*/
TRIM_WHITESPACE(3);
/**
* A constant that signifies no split options should be passed to the
* {@link StringSplitter}.
*/
public static SplitOption[] NONE = new SplitOption[] {};
/**
* The bit mask to use when flipping/checking the appropriate bit to
* determine if this option is enabled.
*/
private final int mask;
/**
* Construct a new instance.
*
* @param mask
*/
private SplitOption(int mask) {
this.mask = mask;
}
/**
* Return the bit mask for this {@link SplitOption}. Always use this as
* opposed to {@link #ordinal()}.
*
* @return the bit mask
*/
public int mask() {
return mask;
}
/**
* Given a {@link StringSplitter} instance, check to see if this
* {@link SplitOption option} is enabled. An option can be enabled by
* passing it to the
* {@link StringSplitter#StringSplitter(String, char, SplitOption...)
* constructor}.
*
* @param splitter the {@link StringSplitter} to check
* @return {@code true} if the bit corresponding to this option is set in
* {@code options}
*/
public boolean isEnabled(StringSplitter splitter) {
// splitter.options is the value that results from enabling the
// appropriate bits for all the enabled values.
return (splitter.options & (1 << mask)) != 0;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy