Camel case and snake case: Difference between revisions

Content added Content deleted
(→‎{{header|Raku}}: Add a Raku example)
m (→‎{{header|Raku}}: eat our own dog-food)
Line 34: Line 34:




sub to_snake_case (Str $s is copy) {
sub to_snake_case (Str $snake_case_string is copy) {
$s.=trim;
$snake_case_string.=trim;
return $s if $s.contains: / \s | '/' /;
return $snake_case_string if $snake_case_string.contains: / \s | '/' /;
$s.=subst: / <after <:Ll>> (<:Lu>|<:digit>+) /, {'_' ~ $0.lc}, :g;
$snake_case_string.=subst: / <after <:Ll>> (<:Lu>|<:digit>+) /, {'_' ~ $0.lc}, :g;
$s.=subst: / <after <:digit>> (<:Lu>) /, {'_' ~ $0.lc}, :g;
$snake_case_string.=subst: / <after <:digit>> (<:Lu>) /, {'_' ~ $0.lc}, :g;
}
}


sub toCamelCase (Str $s is copy) {
sub toCamelCase (Str $camelCaseString is copy) {
$s.=trim;
$camelCaseString.=trim;
return $s if $s.contains: / \s | '/' /;
return $camelCaseString if $camelCaseString.contains: / \s | '/' /;
$s.=subst: / ('_') (\w) /, {$1.uc}, :g;
$camelCaseString.=subst: / ('_') (\w) /, {$1.uc}, :g;
}
}


sub to-kebab-case (Str $s is copy) {
sub to-kebab-case (Str $kebab-case-string is copy) {
$s.=trim;
$kebab-case-string.=trim;
return $s if $s.contains: / \s | '/' /;
return $kebab-case-string if $kebab-case-string.contains: / \s | '/' /;
$s.=subst: / ('_') (\w) /, {'-' ~ $1.lc}, :g;
$kebab-case-string.=subst: / ('_') (\w) /, {'-' ~ $1.lc}, :g;
$s.=subst: / <after <:Ll>> (<:Lu>|<:digit>+) /, {'-' ~ $0.lc}, :g;
$kebab-case-string.=subst: / <after <:Ll>> (<:Lu>|<:digit>+) /, {'-' ~ $0.lc}, :g;
$s.=subst: / <after <:digit>> (<:Lu>) /, {'-' ~ $0.lc}, :g;
$kebab-case-string.=subst: / <after <:digit>> (<:Lu>) /, {'-' ~ $0.lc}, :g;
}
}