From babacaf8fdfc7fb80f3fbc4f0da934eca12dbf4d Mon Sep 17 00:00:00 2001 From: Leonardo Taglialegne Date: Mon, 2 Feb 2026 19:33:28 +0100 Subject: [PATCH] Avoid _Utils_eq in hot loop --- src/Common.elm | 2 +- src/OpenApi/Generate.elm | 36 ++++++++++++++++++++---------------- src/Utils.elm | 14 ++++++++++---- tests/TestCommon.elm | 2 +- 4 files changed, 32 insertions(+), 22 deletions(-) diff --git a/src/Common.elm b/src/Common.elm index 141f10d0..a085bc3c 100644 --- a/src/Common.elm +++ b/src/Common.elm @@ -276,7 +276,7 @@ replaceSymbolsWith replacement input = input |> String.map (\c -> - if c /= '_' && not (Char.isAlphaNum c) then + if Char.toCode c /= {- '_' -} 95 && not (Char.isAlphaNum c) then replacement else diff --git a/src/OpenApi/Generate.elm b/src/OpenApi/Generate.elm index c3e7029c..0d415a74 100644 --- a/src/OpenApi/Generate.elm +++ b/src/OpenApi/Generate.elm @@ -2734,7 +2734,7 @@ makeNamespaceValid : String -> String makeNamespaceValid str = String.map (\char -> - if List.member char invalidModuleNameChars then + if isInvalidForModuleName char then '_' else @@ -2745,18 +2745,22 @@ makeNamespaceValid str = removeInvalidChars : String -> String removeInvalidChars str = - String.filter (\char -> char /= '\'') str - - -invalidModuleNameChars : List Char -invalidModuleNameChars = - [ ' ' - , '.' - , '/' - , '{' - , '}' - , '-' - , ':' - , '(' - , ')' - ] + String.filter (\char -> Char.toCode char /= {- '\'' -} 39) str + + +isInvalidForModuleName : Char -> Bool +isInvalidForModuleName char = + let + code : Int + code = + Char.toCode char + in + (code == {- ' ' -} 32) + || (code == {- '.' -} 46) + || (code == {- '/' -} 47) + || (code == {- '{' -} 123) + || (code == {- '}' -} 125) + || (code == {- '-' -} 45) + || (code == {- ':' -} 58) + || (code == {- '(' -} 40) + || (code == {- ')' -} 41) diff --git a/src/Utils.elm b/src/Utils.elm index e81974a6..0237d852 100644 --- a/src/Utils.elm +++ b/src/Utils.elm @@ -12,10 +12,16 @@ sanitizeModuleName str = String.filter (\char -> Char.isAlphaNum char - || (char == '_') - || (char == '-') - || (char == ' ') - || (char == ':') + || (let + code : Int + code = + Char.toCode char + in + (code == {- '_' -} 95) + || (code == {- '-' -} 45) + || (code == {- ' ' -} 32) + || (code == {- ':' -} 58) + ) ) str |> String.replace "_" " " diff --git a/tests/TestCommon.elm b/tests/TestCommon.elm index 0b9f710a..b82e9949 100644 --- a/tests/TestCommon.elm +++ b/tests/TestCommon.elm @@ -179,7 +179,7 @@ isLower c = isAlphaNumOrUnderscore : Char -> Bool isAlphaNumOrUnderscore c = - Char.isAlphaNum c || c == '_' || Unicode.isAlphaNum c + Char.isAlphaNum c || Char.toCode c == {- '_' -} 95 || Unicode.isAlphaNum c escape : String -> String