2013-03-30 6 views
29

Hubot ist Githubs Chatroomroboter. Es ist ein großartiges Werkzeug, außer dass niemand in unserer Firma in Coffeescript schreiben will ... aber es scheint, dass wir Skripte für Hubot nicht in einfachem altem Javascript schreiben können.
Ist das wahr? Gibt es etwas, das mir hier fehlt? Coffeescript ist "nur Javascript", aber ich kann kein Javascript damit verwenden?
EDIT
Ich war 2 absurd einfach, Fehler zu machen:
- kopierte ich die Coffeescript Kommentarsyntax in meine JS-Datei
- ich das Skript unter dem hubot-Skripte node_module hatte, anstatt nur unter dem/scripts/Verzeichnis im Hauptprojekt.Kann ich Skripte für Hubot in Javascript schreiben?

Funktioniert jetzt perfekt.

Antwort

20

CoffeeScript ist in JavaScript kompiliert, aber es ist keine Obermenge von JavaScript, daher ist JavaScript-Code nicht unbedingt gültiger CoffeeScript-Code.

Doch nach at the source suchen, sieht es aus wie Hubot beide annehmen können:

# Public: Loads a file in path. 
    # 
    # path - A String path on the filesystem. 
    # file - A String filename in path on the filesystem. 
    # 
    # Returns nothing. 
    loadFile: (path, file) -> 
    ext = Path.extname file 
    full = Path.join path, Path.basename(file, ext) 
    if ext is '.coffee' or ext is '.js' 
     try 
     require(full) @ 
     @parseHelp "#{path}/#{file}" 
     catch error 
     @logger.error "Unable to load #{full}: #{error.stack}" 
     process.exit(1) 

Diese Methode wird von loadHubotScripts genannt wird.

+0

Vielen Dank, dass Code (was ich Probleme bei der Suche hatte) führte mich zu meinem Problem. Ich hatte Dateien an der falschen Stelle und ich kopierte die Coffeescript Kommentarsyntax in meine JS-Datei. –

28

Ja, Sie können Ihre Hubot-Skripte in reinem JavaScript schreiben. Im Anschluss ist ein einfaches Skript hubot in reinem JavaScript geschrieben und unter dem /scripts/ Verzeichnis meines maßgeschneiderten hubot setzen:

// Description: 
// holiday detector script 
// 
// Dependencies: 
// None 
// 
// Configuration: 
// None 
// 
// Commands: 
// hubot is it weekend ? - returns whether is it weekend or not 
// hubot is it holiday ? - returns whether is it holiday or not 

module.exports = function(robot) { 
    robot.respond(/is it (weekend|holiday)\s?\?/i, function(msg){ 
     var today = new Date(); 

     msg.reply(today.getDay() === 0 || today.getDay() === 6 ? "YES" : "NO"); 
    }); 
} 
+2

Verwenden Sie diese Website, um Ihre Kaffeeskripte in js http://js2.coffee/ umzuwandeln :) –

Verwandte Themen