1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.VSOP = undefined;
|
7 |
|
8 | var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
|
9 |
|
10 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); |
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 | var _fs = require('fs');
|
20 |
|
21 | var _fs2 = _interopRequireDefault(_fs);
|
22 |
|
23 | var _path = require('path');
|
24 |
|
25 | var _path2 = _interopRequireDefault(_path);
|
26 |
|
27 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
28 |
|
29 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
30 |
|
31 | var REGVSOP = /^\sVSOP87.*VARIABLE (\d) \((LBR|XYZ)\).{1,20}\*T\*\*(\d)\s{1,20}(\d{1,20}) TERMS/;
|
32 |
|
33 |
|
34 | var planets = ['mercury', 'venus', 'earth', 'mars', 'jupiter', 'saturn', 'uranus', 'neptune'];
|
35 |
|
36 |
|
37 | var exts = ['mer', 'ven', 'ear', 'mar', 'jup', 'sat', 'ura', 'nep'];
|
38 |
|
39 | var toFloat = function toFloat(f) {
|
40 | return parseFloat(f, 10);
|
41 | };
|
42 |
|
43 | var VSOP = exports.VSOP = function () {
|
44 | |
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 | function VSOP(planet, dirname, opts) {
|
54 | _classCallCheck(this, VSOP);
|
55 |
|
56 | planet = planet.toLowerCase();
|
57 | if (~planets.indexOf(planet)) {
|
58 | opts = opts || {};
|
59 | this.planet = planet;
|
60 | this.dirname = dirname;
|
61 | this.type = opts.type || 'B';
|
62 | } else {
|
63 | throw new Error('Invalid planet ' + planet);
|
64 | }
|
65 | }
|
66 |
|
67 |
|
68 |
|
69 |
|
70 | _createClass(VSOP, [{
|
71 | key: '_getExt',
|
72 | value: function _getExt() {
|
73 | return exts[planets.indexOf(this.planet)];
|
74 | }
|
75 |
|
76 |
|
77 |
|
78 | }, {
|
79 | key: 'load',
|
80 | value: function load(cb) {
|
81 | var _this = this;
|
82 |
|
83 | var ext = this._getExt();
|
84 | var filename = _path2.default.resolve(this.dirname, 'VSOP87' + this.type + '.' + ext);
|
85 | _fs2.default.readFile(filename, 'utf8', function (err, data) {
|
86 | if (!err) {
|
87 | _this.parse(data);
|
88 | }
|
89 | cb(err);
|
90 | });
|
91 | }
|
92 |
|
93 |
|
94 |
|
95 | }, {
|
96 | key: 'loadSync',
|
97 | value: function loadSync() {
|
98 | var ext = this._getExt();
|
99 | var filename = _path2.default.resolve(this.dirname, 'VSOP87' + this.type + '.' + ext);
|
100 | var data = _fs2.default.readFileSync(filename, 'utf8');
|
101 | this.parse(data);
|
102 | }
|
103 |
|
104 | |
105 |
|
106 |
|
107 |
|
108 |
|
109 | }, {
|
110 | key: 'parse',
|
111 | value: function parse(data) {
|
112 | var _this2 = this;
|
113 |
|
114 | this.data = {};
|
115 | var lines = data.split(/\n/);
|
116 | var varName = void 0;
|
117 | var ref = void 0;
|
118 |
|
119 | lines.forEach(function (line) {
|
120 | if (REGVSOP.test(line)) {
|
121 | var _line$match = line.match(REGVSOP),
|
122 | _line$match2 = _slicedToArray(_line$match, 4),
|
123 | varCnt = _line$match2[1],
|
124 | type = _line$match2[2],
|
125 | pos = _line$match2[3];
|
126 |
|
127 | varName = type.split('')[varCnt - 1];
|
128 | if (!_this2.data[varName]) _this2.data[varName] = {};
|
129 | ref = _this2.data[varName][pos] = [];
|
130 | } else {
|
131 | if (line.length > 79) {
|
132 | ref.push([toFloat(line.substr(79, 97).trim()), toFloat(line.substr(98, 111).trim()), toFloat(line.substr(111, 131).trim())]);
|
133 | }
|
134 | }
|
135 | });
|
136 | }
|
137 |
|
138 | |
139 |
|
140 |
|
141 |
|
142 |
|
143 |
|
144 |
|
145 |
|
146 |
|
147 |
|
148 | }, {
|
149 | key: 'getData',
|
150 | value: function getData() {
|
151 | return this.data;
|
152 | }
|
153 | }]);
|
154 |
|
155 | return VSOP;
|
156 | }();
|
157 |
|
158 | exports.default = {
|
159 | VSOP: VSOP
|
160 | }; |
\ | No newline at end of file |