2009-09-15 16 views
1

Je souhaite réduire mes fichiers JavaScript immédiatement dans Gedit. J'ai essayé de le faire via l'option des outils externes avec le script jsmin.js. J'ai le moteur de SpiderMonkey installé. J'ai emmagasiné jsmin.js fichier à /home/mushex/use/js/jsmin.js et créé un nouveau fichier nommé js JSMin-low.js dans le même répertoire avec le contenuLigne de commande JavaScript Arguments d'entrée lors de la réduction du code JavaScript dans Gedit

#!/usr/bin/js 

load('/home/mushex/use/js/jsmin.js'); 

var body = arguments[0], 
    result = jsmin('', body, 1); 
if (result) { 
    print(result); 
} else { 
    print(body); 
} 

Il imprime indéfini. Pour le débogage, j'ai modifié le script pour effectuer uniquement l'action d'impression des arguments, et j'ai vu que l'entrée est null (indéfini). La source du fichier pour le débogage était

#!/usr/bin/js 
print(arguments[0]); 

Mais lorsque je l'exécute en ligne de commande, sa sortie est correcte. Et via gedit d'autres outils de ligne de commande js fonctionnent normalement. Errant pourquoi mes arguments d'entrée ne passent pas.

Voici les paramètres que j'ai définis pour cet outil dans gedit.

Settings http://imagebin.org/index.php?mode=image&id=63960

Toute aide sera grandement appréciée Merci.

Répondre

1

Le problème est que gedit envoie le document dans l'entrée standard de votre programme, pas en tant qu'argument de ligne de commande. Le shell SpiderMonkey a une fonction readline() qui lit une ligne de stdin, mais il n'a pas de moyen de savoir quand vous atteignez EOF.

Si vous compilez SpiderMonkey avec le support File, vous pouvez probablement le faire, mais je n'ai jamais essayé cela.

Si vous utilisez le Rhino shell, vous pouvez utiliser des classes Java directement comme ceci:

function readStdin() { 
    var stdin = new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.System["in"])); 
    var lines = []; 
    var line; 
    while ((line = stdin.readLine()) !== null) { 
     lines.push(line); 
    } 
    return lines.join("\n"); 
} 

var body = readStdin(); 
+0

Où est le téléchargement shell Rhino? Mon google-fu me manque. – Herms

+1

Nm, enfin trouvé: http://www.mozilla.org/rhino/download.html – Herms

+0

@Matthew Crumley Merci mec, si rien ne aide, je pense que je vais le faire avec Rhino (en fait je m'en fous tellement, juste impressionné comment le faire) @Herms Sources sont ici http://www.mozilla.org/rhino/download.html –