diff --git a/lib/replacements.exs b/lib/replacements.exs index 0d3cd71..a1aa73d 100644 --- a/lib/replacements.exs +++ b/lib/replacements.exs @@ -118,7 +118,6 @@ {?“, '"'}, {?”, '"'}, {?‘, '\''}, {?’, '\''}, {?∂, 'd'}, {?™, 'tm'}, {?℠, 'sm'}, {?…, '...'}, {?˚, 'o'}, {?•, '*'}, {?∆, 'delta'}, {?∞, 'infinity'}, {?♥, 'love'}, {?&, 'and'}, {?|, 'or'}, - {?<, 'less'}, {?>, 'greater'}, {?☢, 'radioactive'} + {?<, 'less'}, {?>, 'greater'}, {?☢, 'radioactive'}, {?_, '_'} ] - diff --git a/lib/slugger.ex b/lib/slugger.ex index 2658066..2443f4d 100644 --- a/lib/slugger.ex +++ b/lib/slugger.ex @@ -30,7 +30,7 @@ defmodule Slugger do iex> Slugger.slugify("Wikipedia Style", ?_) "Wikipedia_Style" - iex> Slugger.slugify("_Trimming_and___Removing_inside___") + iex> Slugger.slugify("Trimming-and-Removing-inside") "Trimming-and-Removing-inside" """ @@ -39,7 +39,7 @@ defmodule Slugger do text |> handle_possessives |> replace_special_chars - |> remove_unwanted_chars(separator, ~r/([^A-Za-z0-9가-힣])+/) + |> remove_unwanted_chars(separator, ~r/(?!_)([^A-Za-z0-9가-힣])+/) end @doc """ diff --git a/test/slugger_test.exs b/test/slugger_test.exs index 628149d..9767d6f 100644 --- a/test/slugger_test.exs +++ b/test/slugger_test.exs @@ -12,6 +12,10 @@ defmodule SluggerTest do assert Slugger.slugify(" \t \n ABC") == "ABC" end + test "do not removes underscore" do + assert Slugger.slugify("Q_q-q") == "Q_q-q" + end + test "removing space at ending" do assert Slugger.slugify("ABC \n \t \n ") == "ABC" end