node-511
Version:
Lightweight node.js wrapper for the 511.org real time driving times and transit departure APIs
92 lines (82 loc) • 4.22 kB
JavaScript
// Generated by CoffeeScript 1.7.1
(function() {
var AbstractService, GetStopsForRoute,
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
__hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
AbstractService = require('./AbstractService');
GetStopsForRoute = (function(_super) {
__extends(GetStopsForRoute, _super);
function GetStopsForRoute() {
this.invoke = __bind(this.invoke, this);
return GetStopsForRoute.__super__.constructor.apply(this, arguments);
}
GetStopsForRoute.prototype.invoke = function(parameters, callback) {
var params;
if (parameters == null) {
parameters = {};
}
if (callback == null) {
callback = function() {};
}
if (!parameters.route && !parameters.routeIDF) {
return callback(new Error("Call to service " + this.constructor.name + " must include parameter route or routeIDF"));
}
if (parameters.route) {
params = [];
if (parameters.route.agencyName) {
params.push(parameters.route.agencyName);
}
if (parameters.route.routeCode) {
params.push(parameters.route.routeCode);
}
if (parameters.route.routeDirectionCode) {
params.push(parameters.route.routeDirectionCode);
}
parameters.routeIDF = params.join('~');
delete parameters.route;
}
return GetStopsForRoute.__super__.invoke.call(this, parameters, callback);
};
GetStopsForRoute.prototype._parse = function(obj) {
var agency, name, routes, stops, _A, _R, _S, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref10, _ref11, _ref12, _ref13, _ref14, _ref15, _ref16, _ref17, _ref18, _ref19, _ref2, _ref20, _ref21, _ref22, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9;
_ref4 = (_ref = obj != null ? (_ref1 = obj.RTT) != null ? (_ref2 = _ref1.AgencyList) != null ? (_ref3 = _ref2[0]) != null ? _ref3.Agency : void 0 : void 0 : void 0 : void 0) != null ? _ref : [];
for (_i = 0, _len = _ref4.length; _i < _len; _i++) {
_A = _ref4[_i];
if ((_A != null ? (_ref5 = _A['$']) != null ? _ref5.Name : void 0 : void 0)) {
name = _A != null ? (_ref6 = _A['$']) != null ? _ref6.Name : void 0 : void 0;
agency = {
HasDirection: 'True' === (_A != null ? (_ref7 = _A['$']) != null ? _ref7.HasDirection : void 0 : void 0),
Mode: (_ref8 = _A != null ? (_ref9 = _A['$']) != null ? _ref9.Mode : void 0 : void 0) != null ? _ref8 : null
};
routes = {};
_ref13 = (_ref10 = _A != null ? (_ref11 = _A.RouteList) != null ? (_ref12 = _ref11[0]) != null ? _ref12.Route : void 0 : void 0 : void 0) != null ? _ref10 : [];
for (_j = 0, _len1 = _ref13.length; _j < _len1; _j++) {
_R = _ref13[_j];
if ((_R != null ? (_ref14 = _R['$']) != null ? _ref14.Name : void 0 : void 0)) {
routes[_R['$'].Name] = {
Code: (_ref15 = _R != null ? (_ref16 = _R['$']) != null ? _ref16.Code : void 0 : void 0) != null ? _ref15 : null
};
}
stops = [];
_ref19 = (_ref17 = _R != null ? (_ref18 = _R.StopList[0]) != null ? _ref18.Stop : void 0 : void 0) != null ? _ref17 : [];
for (_k = 0, _len2 = _ref19.length; _k < _len2; _k++) {
_S = _ref19[_k];
if (((_ref20 = _S['$']) != null ? _ref20.name : void 0)) {
stops.push({
Name: _S['$'].name,
StopCode: (_ref21 = (_ref22 = _S['$']) != null ? _ref22.StopCode : void 0) != null ? _ref21 : null
});
}
}
routes[_R['$'].Name].Stops = stops;
}
agency.Routes = routes;
}
}
return agency;
};
return GetStopsForRoute;
})(AbstractService);
module.exports = GetStopsForRoute;
}).call(this);