@@ -152,7 +152,10 @@ defmodule Base do
152152 defp remove_ignored ( string , nil ) , do: string
153153
154154 defp remove_ignored ( string , :whitespace ) do
155- for << char :: 8 <- string >> , char not in ~c" \s \t \r \n " , into: << >> , do: << char :: 8 >>
155+ case :binary . match ( string , [ << ?\s >> , << ?\t >> , << ?\r >> , << ?\n >> ] ) do
156+ :nomatch -> string
157+ _ -> for << char :: 8 <- string >> , char not in ~c" \s \t \r \n " , into: << >> , do: << char :: 8 >>
158+ end
156159 end
157160
158161 @ doc """
@@ -376,6 +379,26 @@ defmodule Base do
376379
377380 defp unquote ( validate_name ) ( << >> ) , do: true
378381
382+ defp unquote ( validate_name ) ( << c1 , c2 , c3 , c4 , c5 , c6 , c7 , c8 , rest :: binary >> ) do
383+ unquote ( valid_char_name ) ( c1 ) and
384+ unquote ( valid_char_name ) ( c2 ) and
385+ unquote ( valid_char_name ) ( c3 ) and
386+ unquote ( valid_char_name ) ( c4 ) and
387+ unquote ( valid_char_name ) ( c5 ) and
388+ unquote ( valid_char_name ) ( c6 ) and
389+ unquote ( valid_char_name ) ( c7 ) and
390+ unquote ( valid_char_name ) ( c8 ) and
391+ unquote ( validate_name ) ( rest )
392+ end
393+
394+ defp unquote ( validate_name ) ( << c1 , c2 , c3 , c4 , rest :: binary >> ) do
395+ unquote ( valid_char_name ) ( c1 ) and
396+ unquote ( valid_char_name ) ( c2 ) and
397+ unquote ( valid_char_name ) ( c3 ) and
398+ unquote ( valid_char_name ) ( c4 ) and
399+ unquote ( validate_name ) ( rest )
400+ end
401+
379402 defp unquote ( validate_name ) ( << c1 , c2 , rest :: binary >> ) do
380403 unquote ( valid_char_name ) ( c1 ) and
381404 unquote ( valid_char_name ) ( c2 ) and
@@ -391,6 +414,7 @@ defmodule Base do
391414
392415 defp unquote ( valid_char_name ) ( _char ) , do: false
393416
417+ @ compile { :inline , [ { decode_name , 1 } ] }
394418 defp unquote ( decode_name ) ( char ) do
395419 index = char - unquote ( min )
396420
@@ -870,6 +894,7 @@ defmodule Base do
870894
871895 defp unquote ( valid_char_name ) ( _char ) , do: false
872896
897+ @ compile { :inline , [ { decode_name , 1 } ] }
873898 defp unquote ( decode_name ) ( char ) do
874899 index = char - unquote ( min )
875900
@@ -1526,6 +1551,7 @@ defmodule Base do
15261551
15271552 defp unquote ( valid_char_name ) ( _char ) , do: false
15281553
1554+ @ compile { :inline , [ { decode_name , 1 } ] }
15291555 defp unquote ( decode_name ) ( char ) do
15301556 index = char - unquote ( min )
15311557
0 commit comments