mirror of
https://github.com/keymanapp/keyman.git
synced 2026-09-14 11:37:43 +00:00
31 lines
No EOL
1.1 KiB
TypeScript
31 lines
No EOL
1.1 KiB
TypeScript
namespace models {
|
|
export function applyTransform(transform: Transform, context: Context): Context {
|
|
// First, get the current context
|
|
let fullLeftContext = context.left || '';
|
|
let lLen = fullLeftContext.length;
|
|
let lDel = lLen < transform.deleteLeft ? lLen : transform.deleteLeft;
|
|
|
|
let leftContext = fullLeftContext.substring(0, lLen - lDel) + (transform.insert || '');
|
|
|
|
let fullRightContext = context.right || '';
|
|
let rLen = fullRightContext.length;
|
|
let rDel = rLen < transform.deleteRight ? rLen : transform.deleteRight;
|
|
|
|
let rightContext = fullRightContext.substring(rDel);
|
|
|
|
return {
|
|
left: leftContext,
|
|
right: rightContext,
|
|
startOfBuffer: context.startOfBuffer,
|
|
endOfBuffer: context.endOfBuffer
|
|
};
|
|
}
|
|
|
|
export function prependTransform(transform: Transform, prefix: Transform) {
|
|
transform.insert = prefix.insert + transform.insert;
|
|
transform.deleteLeft += prefix.deleteLeft;
|
|
if(prefix.deleteRight) {
|
|
transform.deleteRight = (transform.deleteRight || 0) + prefix.deleteRight;
|
|
}
|
|
}
|
|
} |