diff --git a/src/lib/lyrics/parser.ts b/src/lib/lyrics/parser.ts index fed8188..1db4671 100644 --- a/src/lib/lyrics/parser.ts +++ b/src/lib/lyrics/parser.ts @@ -170,7 +170,7 @@ function tokenParserToText(p: Parser> | Parser[]>) } const singerIndicator = kleft(tok('char'), str(':')); -const translateParser = kright(str('|'), unicodeStr); +const translateParser = kright(tok('|'), unicodeStr); function lrcLine( wordDiv = ' ', legacy = false @@ -181,7 +181,7 @@ function lrcLine( ) : apply( seq( squareTS, - opt_sc(singerIndicator), + opt_sc(padded(singerIndicator)), rep_sc( seq( opt_sc(angleTS), @@ -242,6 +242,7 @@ export function parseLRC( [true, /^\]/gu, ']'], [true, /^/gu, '>'], + [true, /^\|/gu, '|'], [true, /^./gu, 'char'] ]); diff --git a/src/test/lrcParser.test.ts b/src/test/lrcParser.test.ts index 27c1e3c..791c31a 100644 --- a/src/test/lrcParser.test.ts +++ b/src/test/lrcParser.test.ts @@ -32,8 +32,12 @@ describe('LRC parser test', () => { }); it('Parses test-03.lrc', () => { const result = parseLRC(test03Text, { wordDiv: ' ', strict: true }); - console.log(result.scripts); - expect(result.scripts!![5].translation).toBe("བྲོ་ར་འདི་ལ་བྲོ་ཅིག་འཁྲབ།"); + expect(result.scripts!![5].text).toBe("བྲོ་ར་འདི་ལ་བྲོ་ཅིག་འཁྲབ།"); + expect(result.scripts!![5].translation).toBe("在舞池里舞一舞"); + expect(result.scripts!![6].text).toBe("祝祷转过千年 五色经幡飘飞"); + expect(result.scripts!![6].singer).toBe("a"); + expect(result.scripts!![11].singer).toBeUndefined(); + expect(result.scripts!![11].translation).toBe("我们在此相聚"); }); it('Rejects some invalid LRCs', () => { const cases = [ diff --git a/src/test/resources/test-03.lrc b/src/test/resources/test-03.lrc index 8edc547..20a669c 100644 --- a/src/test/resources/test-03.lrc +++ b/src/test/resources/test-03.lrc @@ -8,13 +8,13 @@ [00:47.390] 松石敲响玲珑清脆的银花 [00:51.600] 穿过玛瑙的红霞 [00:54.430] 在她眼中结编 亘久诗篇 -[01:05.440] བྲོ་ར་འདི་ལ་བྲོ་ཅིག་འཁྲབ། | 在舞池里舞一舞 -[01:08.780] 祝祷转过千年 五色经幡飘飞 +[01:05.440] a: བྲོ་ར་འདི་ལ་བྲོ་ཅིག་འཁྲབ། | 在舞池里舞一舞 +[01:08.780] a: 祝祷转过千年 五色经幡飘飞 [01:12.040] 奏起悠扬巴叶 任岁月拨弦 [01:19.130] གཞས་ར་འདི་ལ་གཞས་གཅིག་བཏང་། 我在歌坛献首歌 [01:22.330] 宫殿 塔尖 彩绘 日月 同辉 [01:25.810] 那层厚重壁垒化身 蝉翼一片 -[01:29.110] ང་ཚོ་འདི་ལ་འཛོམས་འཛོམས། 我们在此相聚 +[01:29.110] ང་ཚོ་འདི་ལ་འཛོམས་འཛོམས། | 我们在此相聚 [01:30.790] གཏན་དུ་འཛོམས་རྒྱུ་བྱུང་ན། 希望可以常聚 [01:32.510] གཏན་དུ་འཛོམས་པའི་མི་ལ། 在此相聚的人们 [01:34.120] སྙུན་གཞི་གོད་ཆགས་མ་གཏོང༌། 祝愿平安富足