diff options
-rw-r--r-- | lib/utils/page.js | 7 | ||||
-rw-r--r-- | test/books/glossary/GLOSSARY.md | 4 | ||||
-rw-r--r-- | test/books/glossary/README.md | 2 | ||||
-rw-r--r-- | test/glossary.js | 11 |
4 files changed, 21 insertions, 3 deletions
diff --git a/lib/utils/page.js b/lib/utils/page.js index 9b33b96..f24013f 100644 --- a/lib/utils/page.js +++ b/lib/utils/page.js @@ -237,13 +237,16 @@ function normalizeHtml(src, options) { }); // Replace glossary terms - _.each(options.glossary, function(term) { + var glossary = _.sortBy(options.glossary, function(term) { + return -term.name.length; + }); + _.each(glossary, function(term) { var r = new RegExp( "\\b(" + pregQuote(term.name.toLowerCase()) + ")\\b" , 'gi' ); var includedInFiles = false; $("*").each(function() { // Ignore codeblocks - if (_.contains(["code", "pre"], this.name.toLowerCase())) return; + if (_.contains(["code", "pre", "a"], this.name.toLowerCase())) return; replaceText($, this, r, function(match) { // Add to files index in glossary diff --git a/test/books/glossary/GLOSSARY.md b/test/books/glossary/GLOSSARY.md index fa706f1..18840d2 100644 --- a/test/books/glossary/GLOSSARY.md +++ b/test/books/glossary/GLOSSARY.md @@ -7,3 +7,7 @@ Just a simple and easy to understand test. ## hakunamatata This word is not present in the content. + +## test long + +This is a test with a longer text that the first entry to test order. diff --git a/test/books/glossary/README.md b/test/books/glossary/README.md index 50e8d4c..d46da8b 100644 --- a/test/books/glossary/README.md +++ b/test/books/glossary/README.md @@ -6,3 +6,5 @@ The word test should be replaced by a glossary link. But the word test should not be replaced in code blocks ``` +The two words test long should be replaced by the correct glossary links. + diff --git a/test/glossary.js b/test/glossary.js index 631967e..fb573d9 100644 --- a/test/glossary.js +++ b/test/glossary.js @@ -14,7 +14,7 @@ describe('Glossary', function () { it('should correctly list items', function() { book.should.have.property("glossary"); - book.glossary.should.have.lengthOf(2); + book.glossary.should.have.lengthOf(3); }); }); @@ -73,6 +73,15 @@ describe('Glossary', function () { } }); }); + + it('should correctly select the longest term', function() { + readme.should.be.html({ + ".page-inner a[href='GLOSSARY.html#test_long']": { + count: 1, + text: "test long" + } + }); + }); }); }); }); |