-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathformatCompassDatFile.ts
More file actions
31 lines (30 loc) · 1.08 KB
/
formatCompassDatFile.ts
File metadata and controls
31 lines (30 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { UnitType, Angle } from '@speleotica/unitized'
import formatCompassTripHeader from './formatCompassTripHeader'
import formatCompassShot from './formatCompassShot'
import { CompassDatFile } from './CompassDatFile'
export default function formatCompassDatFile<Inc extends UnitType<Inc> = Angle>(
dat: CompassDatFile
): string
export default function formatCompassDatFile<Inc extends UnitType<Inc> = Angle>(
dat: CompassDatFile,
options: { write: (data: string) => any }
): void
export default function formatCompassDatFile<Inc extends UnitType<Inc> = Angle>(
dat: CompassDatFile,
options?: {
write: (data: string) => any
}
): string | void {
if (options && options.write) {
for (const { header, shots } of dat.trips) {
options.write(formatCompassTripHeader(header))
const formatShot = formatCompassShot(header)
shots.forEach((shot) => options.write(formatShot(shot)))
options.write('\f\r\n')
}
} else {
const chunks: Array<string> = []
formatCompassDatFile(dat, { write: (data: string) => chunks.push(data) })
return chunks.join('')
}
}