2013-03-30 13 views
29

Hubot jest robotem czatowym Github. To wspaniałe narzędzie, z tym wyjątkiem, że nikt w naszej firmie nie chce pisać w Coffeescript .... ale wygląda na to, że nie możemy pisać skryptów dla Hubota w zwykłym starym Javascript.
Czy to prawda? Czy jest tu coś, czego mi brakuje? Coffeescript jest "tylko javascript", ale nie mogę używać JavaScriptu z nim?
EDIT
robiłem 2 absurdalnie proste błędy:
- skopiowane komentarz składni coffeescript w moim pliku JS
- miałem skrypt pod hubot skrypty node_module, a nie tylko pod/skryptów/katalog w głównym projekcie.Czy mogę napisać skrypty dla hubota w JavaScript?

Działa teraz idealnie.

Odpowiedz

20

CoffeeScript jest wkompilowany w JavaScript, ale nie jest nadzbiorem JavaScript, więc kod JavaScript niekoniecznie jest prawidłowym kodem CoffeeScript.

Niemniej jednak, po spojrzeniu at the source, wygląda Hubot może przyjąć zarówno:

# 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) 

Ta metoda jest wywoływana przez loadHubotScripts.

+0

Dziękuję, że kod (który miałem problem ze znalezieniem) doprowadziły mnie do mojego problemu. Miałem pliki w niewłaściwym miejscu i skopiowałem składnię komentarzy Coffeescript do mojego pliku JS. –

28

Tak, możesz pisać swoje skrypty Hubota w czystym JavaScript. Poniżej znajduje się prosty skrypt hubot napisany w czystym JavaScript i umieścić w katalogu mojego dostosowanych hubot /scripts/:

// 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

Skorzystaj z tej strony, aby przekonwertować skrypty do kawy na js http://js2.coffee/ :) –