Created
April 23, 2014 06:07
-
-
Save suneo3476/11204272 to your computer and use it in GitHub Desktop.
103行目でTypeError: Cannot call method 'getMinutes' of undefined…何故だ。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module.exports.pattern = '^.?@%me% .+'; | |
module.exports.main = function(twi, data, cfg){ | |
console.log('ENTETSUBUS called'); | |
var BOT_ID = cfg.my_screen_name; | |
var twUserId = data.user.screen_name; | |
var keyword = data.text.replace(new RegExp('^.?@' + BOT_ID + ' '), ''); | |
var days = ['日','月','火','水','木','金','土']; | |
var day = days[(new Date()).getDay()]; | |
var isWeekend = ''; | |
var isHoliday = require('./japanese.holiday.js'); | |
switch(day){ | |
case '日': | |
case '土': | |
isWeekend = '土日祝日'; | |
break; | |
case '月': | |
case '火': | |
case '水': | |
case '木': | |
case '金': | |
var date = new Date(); | |
if( isHoliday(date.getFullYear(), date.getMonth()+1, date.getDay(), true) ) | |
isWeekend = '土日祝日'; | |
else | |
isWeekend = '月~金'; | |
break; | |
} | |
//keywordで検索した結果がコールバック関数の引数resultとして返ってきます | |
search(keyword, function(result){ | |
if(result.length == 0 || result[0] === undefined) return; | |
return; | |
var replyStr = '@' + twUserId + ' '; | |
var part = result.shift(); | |
while(part !== undefined && (replyStr + part).length < 138 ){ | |
replyStr += ' | ' + part; | |
console.log(part); | |
part = result.shift(); | |
} | |
if(result.length > 0) | |
replyStr += 'ほか'; | |
twi.updateStatus(replyStr, function (error,data) { | |
if(!(error && error.statusCode)){ | |
console.log('updateStatus done'); | |
}else{ | |
console.log(error); | |
console.log('updateStatus failed'); | |
} | |
}); | |
}); | |
//指定したキーワードを含むバス停から出発するバスの行き先ごとの-10分~+20分までの時刻を検索 | |
//keyword=六間坂上: | |
//[六間坂上->浜松駅] ゆりの木通り経由 16:51 17:00 17:04 17:14 | 常盤町経由 17:03(下) | 尾張町経由 17:02(下) | |
function search(keyword, callback) { | |
require('date-utils'); | |
var csv = require('ya-csv'); | |
var reader = csv.createCsvFileReader('./commands/entetsu/entetsubus.csv'); | |
var data = []; | |
reader.on('data', function(record) { | |
data.push(record); | |
}).on('end', function() { | |
var result = []; | |
//現在時刻 | |
var date = new Date(); | |
var hour = 12;//date.toFormat('HH24'); | |
var minute = date.toFormat('MI'); | |
console.log(hour+':'+minute); | |
//一致したものをresultにつめて | |
for(var i = 1; i < data.length; i++){ | |
if( !(new RegExp('' + keyword.replace(/\W/g,'\\$&') + '').test(data[i][0])) ) continue; // バス停フィルタ | |
if( data[i][4] != isWeekend ) continue; // 曜日フィルタ | |
if( data[i][2] < hour || data[i][2] > hour+2) continue; // 時間フィルタ | |
result.push(data[i]); | |
} | |
//時・分を時刻に展開して | |
for(var i = 0; i < result.length; i++){ | |
var newDate = result[i][3].split(' ').map(function(str){ | |
return result[i][2]+':'+str; | |
}); | |
result[i].push(newDate); // result[i][5] | |
} | |
//時刻を経由地ごとでマージしてソートして | |
for(var i = 0; i < result.length-1; i++){ | |
for(var j = 1; j < result.length; j++){ | |
if(result[i][1] == result[j][1]){ | |
Array.prototype.push.apply(result[i][5],result[j][5]); | |
result[i][5].sort(); | |
result.splice(j,1); | |
} | |
} | |
} | |
//+5本まで取り出して | |
date = new Date(); | |
console.log(date.get.getMinutes()); | |
//TypeError: Cannot call method 'getMinutes' of undefined | |
for(var i = 0; i < result.length; i++){ | |
//TODO! | |
} | |
//コールバック! | |
callback(result); | |
}); | |
}; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment