src/frames/frame-comm.ts   A
last analyzed

Complexity

Total Complexity 3
Complexity/F 0

Size

Lines of Code 27
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 20
mnd 3
bc 3
fnc 0
dl 0
loc 27
rs 10
bpm 0
cpm 0
noi 0
c 0
b 0
f 0
1
import { TextEncoding } from "../definitions/Encoding"
2
import { FrameBuilder } from "../FrameBuilder"
3
import { FrameReader } from "../FrameReader"
4
import { Comment } from "../types/TagFrames"
5
import { validateLanguageCode } from "./util"
6
7
export const COMM = {
8
    create: (data: Comment): Buffer => {
9
        if(data.text == undefined) {
10
            throw new TypeError("Missing text from 'Comment' frame")
11
        }
12
        return new FrameBuilder("COMM", TextEncoding.UTF_16_WITH_BOM)
13
            .appendText(validateLanguageCode(data.language))
14
            .appendTerminatedTextWithFrameEncoding(data.shortText ?? "")
15
            .appendTerminatedTextWithFrameEncoding(data.text)
16
            .getBufferWithPartialHeader()
17
    },
18
    read: (buffer: Buffer): Comment => {
19
        const reader = new FrameReader(buffer, {consumeEncodingByte: true})
20
        return {
21
            language: reader.consumeText({size: 3}),
22
            shortText: reader.consumeTerminatedTextWithFrameEncoding(),
23
            text: reader.consumeTextWithFrameEncoding()
24
        }
25
    }
26
}
27