Absortio

Email → Summary → Bookmark → Email

GitHub - 3digitdev/poly: A generic text conversion/processing tool

Extracto

A generic text conversion/processing tool. Contribute to 3digitdev/poly development by creating an account on GitHub.

Resumen

Resumen Principal

Poly es una herramienta de código abierto alojada en GitHub que se presenta como una solución versátil para la conversión y procesamiento de texto. Desarrollada bajo el repositorio 3digitdev/poly, esta utilidad genérica está diseñada para manipular contenido textual de múltiples formatos, lo que la posiciona como un recurso valioso para desarrolladores, redactores técnicos y profesionales que requieren automatización en el tratamiento de documentos. La naturaleza "genérica" de la herramienta sugiere una flexibilidad extensible, permitiendo su adaptación a diversos casos de uso dentro del ecosistema del procesamiento de lenguaje natural y la transformación de datos textuales. Su disponibilidad en GitHub facilita la contribución comunitaria, lo que potencia su evolución continua y su integración con otras tecnologías emergentes. La herramienta representa una propuesta interesante dentro del panorama de utilidades de productividad basadas en texto, con un enfoque claro en la simplicidad funcional y la colaboración abierta.

Elementos Clave

  • Herramienta de procesamiento de texto: Poly está diseñada específicamente para convertir y manipular texto, lo que la hace útil en flujos de trabajo que requieren transformación automatizada de contenido.
  • Código abierto en GitHub: El proyecto está disponible públicamente en GitHub, lo que permite la inspección del código fuente, la colaboración comunitaria y la posibilidad de bifurcación para adaptaciones personalizadas.
  • Enfoque genérico: Su carácter genérico implica que no está limitada a un solo tipo de formato o tarea, sino que puede extenderse para abordar múltiples escenarios de procesamiento textual.
  • Invitación a contribuir: La descripción del proyecto incluye una llamada explícita a la contribución, destacando la filosofía colaborativa del desarrollo de software libre y la posibilidad de mejora continua por parte de la comunidad técnica.

Análisis e Implicaciones

La existencia de herramientas como Poly refuerza la tendencia hacia la automatización accesible del procesamiento de texto, democratizando recursos que antes requerían soluciones más complejas o costosas. Además, su naturaleza de código abierto promueve un ecosistema de innovación colaborativa, donde los usuarios no solo consumen la herramienta sino que también pueden refinarla y adaptarla a sus necesidades específicas. Esto tiene implicaciones directas en la eficiencia de flujos de trabajo técnicos y creativos que dependen del manejo constante de datos textuales.

Contexto Adicional

El proyecto se enmarca dentro de una creciente comunidad de desarrolladores que buscan crear herramientas modulares y reutilizables, alineadas con prácticas modernas de desarrollo ágil y sostenible. Al estar alojado en GitHub, Poly también se beneficia de infraestructura de control de versiones, documentación colaborativa y seguimiento de problemas, lo que asegura una base sólida para su mantenimiento y evolución a largo plazo.

Contenido

A simple command for converting and processing data from your clipboard.

Installation

Unix-based Install Script

NOTE: NEVER BLINDLY RUN ANY SCRIPT THAT ASKS FOR sudo!
Please inspect the file first by viewing the raw file from the URL in the command below before piping it to /bin/bash.

The install script needs sudo for copying the script into /usr/bin and setting it to be executable.

sudo /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/3digitdev/poly/master/install.sh)"

(requires sudo permission, also will prompt to install Python packages):

Windows Support [FUTURE]

This script is not designed to support Windows at this time.

Feel free to make a PR to add support and install instructions!

Usage

This script will expect you to have the text it will manipulate in your clipboard. When you run a command, it will do its job, and if it is successful, it will put the modified text back into your clipboard, as well as send it to stdout.

You can generally convert data with the following format:

poly <from_format> <to_format>[ options]

Any other generic command is simply

poly <command>[ options]

You can find some basic help from the --help option at any level:

poly --help
poly json --help
poly yaml --help
...etc

Chat Copypasta

A slowly-expanding list of chat programs to copy/paste out of into a more sane a readable format (thanks, emoji reactions...)

The intention is for each command to support both the webapp and the desktop client for each of the chat programs (Yes, they copy differently. No, you shouldn't be surprised.)

Supported chat program(s):

  • Slack

Future support:

  • Discord
  • MS Teams

Conversions

All of the following formats convert between each other:

  • JSON
  • YAML
  • TOML
  • JWT
  • URL Query String (see below for what this means)

NOTE: Some data types (like null in TOML) won't convert and might be dropped!

Additionally, you can convert between color formats:

  • Hex (e.g. #123, #123456, #1234, #12345678)
  • RGB (e.g. (10, 10, 10), (5,5,5))
  • RGBA (e.g. (10, 10, 10, 10), (5,5,5,5))

JWT Conversion

Converting to JWT requires two additional options:

  • -s, --secret: A secret string to encode/decode with
  • -a, --algorithm: An algorithm to encode/decode with

URL Query String Type Conversion

When converting from a query string you can use the -c, --convert flag to tell poly to attempt to convert all the values in the query string. They all start as strings, but it will attempt to do things like convert "true" to true for JSON/YAML, etc. This only works for the basic data types; it will not do anything smart like nested objects/lists.

Example:

assuming your clipboard contains a=1&b=true&c=a,b,c...

poly query-string json --convert

will result in

{
  "a": 1,
  "b": true,
  "c": "a,b,c"   // note that this is NOT ["a", "b", "c"]
}

?foo=bar,baz,bat will be converted as a string of {"foo": "bar,baz,bat"}, not as a list of {"foo": ["bar", "baz", "bat"]} If you want a list to be built, simply use the same query param multiple times.

More complex example (including list and complex object):

assuming your clipboard contains

http://foo.bar.com?a=1&b=true&c=a,b,c&b=false&d={"foo":"bar"}

(note that this contains a url! oooooo....)

running:

poly query-string json --convert --include-url

will result in:

{
  "url": "http://foo.bar.com",  // from --include-url
  "a": 1,
  "b": [true, false],  // multiple 'b' params were combined into a list
  "c": "a,b,c",   // note that this is NOT ["a", "b", "c"]
  "d": {"foo": "bar"}   // oooooo fancy
}

This is all done using the Python builtin ast.literal_eval() -- a completely safe function that will attempt simply to convert the string to a valid Python literal, but does not execute the string as code.

JSON formatting (json)

Manipulate JSON data from the clipboard

All commands start with poly json

  • pretty: pretty-prints the JSON in your clipboard and sends it back to the clipboard
  • one-line: outputs the JSON in your clipboard as a single line of text and sends it back to the clipboard

Base64 (b64)

Encode/Decode Base64 data

  • poly b64 from: Takes base64-encoded data from the clipboard, outputs the decoded data, and sends it back to the clipboard
  • poly b64 to: Takes data from the clipboard, outputs base64-encoded data, and sends it back to the clipboard

Hash Functions

Supports md5, sha1, sha256, and sha512

URL Query Param Encoding/Decoding

  • poly url encode
  • poly url decode

Encodes strings like

a=1&b=true&c=a,b,c&b=false&d={"foo": "bar", "baz": "bat"}

into

a=1&b=true&b=false&c=a%2Cb%2Cc&d=%7B%22foo%22%3A%20%22bar%22%2C%20%22baz%22%3A%20%22bat%22%7D

and decodes them back again.

Both encode/decode also support -q, --quote-plus which allows for encoding spaces as + instead of %20

String Manipulation

  • Line sorting (line-sort): This will attempt to sort the lines of a \n-separated string in your clipboard
  • Spongebob (sponge, spongebob): I WoNDeR What ThIS doEs
  • Smart Quotes (quotes): Replaces those stupid /// with proper quotes "/'
  • [Un]Escape Text (escape/unescape): Add/remove \ in a string for given characters

Fuente: GitHub