UNPKG

query-mobile-phone-area

Version:
110 lines (93 loc) 2.32 kB
/** * 转换CSV数据库 * * @author Zongmin Lei <leizongmin@gmail.com> */ var fs = require('fs'); var path = require('path'); var debug = require('debug')('query-mobile-phone-area'); var data = { number: {}, area: {}, $area: {}, $$area: 0, type: {}, $type: {}, $$type: 0 }; function parseLine (line) { return line.split(',').map(function (item) { item = item.trim(); if (item[0] === '"' && item[item.length - 1]) item = item.slice(1, -1); return item; }); } function formatId (id) { return id.toString(32); } function getAreaId (name) { var id; if (!data.$area[name]) { id = formatId(++data.$$area); data.$area[name] = id; data.area[id] = name; } else { id = data.$area[name]; } return id; } function getTypeId (name) { var id; if (!data.$type[name]) { id = formatId(++data.$$type); data.$type[name] = id; data.type[id] = name; } else { id = data.$type[name]; } return id; } function setNumber (number, area, type) { number = number.toString(); var i = parseInt(number.slice(0, 3), 10); var j = parseInt(number.slice(3), 10); if (!data.number[i]) data.number[i] = []; data.number[i][j] = [area, type]; } function loadFromFile (inFile) { fs.readFileSync(inFile).toString().split('\n').slice(1).forEach(function (line, i) { var item = parseLine(line); if (item.length < 8) return; var number = item[0] + '' + item[1]; var area = item[2] + ' ' + item[3]; var type = item[6]; if (area && type) { var areaId = getAreaId(area); var typeId = getTypeId(type); setNumber(number, areaId, typeId); } }); } function saveToFile (outFile) { var save = []; save.push('type'); for (var i in data.type) { save.push([i, data.type[i]].join(',')); } save.push('----------'); save.push('area'); for (var i in data.area) { save.push([i, data.area[i]].join(',')); } save.push('----------'); for (var i in data.number) { save.push('number-' + i); for (var j = 0; j < data.number[i].length; j++) { save.push(data.number[i][j]); } save.push('----------'); } fs.writeFileSync(outFile, save.join('\n')); } loadFromFile(path.resolve(__dirname, '../data/mobiles.csv')); saveToFile(path.resolve(__dirname, '../data/mobilephones.txt'));