@@ -58,6 +58,9 @@ impl Slugger {
58
58
} else {
59
59
value. to_lowercase ( )
60
60
} ;
61
+
62
+ // Normalize the slug and use it as the base for counting
63
+ result = normalize_slug ( & result) . to_string ( ) ;
61
64
let original_slug = result. clone ( ) ;
62
65
63
66
while self . occurrences . contains_key ( & result) {
@@ -68,7 +71,7 @@ impl Slugger {
68
71
69
72
self . occurrences . insert ( result. clone ( ) , 0 ) ;
70
73
71
- normalize_slug ( & result) . to_string ( )
74
+ result
72
75
}
73
76
74
77
/**
@@ -140,4 +143,15 @@ mod tests {
140
143
assert_eq ! ( slug( "`Hello` **World**" , false ) , "hello-world" ) ;
141
144
assert_eq ! ( slug( "export 'function'" , false ) , "export-function" ) ;
142
145
}
146
+
147
+ #[ test]
148
+ fn test_slugger_with_similar_inputs ( ) {
149
+ let mut slugger = Slugger :: new ( ) ;
150
+ assert_eq ! ( slugger. slug( "inline" , false ) , "inline" ) ;
151
+ assert_eq ! ( slugger. slug( "**inline**" , false ) , "inline-1" ) ;
152
+ assert_eq ! ( slugger. slug( "*inline*" , false ) , "inline-2" ) ;
153
+ assert_eq ! ( slugger. slug( "Inline" , false ) , "inline-3" ) ;
154
+ assert_eq ! ( slugger. slug( "inline" , true ) , "inline-4" ) ;
155
+ assert_eq ! ( slugger. slug( "Inline" , true ) , "Inline" ) ;
156
+ }
143
157
}
0 commit comments