watch-xdelta
Version:
smart-watch xdelta script
66 lines (54 loc) • 1.88 kB
JavaScript
/**
* Created by iyww on 15/9/15.
*/
;
var _regeneratorRuntime = require('babel-runtime/regenerator')['default'];
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
Object.defineProperty(exports, '__esModule', {
value: true
});
var _co = require('co');
var _co2 = _interopRequireDefault(_co);
var _babelFs = require('babel-fs');
var _babelFs2 = _interopRequireDefault(_babelFs);
/**
* 生成校验和的低16位
* @param {Number} 校验和
* @return {Object.highHex} 校验和高字节
* @return {Object.lowHex} 校验和低字节
*
*/
var checkSumToHex = function checkSumToHex(num) {
var hexStr = num.toString(16);
var highHex = parseInt(hexStr.slice(-4, -2), 16);
var lowHex = parseInt(hexStr.slice(-2), 16);
return { highHex: highHex, lowHex: lowHex };
};
exports.checkSumToHex = checkSumToHex;
/**
* 截取文件最后32个字节
* @param {String} filename 文件名称
* @return {Object} 返回的对象中包含32字节tail,以及截去tail的新文件名称
*
*/
var truncateLast32Bits = _co2['default'].wrap(_regeneratorRuntime.mark(function callee$0$0(filename) {
var buffer, tempFile;
return _regeneratorRuntime.wrap(function callee$0$0$(context$1$0) {
while (1) switch (context$1$0.prev = context$1$0.next) {
case 0:
context$1$0.next = 2;
return _babelFs2['default'].readFile(filename);
case 2:
buffer = context$1$0.sent;
tempFile = filename + '.temp';
context$1$0.next = 6;
return _babelFs2['default'].writeFile(tempFile, buffer.slice(0, -32));
case 6:
return context$1$0.abrupt('return', { tail: buffer.slice(-32), tempFile: tempFile });
case 7:
case 'end':
return context$1$0.stop();
}
}, callee$0$0, this);
}));
exports.truncateLast32Bits = truncateLast32Bits;