UNPKG

timetable

Version:

Using GTFS and other sources to produce beautiful and usable timetables for public transport.

126 lines (98 loc) 3.09 kB
// Generated by CoffeeScript 1.7.1 (function() { var $, P, TRM, alert, badge, debug, echo, help, info, log, new_db, njs_fs, options, rainbow, rpr, test_folder_exists, urge, warn, whisper; njs_fs = require('fs'); TRM = require('coffeenode-trm'); rpr = TRM.rpr.bind(TRM); badge = 'TIMETABLE/REGISTRY'; log = TRM.get_logger('plain', badge); info = TRM.get_logger('info', badge); whisper = TRM.get_logger('whisper', badge); alert = TRM.get_logger('alert', badge); debug = TRM.get_logger('debug', badge); warn = TRM.get_logger('warn', badge); help = TRM.get_logger('help', badge); urge = TRM.get_logger('urge', badge); echo = TRM.echo.bind(TRM); rainbow = TRM.rainbow.bind(TRM); options = require('../options'); new_db = require('level'); P = require('pipedreams'); $ = P.$.bind(P); test_folder_exists = function(route) { var is_folder; if (!njs_fs.existsSync(route)) { return false; } is_folder = (njs_fs.statSync(route)).isDirectory(); if (!is_folder) { throw new Error("route exists but is not a folder: " + route); } return true; }; this.new_registry = function(route) { if (route == null) { route = options['levelup']['route']; } return new_db(route, options['levelup']['new']); }; this._new_registry = function(route) { var folder_exists, registry; if (route == null) { route = options['levelup']['route']; } folder_exists = test_folder_exists(route); registry = this.new_registry(route); return [folder_exists, registry]; }; this.close = function(registry, handler) { return registry.close((function(_this) { return function(error) { help('registry closed'); return handler(error); }; })(this)); }; this.flush = function(registry, handler) { return registry.close((function(_this) { return function(error) { if (error != null) { return handler(error); } return registry.open(function(error) { help('registry flushed'); return handler(error, registry); }); }; })(this)); }; this.register = function(registry, record, handler) { var id, value; id = record['id']; if (id == null) { throw new Error("unable to register record without ID:\n" + (rpr(record))); } /* Records whose only attribute is the ID field are replaced by `true`: */ value = (Object.keys(record)).length === 1 ? true : record; return registry.put(id, value, (function(_this) { return function(error) { if (error != null) { return handler(error); } return handler(null, record); }; })(this)); }; this.$register = function(registry) { return $((function(_this) { return function(record, handler) { return _this.register(registry, record, function(error) { if (error != null) { return handler(error); } return handler(null, record); }); }; })(this)); }; }).call(this);