diff --git a/.gitignore b/.gitignore index 55c0e0f..3d8465f 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ hubot.lua run.sh run_telegram.sh *.pub +config/ coverage/ .telegram/ telegram.config diff --git a/README.md b/README.md index 1e1698d..1febc7d 100644 --- a/README.md +++ b/README.md @@ -65,8 +65,8 @@ Asjon dispone di alcuni test d'integrità nella cartella `test/`. Per eseguirli, occorre: 1. installare [mocha](http://mochajs.org) tramite `npm install -g mocha` (potrebbe essere necessario sudo) -1. installare le dipendenze di sviluppo tramite `npm install --dev` 1. lanciare i test tramite `npm test` dalla cartella della repo +1. opzionalmente è possibile generare i report di copertura dei test usando `npm run coverage-html` o `npm run coverage-json` in base al formato desiderato. __Nota Bene:__ è opportuno __eseguire sempre i test d'integrità prima di contribuire una modifica__. Ancora meglio sarebbe allegare dei test di integrità insieme alle nuove funzioni aggiunte diff --git a/bin/hubot b/bin/hubot index 2527054..8363ed1 100755 --- a/bin/hubot +++ b/bin/hubot @@ -2,7 +2,6 @@ set -e -PYTHON=python2 npm install export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH" DEBUG=nightmare PYTHON=python2 node_modules/.bin/hubot --name "asjon" --alias "assa" "$@" diff --git a/package.json b/package.json index 3f02a9c..ed8624a 100644 --- a/package.json +++ b/package.json @@ -35,11 +35,6 @@ "weak": "^0.4.0", "wolfram": "^0.3.1" }, - "config": { - "blanket": { - "pattern": "" - } - }, "scripts": { "coverage-html": "mkdir -p coverage && mocha test/ --require coffee-coverage/register --compilers coffee:coffee-script/register -R html-cov scripts/ > coverage/coverage.html", "coverage-json": "mkdir -p coverage && mocha test/ --require coffee-coverage/register --compilers coffee:coffee-script/register -R json-cov scripts/ > coverage/coverage.json", diff --git a/scripts/scuola.coffee b/scripts/scuola.coffee new file mode 100644 index 0000000..466910f --- /dev/null +++ b/scripts/scuola.coffee @@ -0,0 +1,85 @@ +# Description: +# utilità per orario scolastico e interrogazioni +# +# Dependencies: +# "moment": "2.10.2" +# +# Configuration: +# None +# +# Commands: +# hubot cosa abbiamo domani? +# +# Author: +# Enrico Fasoli (fazo96) + +moment = require 'moment' +fs = require 'fs' + +moment.locale 'it' + +interr = undefined +orario = undefined + +dateformats = ['YYYY-MM-DD','DD-MM-YYYY',"DD MMMM YYYY", "DD MMMM","DD"] + +fs.readFile './config/orario.json', (err, data) -> + try + orario = JSON.parse data + catch e + console.log e + orario = undefined + +fs.readFile './config/interrogazioni.json', (err, data) -> + try + interr = JSON.parse data + catch e + console.log e + interr = undefined + interr.sort (a,b) -> + if moment(a.day,'YYYY-MM-DD').isBefore(b.day,'day') + return -1 + if moment(a.day,'YYYY-MM-DD').isAfter(b.day,'day') + return 1 + return 0 + +module.exports = (robot) -> + robot.respond /(?:che )?cosa abbiamo (?:per )?(domani|oggi)(?:\?)?/i, (res) -> + if res.match[1] is 'domani' + index = moment().add(1, 'days').weekday() + else index = moment().weekday() + if orario?[index]? + res.send orario[index].join ', ' + else res.send 'non ho informazioni per domani' + + robot.respond /(?:dimmi )?(?:l\')?orario(?: scolastico)?/i, (res) -> + unless orario?.push? + return res.send 'non conosco l\'orario scolastico :(' + ris = orario.map (x,i) -> + moment().weekday(i).format('dddd')+': '+x.join(', ') + res.send 'Orario scolastico della 5IA\n'+ris.join('\n') + + robot.respond /interrogat(?:o|i) (oggi|domani|il (.+))(?:\?)?/i, (res) -> + unless interr?.push? + return res.send 'non conosco gli interrogati :(' + if res.match[1] is 'domani' + day = moment().add(1, 'days') + else if res.match[1] is 'oggi' + day = moment() + else + q = res.match[1].replace(/il|\?/i, '') + day = moment q, dateformats + ris = interr.filter (x) -> + moment(x.day).isSame day, 'day' + ris = ris.map (x) -> + '('+x.day+') '+x.materia+': '+x.list.join(', ') + res.send ris.join('\n') or 'nessun interrogato' + + robot.respond 'interrogati', (res) -> + unless interr?.push? + res.send 'non conosco gli interrogati :(' + ris = interr.map (x) -> + gg = moment(x.day, 'YYYY-MM-DD') + s = gg.format('dddd Do MMMM YYYY')+' - '+gg.fromNow() + '('+s+') '+x.materia+': '+x.list.join(', ') + res.send ris.join('\n') or 'nessun interrogato'