ソースを参照

Extensions within /src are now automatically loaded to the Showdown namespace when server-side

Titus 13 年 前
コミット
e924b04aa2
2 ファイル変更24 行追加1 行削除
  1. 23 0
      src/showdown.js
  2. 1 1
      test/run.js

+ 23 - 0
src/showdown.js

@@ -210,6 +210,29 @@ this.makeHtml = function(text) {
 	return text;
 };
 
+
+//
+// Scan extensions folder for extensions
+// (if in a node environment)
+//
+
+if (typeof module !== 'undefind' && typeof exports !== 'undefined' && typeof require !== 'undefind') {
+	var fs = require('fs');
+
+	if (fs) {
+		// Search extensions folder
+		var extensions = fs.readdirSync('./src/extensions').filter(function(file){
+			return ~file.indexOf('.js');
+		}).map(function(file){
+			return file.replace('.js', '');
+		});
+		// Load extensions into Showdown namespace
+		extensions.forEach(function(ext){
+			Showdown.extensions[ext] = require('./extensions/' + ext);
+		});
+	}
+}
+
 var _ExecuteExtension = function(ext, text) {
 	if (ext.regex) {
 		var re = new RegExp(ext.regex, 'g');

+ 1 - 1
test/run.js

@@ -78,7 +78,7 @@ if (path.existsSync('test/extensions')) {
             }
 
             // Build converter with extension included
-            var extension = require('../src/extensions/' + ext);
+            var extension = showdown.extensions[ext];
             if (!extension) {
                 throw "Could not load extension '" + ext + "'.  Did you forget module.exports?";
             }