使用库https://github.com/kpdecker/jsdiff 并打电话:
function structuredPatch(oldFileName: string, newFileName: string, oldStr: string, newStr: string,
oldHeader: string, newHeader: string, options?: {context: number}): IUniDiff;
如何将 callback 传递给它?
在版本 6.0.0 之前,
callback
选项仅受 diffFoo
系列函数支持,如 diffChars
、diffWords
等,而不受 structuredPatch
等补丁创建函数支持。因此,当您在 2020 年提出这个问题时,您想做的事情根本没有得到支持。
但是,我在 v6.0.0 中添加了对异步使用补丁创建函数的支持,因此,如果您升级到最新版本的 jsdiff,您现在可以在异步模式下调用
structuredPatch
,如下所示:
structuredPatch(
'oldfile', 'newfile',
'foo\nbar\nbaz\n', 'foo\nbarcelona\nbaz\n',
'header1', 'header2',
{
callback: (res) => {
console.log(res);
// Will log:
// {
// oldFileName: 'oldfile', newFileName: 'newfile',
// oldHeader: 'header1', newHeader: 'header2',
// hunks: [{
// oldStart: 1, oldLines: 3, newStart: 1, newLines: 3,
// lines: [' foo', '-bar', '+barcelona', ' baz']
// }]
// }
}
);