Capitalización del título

Fondo

Los desarrolladores escriben tickets JIRA; los desarrolladores no diseñan los elementos del ticket de manera consistente. Nos gustaría presentar los resúmenes de los tickets a los clientes, pero con un formato coherente.

Problema

Usamos FreeMarker Pre-Processor (fmpp), que admite mayúsculas y minúsculas, pero estas funciones simples pierden información (p. ej., "BCServices" se convierte en "Bcservices" y "iPhone" se convierte en "Iphone").

Ejemplos

Hay un código JavaScript que hace un gran trabajo al hacer que los resúmenes sean uniformes:

Esto formatea los siguientes resúmenes como se esperaba:

  • En el iPhone, la transcripción se extiende fuera del marco de la pantalla
  • Rendimiento del informe PEAR y GNA
  • BCMailPlusFTPClient envía documento sin ID de documento
  • JWebUnit: problema con la etiqueta de actualización meta main.xhtml de pedidos que no son PEN

Requisitos

Estamos buscando algo que se pueda ejecutar desde la línea de comandos (como parte de un programa por lotes) que no requiera un binario enorme. Idealmente:

@echo off
headline < "On iPhone the Transcript Extends Outside of Screen Frame" > case.txt
set /P title=<case.txt

Pie-in-the-sky permitiría emitir diferentes estilos en la línea de comando:

@echo off
headline --style=CMS < "On iPhone the Transcript Extends Outside of Screen Frame" > case.txt
set /P title=<case.txt

No estamos buscando módulos NodeJS, código Ruby, programas Go, scripts Perl y similares. JavaScript simple está bien (no es ideal ya que requiere algo como Rhino).

Pregunta

¿Qué Java, C, lote de DOS, binario pequeño de Windows, API REST gratuita/ilimitada o utilidad de shell de Unix permite que el procesamiento de oraciones sea "caso principal" según los estilos manuales estándar?

Apéndice

Es excesivo incluir un motor de JavaScript (Rhino) para ejecutar una expresión regular. Aunque mi respuesta funciona como se esperaba (incluida una clase de Java que realiza la tarea), se agradecen sugerencias alternativas.

Respuestas (1)

Rinoceronte

Dado que Java se incluyó en los requisitos:

Ejemplo

Correr:

java -cp rhino\lib\rhino.jar org.mozilla.javascript.tools.shell.Main ^^
-e "load( 'to-title-case.js' ); ^^
print(""BCMailPlusFTPClient sends document without document ID"".toHeadlineCase())"

Producción:

BCMailPlusFTPClient envía documento sin ID de documento