Un utilitaire CLI, une caisse de rouille, un module Lua Rock, un module Python, un module JavaScript, un plugin Neovim et un package SILE pour lancer des chaînes au cas titre (et à d'autres cas) selon des guides de style spécifiques des locaux, y compris le support turc.
Ce projet est né de frustration avec les auteurs et les éditeurs qui laissent tous les titres CAPS dans des sources de marquage. Aucun outillage, je n'ai pu trouver correctement les casting pris en charge à des chaînes basées sur un titre (qui sont plus polyvalentes à des fins de composition). Le problème était doublement difficile car la plupart de mon travail est adjacent au turc, et encore moins d'outillage était disponible et a des problèmes spéciaux avec les conversions de cas. De nombreux outils peuvent gérer les mots simples de boîtier, certains outils spécifiques du programmeur gèrent les jetons et les identificateurs de recassage, et pourtant quelques autres peuvent gérer les cordes en anglais . Mais rien ne semblait être là-bas pour changer le cas de la prose turque.
La CLI est par défaut en titlecase et en anglais, mais des options de case inférieure, supérieure et de phrase sont également disponibles. Les API de la bibliothèque Rust, Lua, Python et JavaScript ont des fonctions spécifiques à chaque opération. Dans la mesure du possible, les API sont actuellement par défaut des règles anglaises et (pour l'anglais) le GUBER STYLE Guide, mais d'autres sont disponibles.
Le style turc suit les directives du Turkish Language Institute.
Pour l'anglais, les guides à trois style sont connus: Associated Press (AP), Chicago Manual of Style (CMOS) et John Gruber's Daring Fireball (Gruber). Le style Gruber est de loin le plus complet, mis en œuvre par la caisse TitleCase. Le style CMOS gère un certain nombre de parties de la parole mais a des problèmes liés à la ponctuation. Le style AP est largement sans application.
Les contributions sont les bienvenues pour un meilleur support de guide de style ou d'autres langues.
L'utilisation de la CLI est assez simple. L'entrée peut être soit des arguments de shell ou STDIN. Les arguments peuvent contrôler les différentes options. Pour les informations d'utilisation complètes, vérifiez decasify --help ou man decasify .
$ decasify -l tr ILIK SU VE İTEN RÜZGARLAR
Ilık Su ve İten Rüzgarlar
$ echo ILIK SU VE İTEN RÜZGARLAR | decasify -l tr
Ilık Su ve İten Rüzgarlar
$ echo foo BAR AND baz: an alter ego | decasify -l en -s gruber
Foo BAR and Baz: An Alter Ego Pour installer, vérifiez d'abord votre distribution pour les packages, par exemple pour Arch Linux, il suffit d'installer via pacman -S decasify ou pour Homebrew via brew install decasify .
Sinon, pour de nombreuses plates-formes, vous pouvez l'exécuter directement ou l'installer sur un shell à l'aide de Nix Flakes:
$ nix run github:alerque/decasify Pour effectuer une installation complète de Source, saisissez le tarball attaché à la dernière version ou utilisez GIT pour cloner le référentiel. N'utilisez pas les fichiers "code source" zip / tar.gz liés à partir des versions, optez pour le fichier source tar.zst . Si vous utilisez une fermeture Git, exécutez d'abord ./bootstrap.sh après la caisse. Ce n'est pas nécessaire dans la source de la source Tarballs. Ensuite, configurez et installez avec:
$ ./configure
$ make
$ sudo make install Notez que l'installation à partir de Source a l'avantage de l'inclusion d'une page et d'une complétion de coquille. Toutes les options habituelles AutoTools s'appliquent, voir --help pour plus de détails. L'option la plus couramment utilisée en particulier pour les packagers à distribution est probablement --prefix /usr pour modifier l'emplacement d'installation à partir de la valeur par défaut /usr/local .
Bien sûr, le binaire nu peut également être installé directement avec le fret:
$ cargo install --features cli decasify Dans votre fichier Cargo.toml .
[ dependencies ]
decasify = " 0.8 "Ensuite, utilisez les fonctions et types de caisse dans votre projet quelque chose comme ceci:
use decasify :: titlecase ;
use decasify :: { Locale , StyleGuide } ;
fn demo ( ) {
let input = "ILIK SU VE İTEN RÜZGARLAR" ;
let output = titlecase ( input , Locale :: TR , StyleGuide :: LanguageDefault ) ;
eprintln ! { "{output}" } ;
let input = "title with a twist: a colon" ;
let output = titlecase ( input , Locale :: EN , StyleGuide :: DaringFireball ) ;
eprintln ! { "{output}" } ;
} Dépendez sur le Luarock dans votre projet ou installez avec luarocks install decasify :
dependencies = {
" decasify "
}Ensuite, importez et utilisez les fonctions fournies:
local decasify = require ( " decasify " )
local input = " ILIK SU VE İTEN RÜZGARLAR "
local output = decasify . titlecase ( input , " tr " )
print ( output )
input = " title with a twist: a colon "
output = decasify . titlecase ( input , " en " , " gruber " )
print ( output ) Dépendez sur le module Python de votre projet ou installez avec pip install decasify :
[ project ]
dependencies = [
" decasify "
]Ensuite, importez et utilisez les fonctions fournies et les classes de type:
from decasify import *
input = "ILIK SU VE İTEN RÜZGARLAR"
output = titlecase ( input , Locale . TR )
print ( output )
input = "title with a twist: a colon"
output = titlecase ( input , Locale . EN , StyleGuide . DaringFireball )
print ( output ) Dépensez au module JavaScript basé sur WASM dans votre projet avec npm add decasify :
Ensuite, importez et utilisez les fonctions et classes fournies:
import { titlecase , uppercase , lowercase , Locale , StyleGuide } from 'decasify' ;
var input = "ILIK SU VE İTEN RÜZGARLAR"
var output = titlecase ( input , Locale . TR )
console . log ( output )
var input = "title with a twist: a colon"
var output = titlecase ( input , Locale . EN , StyleGuide . DaringFireball )
console . log ( output ) Utilisation de rocks.nvim, exécutez simplement :Rocks install decasify.nvim .
Utilisation de Lazy.nvim, ajoutez simplement { "alerque/decasify" }
À l'aide d'autres gestionnaires de plugins qui ne détectent pas automatiquement les dépendances, vous devrez spécifier manuellement la dépendance et / ou vous assurer que le Rock Lua pour Decasify est disponible, puis utilisez ce référentiel comme plugin, mais votre gestionnaire de plugin le gère.
-- for packer.nvim
use {
" alerque/decasify " ,
rocks = { " decasify " },
} En utilisant aucun gestionnaire de plugin, assurez-vous que le rock decasify est installé correspondant à la version de Lua Neovim avec, puis copiez plugin/decasify.lua où se trouve le répertoire de plugin de votre utilisateur.
Une nouvelle commande :Decasify sera disponible (avec des sous-commandes en option pour des cas autres que le cas de titre) qui transforme la ligne actuelle ou toute plage de lignes. Le cas par défaut, les paramètres régionaux et le guide de style peuvent être modifiés (avant ou après le chargement) avec des variables locales globales ou tampons:
-- Set the default target case globally
vim . g . decasify_case = " title "
-- Change the locale for the current buffer
vim . b . decasify_locale = " tr "
-- Change the default style guide globally
vim . g . decasify_style = " gruber " Le compositeur SILE exploite Luarocks pour gérer les packages tiers. Le rocher decasify.sile peut être installé avec luarocks install decasify.sile . En règle générale, vous voudrez ajuster la version LUA pour correspondre à votre installation SILE, peut-être avec luarocks --lua $(sile -q <<< SILE.lua_version) install decasify.sile . De plus, vous souhaitez utiliser --local à installer sur votre compte d'utilisateur au lieu de la racine du système, ou --tree lua_modules pour s'installer localement dans un seul projet. Le chargement dans un document SILE utilise le use[module=package.decasify] (voir les notes dans le manuel SILE sur le réglage des chemins de package si vous avez installé via --local ). Une fois chargé, le package expose une fonction decasify{} qui peut prendre n'importe quelle combinaison de paramètres de case , de paramètres locale et style et applique la transformation appropriée au contenu. Par défaut, il suivra la langue du contenu du document.