spiegel-keyman/common/predictive-text/worker/models/common.ts
2019-07-23 08:28:06 +07:00

37 lines
No EOL
1.2 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
};
}
/**
*
* @param transform Merges one transform into another, mutating the first parameter to
* include the effects of the second.
* @param prefix
*/
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;
}
}
}