summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/utils/page.js7
-rw-r--r--test/books/glossary/GLOSSARY.md4
-rw-r--r--test/books/glossary/README.md2
-rw-r--r--test/glossary.js11
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"
+ }
+ });
+ });
});
});
});