Una utilidad CLI, una caja de óxido, un rock Lua, módulo de Python, módulo JavaScript, complemento Neovim y paquete SILE para fundir cadenas a caso de título (y otros casos) de acuerdo con guías de estilo específicas de locales que incluyen soporte turco.
Este proyecto nació de la frustración con autores y editores dejando todos los títulos de CAPS en las fuentes de Markdown. No hay herramientas que pueda encontrar correctamente compatibles con las cadenas de títulos (que son más versátiles para fines compatibles). El problema fue doblemente difícil porque la mayor parte de mi trabajo es adyacente al turco, y aún menos herramientas estuvo disponible y tiene problemas especiales con las conversiones de casos. Muchas herramientas pueden manejar palabras de una sola carcasa, algunas herramientas específicas del programador manejan tokens e identificadores de red, y sin embargo, algunas otras pueden manejar cadenas inglesas . Pero nada parecía estar ahí fuera para cambiar el caso de la prosa turca.
La CLI predeterminada es TitLecase e English, pero las opciones de caja inferior, superior y de oraciones también están disponibles. Las API de la biblioteca Rust, Lua, Python y JavaScript tienen funciones específicas para cada operación. Siempre que sea posible, las API actualmente predeterminadas a las reglas de inglés y (para inglés) la Guía de estilo Gruber, pero otras están disponibles.
El estilo turco sigue las pautas del Instituto de Lenguas Turquía.
Para el inglés, se conocen tres guías de estilo: Associated Press (AP), Manual de estilo de Chicago (CMOS) y Daring Fireball (Gruber) de John Gruber. El estilo Gruber es, con mucho, el más completo, implementado por la caja TitLecase. El estilo CMOS maneja varias partes del habla pero tiene problemas relacionados con la puntuación. El estilo AP está en gran medida sin implementar.
Las contribuciones son bienvenidas para un mejor soporte de guía de estilo o otros idiomas.
El uso de la CLI es bastante simple. La entrada puede ser argumentos de shell o stdin. Los argumentos pueden controlar las diversas opciones. Para obtener información sobre el uso completo, consulte decasify --help o 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 Para instalar, primero verifique su distribución de paquetes, por ejemplo, para Arch Linux, simplemente instale a través de pacman -S decasify o para Homebrew a través de brew install decasify .
De lo contrario, para muchas plataformas, puede ejecutarlo directamente o instalarlo en un shell usando copos Nix:
$ nix run github:alerque/decasify Para hacer una instalación completa desde la fuente, tome el tarball adjunto a la última versión o use GIT para clonar el repositorio. No use los archivos "Código fuente" ZIP/TAR.GZ vinculados desde las versiones, elija el archivo fuente tar.zst . Si usa un GIT Cerrar, primero ejecute ./bootstrap.sh después de la pago. Esto no es necesario en la fuente de lanzamiento de tarballs. A continuación, configure e instale con:
$ ./configure
$ make
$ sudo make install Tenga en cuenta que la instalación desde la fuente tiene la ventaja de incluir una página man y finalización de shell. Se aplican todas las opciones habituales de AutoTools, consulte --help para obtener más detalles. La opción más utilizada, especialmente para los paquetes de distribución, es probablemente --prefix /usr para cambiar la ubicación de instalación desde el valor predeterminado de /usr/local .
Por supuesto, el binario desnudo también se puede instalar directamente con carga:
$ cargo install --features cli decasify En su archivo Cargo.toml .
[ dependencies ]
decasify = " 0.8 "Luego use las funciones y tipos de caja en su proyecto algo como esto:
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}" } ;
} Depende del Luarock en su proyecto o instale con luarocks install decasify :
dependencies = {
" decasify "
}Luego importe y use las funciones proporcionadas:
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 ) Depende del módulo de Python en su proyecto o instale con pip install decasify :
[ project ]
dependencies = [
" decasify "
]Luego importe y use las funciones y clases de tipo proporcionadas:
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 ) Depende del módulo JavaScript basado en WASM en su proyecto con npm add decasify :
Luego importe y use las funciones y clases proporcionadas:
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 ) Usando rocks.nvim, simplemente ejecute :Rocks install decasify.nvim .
Usando lazy.nvim, simplemente agregue { "alerque/decasify" }
Usando otros gerentes de complementos que no detectan automáticamente las dependencias, deberá especificar manualmente la dependencia y/o asegurarse de que la roca Lua para Decasify esté disponible, luego usar este repositorio como un complemento, sin embargo, su administrador de complementos lo maneja.
-- for packer.nvim
use {
" alerque/decasify " ,
rocks = { " decasify " },
} Utilizando no un administrador de complementos, asegúrese de que el Decasify Rock esté instalado que coincida con la versión de Lua Neovim está construida con, luego copie plugin/decasify.lua a donde sea el directorio de complementos de su usuario.
Un nuevo comando :Decasify estará disponible (con subcomandos opcionales para casos que no sean el caso del título) que transforma la línea actual o cualquier rango de líneas. El caso predeterminado, la ubicación y la guía de estilo se pueden cambiar (antes o después de la carga) con variables locales globales o de búfer:
-- 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 " El Sile Typeetter aprovecha a Luarocks para administrar paquetes de terceros. El decasify.sile rock se puede instalar con luarocks install decasify.sile . Por lo general, querrá ajustar la versión LUA para que coincida con su instalación de SILE, tal vez con luarocks --lua $(sile -q <<< SILE.lua_version) install decasify.sile . Además, desea usar --local para instalar en su cuenta de usuario en lugar de la raíz del sistema, o --tree lua_modules para instalar localmente dentro de un solo proyecto. Cargarlo en un documento SILE utiliza el use[module=package.decasify] (consulte las notas en el manual de SILE sobre la configuración de las rutas del paquete si está instalado a través de --local ). Una vez cargado, el paquete expone una función decasify{} que puede tomar cualquier combinación de configuración de case , locale y style y aplica la transformación apropiada al contenido. Por defecto, rastreará el idioma del contenido del documento.