diff --git a/src/highlight.js b/src/highlight.js index f444b4f09b..28d18a371a 100644 --- a/src/highlight.js +++ b/src/highlight.js @@ -707,8 +707,8 @@ https://highlightjs.org/ } function autoDetection(name) { - name = (name || '').toLowerCase(); - return !languages[name].disableAutodetect; + lang = getLanguage(name); + return lang && !lang.disableAutodetect; } /* Interface definition */ diff --git a/test/api/autoDetection.js b/test/api/autoDetection.js new file mode 100644 index 0000000000..3dbe34eb33 --- /dev/null +++ b/test/api/autoDetection.js @@ -0,0 +1,36 @@ +'use strict'; + +let hljs = require('../../build'); +let should = require('should'); + +describe('.autoDetection()', function() { + it('should get an existing language', function() { + const result = hljs.autoDetection('python'); + + result.should.be.instanceOf(Object); + }); + + it('should get an existing language by alias', function() { + const result = hljs.autoDetection('py'); + + result.should.be.instanceOf(Object); + }); + + it('should be case insensitive', function() { + const result = hljs.autoDetection('pYTHOn'); + + result.should.be.instanceOf(Object); + }); + + it('should return undefined', function() { + const result = hljs.autoDetection('-impossible-'); + + should.strictEqual(result, undefined); + }); + + it('should not break on undefined', function() { + const result = hljs.autoDetection(undefined); + + should.strictEqual(result, undefined); + }); +}); diff --git a/test/api/getLanguage.js b/test/api/getLanguage.js index 2777e4ac67..0128a606cd 100644 --- a/test/api/getLanguage.js +++ b/test/api/getLanguage.js @@ -10,6 +10,12 @@ describe('.getLanguage()', function() { result.should.be.instanceOf(Object); }); + it('should get an existing language by alias', function() { + const result = hljs.getLanguage('py'); + + result.should.be.instanceOf(Object); + }); + it('should be case insensitive', function() { const result = hljs.getLanguage('pYTHOn'); diff --git a/test/api/index.js b/test/api/index.js index 1f3ae503b9..b808e107d1 100644 --- a/test/api/index.js +++ b/test/api/index.js @@ -8,6 +8,7 @@ describe('hljs', function() { require('./binaryNumber'); require('./starters'); require('./getLanguage'); + require('./autoDetection'); require('./highlight'); require('./fixmarkup'); });