All files / tar/lib winchars.js

100% Statements 12/12
100% Branches 0/0
100% Functions 7/7
100% Lines 8/8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24          9x               9x 45x   45x 45x   9x 30x 20x    
'use strict'
 
// When writing files on Windows, translate the characters to their
// 0xf000 higher-encoded versions.
 
const raw = [
  '|',
  '<',
  '>',
  '?',
  ':'
]
 
const win = raw.map(char =>
  String.fromCharCode(0xf000 + char.charCodeAt(0)))
 
const toWin = new Map(raw.map((char, i) => [char, win[i]]))
const toRaw = new Map(win.map((char, i) => [char, raw[i]]))
 
module.exports = {
  encode: s => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s),
  decode: s => win.reduce((s, c) => s.split(c).join(toRaw.get(c)), s)
}