🍴 Meu Garfo é uma visualização em grafo dos CNPJs cuducos.tngl.io/meu-garfo
1

Configure Feed

Select the types of activity you want to include in your feed.

at main 2.0 kB View raw
1module Format exposing (formatCnpj, formatCpf, mask, maskCnpjInput, maskMultiple) 2 3 4mask : String -> String 5mask raw = 6 let 7 cleaned = 8 String.filter (\c -> Char.isAlphaNum c || c == '*') raw 9 in 10 if String.length cleaned == 14 then 11 formatCnpj cleaned 12 13 else if String.length cleaned == 11 then 14 formatCpf cleaned 15 16 else 17 raw 18 19 20maskCnpjInput : String -> String -> String 21maskCnpjInput previous raw = 22 let 23 previousAlnum = 24 String.filter Char.isAlphaNum previous 25 26 rawAlnum = 27 String.filter Char.isAlphaNum raw 28 29 deleting = 30 String.length raw < String.length previous 31 32 backspacedSeparator = 33 deleting && String.length rawAlnum == String.length previousAlnum 34 35 cleaned = 36 if backspacedSeparator then 37 String.dropRight 1 rawAlnum |> String.toUpper |> String.left 14 38 39 else 40 rawAlnum |> String.toUpper |> String.left 14 41 42 chunks = 43 [ ( 2, "." ), ( 5, "." ), ( 8, "/" ), ( 12, "-" ) ] 44 45 insertAt ( pos, sep ) s = 46 let 47 threshold = 48 if deleting then 49 pos + 1 50 51 else 52 pos 53 in 54 if String.length s >= threshold && String.length s > 0 then 55 String.left pos s ++ sep ++ String.dropLeft pos s 56 57 else 58 s 59 in 60 List.foldr insertAt cleaned chunks 61 62 63formatCnpj : String -> String 64formatCnpj s = 65 maskCnpjInput "" s 66 67 68formatCpf : String -> String 69formatCpf s = 70 String.left 3 s 71 ++ "." 72 ++ String.slice 3 6 s 73 ++ "." 74 ++ String.slice 6 9 s 75 ++ "-" 76 ++ String.slice 9 11 s 77 78 79maskMultiple : String -> String 80maskMultiple raw = 81 if String.contains "," raw then 82 String.split "," raw 83 |> List.map String.trim 84 |> List.map mask 85 |> String.join ", " 86 87 else 88 mask raw