{"id":29143858,"url":"https://github.com/nickjj/title-case-converter","last_synced_at":"2025-08-18T13:04:20.555Z","repository":{"id":146281664,"uuid":"173481255","full_name":"nickjj/title-case-converter","owner":"nickjj","description":"A CLI tool to capitalize words based on industry standard style guides.","archived":false,"fork":false,"pushed_at":"2020-09-28T12:45:10.000Z","size":10,"stargazers_count":15,"open_issues_count":1,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-08-11T07:03:04.817Z","etag":null,"topics":["cli","python","titlecase"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nickjj.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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,"zenodo":null}},"created_at":"2019-03-02T18:01:35.000Z","updated_at":"2025-04-27T03:19:22.000Z","dependencies_parsed_at":"2024-06-28T16:48:14.692Z","dependency_job_id":null,"html_url":"https://github.com/nickjj/title-case-converter","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/nickjj/title-case-converter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickjj%2Ftitle-case-converter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickjj%2Ftitle-case-converter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickjj%2Ftitle-case-converter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickjj%2Ftitle-case-converter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nickjj","download_url":"https://codeload.github.com/nickjj/title-case-converter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickjj%2Ftitle-case-converter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270996917,"owners_count":24681940,"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","status":"online","status_checked_at":"2025-08-18T02:00:08.743Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cli","python","titlecase"],"created_at":"2025-06-30T20:39:33.845Z","updated_at":"2025-08-18T13:04:20.543Z","avatar_url":"https://github.com/nickjj.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Title Case Converter\n\nA command line script that takes a list of words and converts their case using\n1 of 6 industry standard style guides.\n\n*It's a self contained Python script that only requires having `curl`\ninstalled.*\n\n## Example\n\n#### Positional Arguments\n\n```\nnick:~$ tcc hello world, this is a test\nHello World, This Is a Test\n```\n\nThe basic idea is you supply a list of words as input and it produces the\nconverted title as output.  You can choose to either input each word as a\nseparate argument (as seen above) or pass in a quoted string of words.\n\nThe quoted string of words is useful if you want to use `\u0026` in your title and\ndon't want to worry about escaping it. An example of that would be: `tcc \"ren\n\u0026 stimpy\"`, which would produce `Ren \u0026 Stimpy` as output.\n\n#### Piping Output from Another Program\n\nIf you want to pipe the output of another program as input to `tcc`, that works\ntoo.\n\n`echo hello world, this is a test | tcc` produces the same output as\n`tcc hello world, this is a test`.\n\n## Style Guides\n\nYou can pass in an optional `--style X` argument where `X` is one of the\nletters below.\n\n```\nA: Associated Press Stylebook\nP: Publication Manual of the American Psychological Association\nC: Chicago Manual of Style (default)\nM: MLA Handbook\nN: The New York Times Manual of Style and Usage\nW: Wikipedia Manual of Style\n```\n\n`tcc --style N hello world` would use the New York Times Manual of Style\ninstead of the Chicago Manual of Style (default).\n\n## Installation\n\nAll you have to do is download the `tcc` script, make sure it's executable\nand place it somewhere on your system path.\n\n#### 1 liner to get `tcc` downloaded to `/usr/local/bin`:\n\n```sh\nsudo curl \\\n  -L https://raw.githubusercontent.com/nickjj/title-case-converter/master/tcc \\\n  -o /usr/local/bin/tcc \u0026\u0026 sudo chmod +x /usr/local/bin/tcc\n```\n\nYou can confirm it works by running `tcc --help`.\n\n## How It Works / Credits \n\nA lot of libraries will capitalize every word but then have a black list of\nwords to skip such as \"a\" or \"or\", but this strategy isn't accurate at all.\nInstead, this script calls out\n[https://titlecaseconverter.com/](https://titlecaseconverter.com/) which does\nall of the heavy lifting.\n\nThe Title Case Converter website is not managed by me. All my script does is\npass a list of words to that site, allows you to pick which strategy to use and\ncurls everything over. You can check out the source code to see how it works.\n\nIt's basically a limited terminal UI to the site. I say \"limited\" because the\nwebsite provides additional information about how and why each word was\ncapitalized. It's an excellent resource for learning these styles in detail.\n\nThe author of the site gave me permission to create and open source this script.\nHe has put in hundreds of hours of effort into creating this service. If you\nwant to support his work, he has a\n[donation link](https://titlecaseconverter.com/) on the bottom of the page.\n\nThe owner of the Title Case Converter site generates income from\nads on his site, and using this CLI tool means you won't be viewing those ads.\nAlthough truthfully, you probably have an ad blocker running so it doesn't\nmatter, but in either case if you find his service useful and it saves you time\nthen donate something to him because without this service, this script won't\nexist.\n\n### What's with Setting `tcc` as the User Agent?\n\nI don't receive any kick backs on donations or anything like that and the\nauthor didn't even ask me to set a custom user agent, but I thought it would\nbe a good idea so that he can see which titles are being converted by this tool.\n\nIf you don't want this behavior, you can edit the script to remove `-A \"tcc\"`\nfrom the curl command but now the user agent is going to come up as Curl\ninstead which still shows you're using the service outside of his site. You\ncould also choose to set it to some well known browser's UA too, but you're not\ngaining much by doing this. Your titles are still sent to his server.\n\n### Why Not Just Use the Site Directly?\n\nYou absolute can and in some cases such as converting multiple titles at once,\nit's worth using the site directly.\n\nBut having a CLI script that produces a converted title as output allows you to\nintegrate it with your favorite code editor.\n\n## Integrating `tcc` with Your Code Editor\n\nYou can set up a custom key binding with your code editor which takes your\nselected text, passes that text in as input to this `tcc` script and then\nreplaces the selected text with `tcc`'s output. That work flow should work\nwith most popular editors.\n\n### Vim\n\nNo plugins are required, just this key binding. Select your text and hit\n`\u003cleader\u003etc` to convert it.\n```viml\nvnoremap \u003cleader\u003etc c\u003cC-R\u003e=system('tcc', getreg('\"'))[:-2]\u003cCR\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnickjj%2Ftitle-case-converter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnickjj%2Ftitle-case-converter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnickjj%2Ftitle-case-converter/lists"}