astro-ghostcms/.pnpm-store/v3/files/df/fb88a427c1ebb3c1f4d3a1f2ecf...

44 lines
1.3 KiB
Plaintext
Raw Normal View History

2024-02-14 14:10:47 +00:00
/**
* Arabic sentence context checkers
*/
import { isArabicChar, isWhiteSpace, isTashkeelArabicChar } from '../../../char';
function arabicSentenceStartCheck(contextParams) {
const char = contextParams.current;
const prevChar = contextParams.get(-1);
return (
// ? an arabic char preceded with a non arabic char
(isArabicChar(char) || isTashkeelArabicChar(char)) &&
!isArabicChar(prevChar)
);
}
function arabicSentenceEndCheck(contextParams) {
const nextChar = contextParams.get(1);
switch (true) {
case nextChar === null:
return true;
case (!isArabicChar(nextChar) && !isTashkeelArabicChar(nextChar)):
const nextIsWhitespace = isWhiteSpace(nextChar);
if (!nextIsWhitespace) return true;
if (nextIsWhitespace) {
let arabicCharAhead = false;
arabicCharAhead = (
contextParams.lookahead.some(
c => isArabicChar(c) || isTashkeelArabicChar(c)
)
);
if (!arabicCharAhead) return true;
}
break;
default:
return false;
}
}
export default {
startCheck: arabicSentenceStartCheck,
endCheck: arabicSentenceEndCheck
};