From 2e4516bf69cdfa583faf7ffd41e9bc5322dffcf8 Mon Sep 17 00:00:00 2001 From: walterhiggins Date: Tue, 11 Feb 2014 21:10:56 +0000 Subject: [PATCH] Added 'utils.unwatchFile()' function to fix #117 --- docs/API-Reference.md | 11 +++++++++++ src/main/js/modules/utils/utils.js | 23 ++++++++++++++++++++-- src/main/js/plugins/classroom/classroom.js | 5 +++++ 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/docs/API-Reference.md b/docs/API-Reference.md index 80d387d..3beffca 100644 --- a/docs/API-Reference.md +++ b/docs/API-Reference.md @@ -70,6 +70,7 @@ Walter Higgins * [utils.find() function](#utilsfind-function) * [utils.serverAddress() function](#utilsserveraddress-function) * [utils.watchFile() function](#utilswatchfile-function) + * [utils.unwatchFile() function](#utilsunwatchfile-function) * [Drone Plugin](#drone-plugin) * [TLDNR; (Just read this if you're impatient)](#tldnr-just-read-this-if-youre-impatient) * [Constructing a Drone Object](#constructing-a-drone-object) @@ -1368,6 +1369,16 @@ utils.watchFile( 'test.txt', function( file ) { console.log( file + ' has changed'); }); ``` +### utils.unwatchFile() function + +Removes a file from the watch list. + +#### Example +```javascript +var utils = require('utils'); +utils.unwatchFile( 'test.txt'); +``` + ## Drone Plugin The Drone is a convenience class for building. It can be used for... diff --git a/src/main/js/modules/utils/utils.js b/src/main/js/modules/utils/utils.js index d55d7dd..0244fda 100644 --- a/src/main/js/modules/utils/utils.js +++ b/src/main/js/modules/utils/utils.js @@ -1,4 +1,5 @@ 'use strict'; +var File = java.io.File; /************************************************************************ ## Utilities Module @@ -440,7 +441,7 @@ var jsFiles = utils.find('./', function(dir,name){ exports.find = function( dir , filter ) { var result = []; var recurse = function( dir, store ) { - var files, dirfile = new java.io.File( dir ); + var files, dirfile = new File( dir ); if ( typeof filter == 'undefined' ) { files = dirfile.list(); @@ -514,7 +515,6 @@ utils.watchFile( 'test.txt', function( file ) { ***/ var filesWatched = {}; exports.watchFile = function( file, callback ) { - var File = java.io.File; if ( typeof file == 'string' ) { file = new File(file); } @@ -523,6 +523,25 @@ exports.watchFile = function( file, callback ) { lastModified: file.lastModified() }; }; +/************************************************************************ +### utils.unwatchFile() function + +Removes a file from the watch list. + +#### Example +```javascript +var utils = require('utils'); +utils.unwatchFile( 'test.txt'); +``` + +***/ +exports.unwatchFile = function( file, callback ) { + if ( typeof file == 'string' ) { + file = new File(file); + } + delete filesWatched[file.canonicalPath]; +}; + function fileWatcher() { for (var file in filesWatched) { var fileObject = new File(file); diff --git a/src/main/js/plugins/classroom/classroom.js b/src/main/js/plugins/classroom/classroom.js index 729c1f7..af240b3 100644 --- a/src/main/js/plugins/classroom/classroom.js +++ b/src/main/js/plugins/classroom/classroom.js @@ -3,6 +3,7 @@ var utils = require('utils'), logger = __plugin.logger, foreach = utils.foreach, watchFile = utils.watchFile, + unwatchFile = utils.unwatchFile, playersDir = __dirname + '/../../players/', serverAddress = utils.serverAddress(); @@ -100,6 +101,10 @@ function revokeScripting ( player ) { } } }); + var playerName = '' + player.name; + playerName = playerName.replace(/[^a-zA-Z0-9_\-]/g,''); + var playerDir = new File( playersDir + playerName ); + unwatchFile( playerDir ); } function grantScripting( player ) {