1.0.5 • Published 4 years ago

string-source-map v1.0.5

Weekly downloads
3
License
ISC
Repository
github
Last release
4 years ago

README.md

create sourcemap form give two string

install

yarn add string-source-map

demo

// @ts-ignore
import { chai, relative, expect, path, assert, util, mochaAsync, SymbolLogOutput, rootDir } from './_local-dev';
import { StringSourceMap } from 'string-source-map';
import { readFileSync } from 'fs-extra';
import diffNovelChars from 'string-source-map/lib/diff/novel';

let ssm = new StringSourceMap({
	/**
	 * 可以自行替換要使用的比對函數
	 */
	diffFunc: diffNovelChars,
});

let id = '002';
let dir = path.join(rootDir, 'test', 'res', id);

let file_src = path.join(dir, `source.txt`);
let file_target = path.join(dir, `target.txt`);

/*
// source 與 target 可以用這種方式來設定 或者 傳遞於 process() 內

ssm.source = readFileSync(path.join(dir, `source.txt`));
ssm.target = readFileSync(path.join(dir, `target.txt`));
*/

ssm.process({

	source: readFileSync(file_src),

	target: readFileSync(file_target),

});

let genPos = {
	line: 10,
	column: 5,
};

let origPos = ssm.originalPositionFor(genPos);
let genPos2 = ssm.generatedPositionFor(origPos);

/*
大多數情況下等於 generatedPositionFor
 */
let genPosAll = ssm.allGeneratedPositionsFor(origPos);

console.dir({
	genPos,
	genPos2,
	origPos,
	genPosAll,
});
/*
{
  genPos: { line: 10, column: 5 },
  genPos2: { line: 10, column: 5, lastColumn: null },
  origPos: {
    source: '2019-12-27T01:45:41.142Z',
    line: 9,
    column: 10,
    name: null
  },
  genPosAll: [ { line: 10, column: 5, lastColumn: null } ]
}
 */

console.dir(ssm.originalLines(origPos));
/*
[
  {
    source: '2019-12-27T01:39:17.780Z',
    line: 9,
    column: 10,
    name: null,
    value: '與雷伊斯(レイス)還有他的不死龍僕從激鬥後過了幾天,艾麗婭一行人返回迷宮都市。',
    value_column: '還'
  }
]
 */

console.dir(ssm.originalLineFor(genPos));
/*
[
  {
    source: '2019-12-27T01:39:17.780Z',
    line: 9,
    column: 10,
    name: null,
    value: '與雷伊斯(レイス)還有他的不死龍僕從激鬥後過了幾天,艾麗婭一行人返回迷宮都市。',
    value_column: '還'
  }
]
 */

console.dir(ssm.originalLineFor(genPosAll));
/*
[
  {
    source: '2019-12-27T01:43:52.419Z',
    line: 9,
    column: 10,
    name: null,
    value: '與雷伊斯(レイス)還有他的不死龍僕從激鬥後過了幾天,艾麗婭一行人返回迷宮都市。',
    value_column: '還'
  }
]
 */