timetable
Version:
Using GTFS and other sources to produce beautiful and usable timetables for public transport.
126 lines (98 loc) • 3.09 kB
JavaScript
// 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);