Quellcode durchsuchen

feat(getFlavor): add getFlavor method to showdown and Converter

With this new method, you can check what type of base flavor showdown is currently set
to run as.
Estevao Soares dos Santos vor 8 Jahren
Ursprung
Commit
0eaf1050c7
9 geänderte Dateien mit 161 neuen und 41 gelöschten Zeilen
  1. 4 1
      README.md
  2. 53 14
      dist/showdown.js
  3. 0 0
      dist/showdown.js.map
  4. 1 1
      dist/showdown.min.js
  5. 0 0
      dist/showdown.min.js.map
  6. 22 7
      src/converter.js
  7. 30 6
      src/showdown.js
  8. 29 12
      test/node/showdown.Converter.js
  9. 22 0
      test/node/showdown.js

+ 4 - 1
README.md

@@ -292,7 +292,10 @@ var defaultOptions = showdown.getDefaultOptions();
 
  * **requireSpaceBeforeHeadingText**: (boolean) [default false] Makes adding a space between `#` and the header text mandatory (since v1.5.3)
  
- * **ghMentions**: (boolean) [default false] Enables github @mentions, which link to the username mentioned (since v1.5.6) 
+ * **ghMentions**: (boolean) [default false] Enables github @mentions, which link to the username mentioned (since v1.6.0) 
+ 
+
+**NOTE**: Please note that until version 1.6.0, all of these options are ***DISABLED*** by default in the cli tool.
  
 ## Flavors
 

+ 53 - 14
dist/showdown.js

@@ -1,4 +1,4 @@
-;/*! showdown 06-01-2017 */
+;/*! showdown 08-01-2017 */
 (function(){
 /**
  * Created by Tivie on 13-07-2015.
@@ -142,6 +142,7 @@ var showdown = {},
     parsers = {},
     extensions = {},
     globalOptions = getDefaultOpts(true),
+    setFlavor = 'vanilla',
     flavor = {
       github: {
         omitExtraWLInCodeBlocks:              true,
@@ -225,16 +226,39 @@ showdown.resetOptions = function () {
  */
 showdown.setFlavor = function (name) {
   'use strict';
-  if (flavor.hasOwnProperty(name)) {
-    var preset = flavor[name];
-    for (var option in preset) {
-      if (preset.hasOwnProperty(option)) {
-        globalOptions[option] = preset[option];
-      }
+  if (!flavor.hasOwnProperty(name)) {
+    throw Error(name + ' flavor was not found');
+  }
+  var preset = flavor[name];
+  setFlavor = name;
+  for (var option in preset) {
+    if (preset.hasOwnProperty(option)) {
+      globalOptions[option] = preset[option];
     }
   }
 };
 
+/**
+ * Get the currently set flavor
+ * @returns {string}
+ */
+showdown.getFlavor = function () {
+  'use strict';
+  return setFlavor;
+};
+
+/**
+ * Get the options of a specified flavor. Returns undefined if the flavor was not found
+ * @param {string} name Name of the flavor
+ * @returns {{}|undefined}
+ */
+showdown.getFlavorOptions = function (name) {
+  'use strict';
+  if (flavor.hasOwnProperty(name)) {
+    return flavor[name];
+  }
+};
+
 /**
  * Get the default options
  * @static
@@ -780,7 +804,12 @@ showdown.Converter = function (converterOptions) {
        * @private
        * @type {{}}
        */
-      listeners = {};
+      listeners = {},
+
+      /**
+       * The flavor set in this converter
+       */
+      setConvFlavor = setFlavor;
 
   _constructor();
 
@@ -1104,16 +1133,26 @@ showdown.Converter = function (converterOptions) {
    * @param {string} name
    */
   this.setFlavor = function (name) {
-    if (flavor.hasOwnProperty(name)) {
-      var preset = flavor[name];
-      for (var option in preset) {
-        if (preset.hasOwnProperty(option)) {
-          options[option] = preset[option];
-        }
+    if (!flavor.hasOwnProperty(name)) {
+      throw Error(name + ' flavor was not found');
+    }
+    var preset = flavor[name];
+    setConvFlavor = name;
+    for (var option in preset) {
+      if (preset.hasOwnProperty(option)) {
+        options[option] = preset[option];
       }
     }
   };
 
+  /**
+   * Get the currently set flavor of this converter
+   * @returns {string}
+   */
+  this.getFlavor = function () {
+    return setConvFlavor;
+  };
+
   /**
    * Remove an extension from THIS converter.
    * Note: This is a costly operation. It's better to initialize a new converter

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
dist/showdown.js.map


Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 1
dist/showdown.min.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
dist/showdown.min.js.map


+ 22 - 7
src/converter.js

@@ -38,7 +38,12 @@ showdown.Converter = function (converterOptions) {
        * @private
        * @type {{}}
        */
-      listeners = {};
+      listeners = {},
+
+      /**
+       * The flavor set in this converter
+       */
+      setConvFlavor = setFlavor;
 
   _constructor();
 
@@ -362,16 +367,26 @@ showdown.Converter = function (converterOptions) {
    * @param {string} name
    */
   this.setFlavor = function (name) {
-    if (flavor.hasOwnProperty(name)) {
-      var preset = flavor[name];
-      for (var option in preset) {
-        if (preset.hasOwnProperty(option)) {
-          options[option] = preset[option];
-        }
+    if (!flavor.hasOwnProperty(name)) {
+      throw Error(name + ' flavor was not found');
+    }
+    var preset = flavor[name];
+    setConvFlavor = name;
+    for (var option in preset) {
+      if (preset.hasOwnProperty(option)) {
+        options[option] = preset[option];
       }
     }
   };
 
+  /**
+   * Get the currently set flavor of this converter
+   * @returns {string}
+   */
+  this.getFlavor = function () {
+    return setConvFlavor;
+  };
+
   /**
    * Remove an extension from THIS converter.
    * Note: This is a costly operation. It's better to initialize a new converter

+ 30 - 6
src/showdown.js

@@ -7,6 +7,7 @@ var showdown = {},
     parsers = {},
     extensions = {},
     globalOptions = getDefaultOpts(true),
+    setFlavor = 'vanilla',
     flavor = {
       github: {
         omitExtraWLInCodeBlocks:              true,
@@ -90,16 +91,39 @@ showdown.resetOptions = function () {
  */
 showdown.setFlavor = function (name) {
   'use strict';
-  if (flavor.hasOwnProperty(name)) {
-    var preset = flavor[name];
-    for (var option in preset) {
-      if (preset.hasOwnProperty(option)) {
-        globalOptions[option] = preset[option];
-      }
+  if (!flavor.hasOwnProperty(name)) {
+    throw Error(name + ' flavor was not found');
+  }
+  var preset = flavor[name];
+  setFlavor = name;
+  for (var option in preset) {
+    if (preset.hasOwnProperty(option)) {
+      globalOptions[option] = preset[option];
     }
   }
 };
 
+/**
+ * Get the currently set flavor
+ * @returns {string}
+ */
+showdown.getFlavor = function () {
+  'use strict';
+  return setFlavor;
+};
+
+/**
+ * Get the options of a specified flavor. Returns undefined if the flavor was not found
+ * @param {string} name Name of the flavor
+ * @returns {{}|undefined}
+ */
+showdown.getFlavorOptions = function (name) {
+  'use strict';
+  if (flavor.hasOwnProperty(name)) {
+    return flavor[name];
+  }
+};
+
 /**
  * Get the default options
  * @static

+ 29 - 12
test/node/showdown.Converter.js

@@ -27,24 +27,14 @@ describe('showdown.Converter', function () {
     });
   });
 
-  describe('setFlavor method', function () {
+  describe('converter.setFlavor()', function () {
 
     /**
      * Test setFlavor('github')
      */
     describe('github', function () {
       var converter = new showdown.Converter(),
-        ghOpts = {
-          omitExtraWLInCodeBlocks:   true,
-          prefixHeaderId:            'user-content-',
-          simplifiedAutoLink:        true,
-          literalMidWordUnderscores: true,
-          strikethrough:             true,
-          tables:                    true,
-          tablesHeaderId:            true,
-          ghCodeBlocks:              true,
-          tasklists:                 true
-        };
+          ghOpts = showdown.getFlavorOptions('github');
 
       converter.setFlavor('github');
 
@@ -61,6 +51,33 @@ describe('showdown.Converter', function () {
     });
   });
 
+  describe('getFlavor method', function () {
+
+    // reset showdown
+    showdown.setFlavor('vanilla');
+
+    describe('flavor', function () {
+      it('should be vanilla by default', function () {
+        var converter = new showdown.Converter();
+        converter.getFlavor().should.equal('vanilla');
+      });
+
+      it('should be changed if global option is changed', function () {
+        showdown.setFlavor('github');
+        var converter = new showdown.Converter();
+        converter.getFlavor().should.equal('github');
+        showdown.setFlavor('vanilla');
+      });
+
+      it('should not be changed if converter is initialized before global change', function () {
+        var converter = new showdown.Converter();
+        showdown.setFlavor('github');
+        converter.getFlavor().should.equal('vanilla');
+        showdown.setFlavor('vanilla');
+      });
+    });
+  });
+
   describe('extension methods', function () {
     var extObjMock = {
           type: 'lang',

+ 22 - 0
test/node/showdown.js

@@ -109,3 +109,25 @@ describe('showdown.getAllExtensions()', function () {
     showdown.getAllExtensions().should.eql({bar: [extObjMock]});
   });
 });
+
+describe('showdown.setFlavor()', function () {
+  'use strict';
+  it('should set flavor to github', function () {
+    showdown.setFlavor('github');
+    showdown.getFlavor().should.equal('github');
+    showdown.setFlavor('vanilla');
+  });
+
+  it('should set options correctly', function () {
+    showdown.setFlavor('github');
+    var ghOpts = showdown.getFlavorOptions('github'),
+        shOpts = showdown.getOptions();
+    for (var opt in ghOpts) {
+      if (ghOpts.hasOwnProperty(opt)) {
+        shOpts.should.have.property(opt);
+        shOpts[opt].should.equal(ghOpts[opt]);
+      }
+    }
+    showdown.setFlavor('vanilla');
+  });
+});

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.