{"id":16298086,"url":"https://github.com/ranyitz/casing","last_synced_at":"2025-04-06T00:31:21.922Z","repository":{"id":197441871,"uuid":"698661321","full_name":"ranyitz/casing","owner":"ranyitz","description":"Scala Library for Naming Convention Transitions","archived":false,"fork":false,"pushed_at":"2023-10-01T12:42:10.000Z","size":15,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-21T14:08:53.496Z","etag":null,"topics":["camelcase","kebab-case","pascalcase","snakecase"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ranyitz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-30T15:26:48.000Z","updated_at":"2024-02-21T07:27:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"a3182d9c-1e2f-4614-bf7f-d442cd9ca723","html_url":"https://github.com/ranyitz/casing","commit_stats":null,"previous_names":["ranyitz/casing"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranyitz%2Fcasing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranyitz%2Fcasing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranyitz%2Fcasing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ranyitz%2Fcasing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ranyitz","download_url":"https://codeload.github.com/ranyitz/casing/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247419597,"owners_count":20936009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["camelcase","kebab-case","pascalcase","snakecase"],"created_at":"2024-10-10T20:43:31.615Z","updated_at":"2025-04-06T00:31:18.972Z","avatar_url":"https://github.com/ranyitz.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔄 Casing\n\n\u003e Scala Library for Naming Convention Transitions (camelCase, PascalCase, snake_case, kebab-case, etc.)\n\n[![Build Status](https://github.com/ranyitz/casing/actions/workflows/ci.yml/badge.svg)](https://github.com/ranyitz/casing/actions/workflows/ci.yml)\n[![Maven Central](https://img.shields.io/maven-central/v/io.github.ranyitz/casing_2.13.svg?label=Maven%20Central)](https://central.sonatype.com/artifact/io.github.ranyitz/casing_2.13)\n[![Scala Version](https://img.shields.io/badge/scala-2.12%20%7C%202.13%20%7C%203.0-blue.svg)](https://www.scala-lang.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Features\n✂️ Split words in any kind of [Naming Convention](https://en.wikipedia.org/wiki/Naming_convention_(programming)) \u003cbr/\u003e\n🪶 Dependency free \u003cbr/\u003e\n🧪 Fully tested \u003cbr/\u003e\n\n## Installation\nTo include Casing in your Scala project, add the following dependency:\n\n```scala\nlibraryDependencies += \"io.github.ranyitz\" %% \"casing\" % \"0.2.0\"\n```\n\n## Usage\n\n```scala\nimport casing._\n\ncamelCase(\"foo_bar\") // fooBar\npascalCase(\"foo bar\") // FooBar\nsnakeCase(\"fooBar\") // foo_bar\nkebabCase(\"foo-bar\") // foo-bar\nconstantCase(\"foo.bar\") // FOO_BAR\n\ncaseSplit(\"fooBarBaz\") // foo.bar.baz \n    .map(_.toLowerCase())\n    .mkString(\".\") \n```\n\n### split\nsplits a string into words based on the casing pattern\n\n\u003e can be used to create any custom naming pattern\n\n```scala\ncaseSplit(\"fooBarBaz\") // Seq(foo, Bar, Baz)\ncaseSplit(\"foo_bar_baz\") // Seq(foo, bar, baz)\ncaseSplit(\"foo-bar-baz\") // Seq(foo, bar, baz)\ncaseSplit(\"FOO_BAR_BAZ\") // List(FOO, BAR, BAZ)\n```\n\n### camelCase\nconverts a string to [camelCase](https://en.wikipedia.org/wiki/Camel_case)\n\n```scala\ncamelCase(\"foo_bar\") // fooBar\n```\n\n### pascalCase\nconverts a string to [PascalCase](https://en.wikipedia.org/wiki/Camel_case)\n\n```scala\npascalCase(\"foo_bar\") // FooBar\n```\n\n### snakeCase\nconverts a string to [snake_case](https://en.wikipedia.org/wiki/Snake_case)\n\n```scala\nsnakeCase(\"fooBar\") // foo_bar\n```\n\n### kebabCase\nconverts a string to [kebab-case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles)\n\n```scala\nkebabCase(\"fooBar\") // foo-bar\n```\n\n### constantCase\nconverts a string to CONSTANT_CASE or [SCREAMING_SNAKE_CASE](https://en.wikipedia.org/wiki/Snake_case)\n\n```scala\nconstantCase(\"fooBar\") // FOO_BAR\n```\n\n### Validation Functions\nvalidates a string against a specific naming convention\n\n```scala\nisCamelCase(\"fooBar\") // true\nisPascalCase(\"FooBar\") // true\nisSnakeCase(\"foo_bar\") // true\nisKebabCase(\"foo-bar\") // true\nisConstantCase(\"FOO_BAR\") // true\n```\n\n### Inspiration\n* [change-case](https://github.com/blakeembrey/change-case)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Franyitz%2Fcasing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Franyitz%2Fcasing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Franyitz%2Fcasing/lists"}