@@ -2,8 +2,9 @@ var marked = require('../../lib/marked.js');
22
33describe ( 'Test heading ID functionality' , function ( ) {
44 it ( 'should add id attribute by default' , function ( ) {
5- var renderer = new marked . Renderer ( marked . defaults ) ;
6- var header = renderer . heading ( 'test' , 1 , 'test' ) ;
5+ var renderer = new marked . Renderer ( ) ;
6+ var slugger = new marked . Slugger ( ) ;
7+ var header = renderer . heading ( 'test' , 1 , 'test' , slugger ) ;
78 expect ( header ) . toBe ( '<h1 id="test">test</h1>\n' ) ;
89 } ) ;
910
@@ -14,6 +15,51 @@ describe('Test heading ID functionality', function() {
1415 } ) ;
1516} ) ;
1617
18+ describe ( 'Test slugger functionality' , function ( ) {
19+ it ( 'should use lowercase slug' , function ( ) {
20+ var slugger = new marked . Slugger ( ) ;
21+ expect ( slugger . slug ( 'Test' ) ) . toBe ( 'test' ) ;
22+ } ) ;
23+
24+ it ( 'should be unique to avoid collisions 1280' , function ( ) {
25+ var slugger = new marked . Slugger ( ) ;
26+ expect ( slugger . slug ( 'test' ) ) . toBe ( 'test' ) ;
27+ expect ( slugger . slug ( 'test' ) ) . toBe ( 'test-1' ) ;
28+ expect ( slugger . slug ( 'test' ) ) . toBe ( 'test-2' ) ;
29+ } ) ;
30+
31+ it ( 'should be unique when slug ends with number' , function ( ) {
32+ var slugger = new marked . Slugger ( ) ;
33+ expect ( slugger . slug ( 'test 1' ) ) . toBe ( 'test-1' ) ;
34+ expect ( slugger . slug ( 'test' ) ) . toBe ( 'test' ) ;
35+ expect ( slugger . slug ( 'test' ) ) . toBe ( 'test-2' ) ;
36+ } ) ;
37+
38+ it ( 'should be unique when slug ends with hyphen number' , function ( ) {
39+ var slugger = new marked . Slugger ( ) ;
40+ expect ( slugger . slug ( 'foo' ) ) . toBe ( 'foo' ) ;
41+ expect ( slugger . slug ( 'foo' ) ) . toBe ( 'foo-1' ) ;
42+ expect ( slugger . slug ( 'foo 1' ) ) . toBe ( 'foo-1-1' ) ;
43+ expect ( slugger . slug ( 'foo-1' ) ) . toBe ( 'foo-1-2' ) ;
44+ expect ( slugger . slug ( 'foo' ) ) . toBe ( 'foo-2' ) ;
45+ } ) ;
46+
47+ it ( 'should allow non-latin chars' , function ( ) {
48+ var slugger = new marked . Slugger ( ) ;
49+ expect ( slugger . slug ( 'привет' ) ) . toBe ( 'привет' ) ;
50+ } ) ;
51+
52+ it ( 'should remove ampersands 857' , function ( ) {
53+ var slugger = new marked . Slugger ( ) ;
54+ expect ( slugger . slug ( 'This & That Section' ) ) . toBe ( 'this--that-section' ) ;
55+ } ) ;
56+
57+ it ( 'should remove periods' , function ( ) {
58+ var slugger = new marked . Slugger ( ) ;
59+ expect ( slugger . slug ( 'file.txt' ) ) . toBe ( 'filetxt' ) ;
60+ } ) ;
61+ } ) ;
62+
1763describe ( 'Test paragraph token type' , function ( ) {
1864 it ( 'should use the "paragraph" type on top level' , function ( ) {
1965 const md = 'A Paragraph.\n\n> A blockquote\n\n- list item\n' ;
0 commit comments