lean4-htt/Lake/Util/Casing.lean
2022-07-14 15:04:45 -04:00

19 lines
680 B
Text

/-
Copyright (c) 2022 Mac Malone. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Mac Malone
-/
namespace Lake
open Lean (Name)
/-- Converts a snake case, kebab case, or lower camel case `String` to upper camel case. -/
def toUpperCamelCaseString (str : String) : String :=
let parts := str.split fun chr => chr == '_' || chr == '-'
String.join <| parts.map (·.capitalize)
/-- Converts a snake case, kebab case, or lower camel case `Name` to upper camel case. -/
def toUpperCamelCase (name : Name) : Name :=
if let Name.str p s := name then
Name.mkStr (toUpperCamelCase p) <| toUpperCamelCaseString s
else
name