MCPcopy Create free account
hub / github.com/CoderLine/alphaTab / _parse

Method _parse

packages/alphatab/src/model/Lyrics.ts:46–132  ·  view source on GitHub ↗
(str: string, p: number, _chunks: string[], skipEmptyEntries: boolean)

Source from the content-addressed store, hash-verified

44 }
45
46 private _parse(str: string, p: number, _chunks: string[], skipEmptyEntries: boolean): void {
47 if (!str) {
48 return;
49 }
50
51 let state: LyricsState = LyricsState.Begin;
52 let next: LyricsState = LyricsState.Begin;
53 let skipSpace: boolean = false;
54 let start: number = 0;
55
56 while (p < str.length) {
57 const c: number = str.charCodeAt(p);
58 switch (state) {
59 case LyricsState.IgnoreSpaces:
60 switch (c) {
61 case Lyrics._charCodeLF:
62 case Lyrics._charCodeCR:
63 case Lyrics._charCodeTab:
64 break;
65 case Lyrics._charCodeSpace:
66 if (!skipSpace) {
67 state = next;
68 continue;
69 }
70 break;
71 default:
72 skipSpace = false;
73 state = next;
74 continue;
75 }
76 break;
77 case LyricsState.Begin:
78 switch (c) {
79 case Lyrics._charCodeBrackedOpen:
80 state = LyricsState.Comment;
81 break;
82 default:
83 start = p;
84 state = LyricsState.Text;
85 continue;
86 }
87 break;
88 case LyricsState.Comment:
89 switch (c) {
90 case Lyrics._charCodeBrackedClose:
91 state = LyricsState.Begin;
92 break;
93 }
94 break;
95 case LyricsState.Text:
96 switch (c) {
97 case Lyrics._charCodeDash:
98 state = LyricsState.Dash;
99 break;
100 case Lyrics._charCodeCR:
101 case Lyrics._charCodeLF:
102 case Lyrics._charCodeSpace:
103 const txt: string = str.substr(start, p - start);

Callers 1

finishMethod · 0.95

Calls 1

_addChunkMethod · 0.95

Tested by

no test coverage detected