import isJapanese from './isJapanese';
import isKana from './isKana';
import isKanji from './isKanji';
import tokenize from './tokenize';
const isLeadingWithoutInitialKana = (input, leading) => leading && !isKana(input[0]);
const isTrailingWithoutFinalKana = (input, leading) => !leading && !isKana(input[input.length - 1]);
const isInvalidMatcher = (input, matchKanji) =>
(matchKanji && ![...matchKanji].some(isKanji)) || (!matchKanji && isKana(input));
function stripOkurigana(input = '', { leading = false, matchKanji = '' } = {}) {
if (
!isJapanese(input) ||
isLeadingWithoutInitialKana(input, leading) ||
isTrailingWithoutFinalKana(input, leading) ||
isInvalidMatcher(input, matchKanji)
) {
return input;
}
const chars = matchKanji || input;
const okuriganaRegex = new RegExp(
leading ? `^${tokenize(chars).shift()}` : `${tokenize(chars).pop()}$`
);
return input.replace(okuriganaRegex, '');
}
export default stripOkurigana;