1. Renombrar un campo
Cambia el nombre de una columna sin alterar sus valores.
rename "price_usd" to "price";Parámetros: campo, nombre nuevo
El lenguaje de RuleGenius para validar y transformar datos, con sintaxis y ejemplos en una referencia práctica.
RuleScript es el lenguaje de dominio específico propuesto originalmente para expresar transformaciones y validaciones en texto legible. Su idea central separa la declaración de una regla del entorno que la ejecuta.
Los ejemplos usan nombres de campo entre comillas, palabras clave explícitas y mensajes de error opcionales. Sirven de referencia del lenguaje; los casos límite y el soporte real requieren un motor definido.
rename "price_usd" to "price";
split "full_name" into "first_name", "last_name" by " ";
map "country_code" [US: "United States", CA: "Canada", MX: "Mexico"];validate "price": number, min 0, max 10000, on error "Price must be valid";
validate "country": required, in ["United States", "Canada", "Mexico"], on error "Invalid country";Aplica el renombrado y el mapeo antes de comprobar los valores resultantes. Conserva los datos originales y explicita el orden de las transformaciones.
rename "price_usd" to "price";
validate "price": number, min 0, max 10000, on error "Price must be valid";validate "discount": number, on error "Discount must be numeric", if "price" > 100;Las instrucciones terminan con punto y coma. El orden de las cláusulas opcionales y el comportamiento ante campos ausentes aún deben especificarse para el motor.
21 entradas visibles
No hay reglas que coincidan. Prueba otra búsqueda.
Cambia el nombre de una columna sin alterar sus valores.
rename "price_usd" to "price";Parámetros: campo, nombre nuevo
Separa un campo en varias columnas con un delimitador. Revisa los casos de nombres compuestos antes de usar el ejemplo.
split "full_name" into "first_name", "last_name" by " ";Parámetros: campo, campos destino, delimitador
Une varias columnas utilizando el separador indicado.
merge "first_name", "last_name" into "full_name" with " ";Parámetros: campos origen, campo destino, separador
Sustituye códigos por los valores definidos en un mapa explícito.
map "country_code" [US: "United States", CA: "Canada", MX: "Mexico"];Parámetros: campo, mapa
Declara una conversión de tipo. El comportamiento ante valores no convertibles necesita definición del motor.
convert "quantity" to integer;Parámetros: campo, tipo destino
Expresa un campo derivado a partir de otras columnas. La expresión debe evaluarse según las reglas del lenguaje.
calculate "total" as "price * quantity";Parámetros: campo nuevo, expresión
Convierte texto a minúsculas con la operación documentada.
normalize "name" to lowercase;Parámetros: campo, modo de mayúsculas
Reemplaza un valor concreto, como null, por un valor explícito.
replace "status" null with "N/A";Parámetros: campo, valor anterior, sustitución
Redondea al número indicado de decimales. La regla de redondeo depende de la implementación.
round "price" to 2 decimal places;Parámetros: campo, decimales
Ejemplo de enmascaramiento de un campo. No demuestra anonimización irreversible ni garantiza privacidad.
anonymize "email" with "****@domain.com";Parámetros: campo, máscara
Excluye las columnas indicadas del resultado.
drop "temp_field";Parámetros: campo(s)
Ejemplo de sustitución por la media. Evalúa su efecto sobre el significado de los datos.
impute "age" missing with average;Parámetros: campo, método de imputación
Define el orden de las columnas de salida.
reorder columns "id", "name", "email";Parámetros: lista ordenada de campos
Conserva las filas que satisfacen la condición.
filter "age" > 18;Parámetros: condición
Comprueba que un campo no esté vacío ni sea nulo.
validate "name": required, on error "Name is required";Parámetros: campo; on error opcional
Expresa el tipo esperado: number, integer, string, date, time o datetime.
validate "age": number, on error "Age must be numeric";Parámetros: campo, tipo; on error opcional
Declara límites mínimo y máximo para un valor.
validate "price": number, min 0, max 10000, on error "Price must be valid";Parámetros: campo, min, max; on error opcional
Comprueba que el valor figure en una lista explícita.
validate "country": in ["United States", "Canada", "Mexico"], on error "Invalid country";Parámetros: campo, lista; on error opcional
Compara el valor con un umbral usando > o >=.
validate "discount": > 0, on error "Discount must be positive";
validate "price": >= 0, on error "Price must be non-negative";Parámetros: campo, umbral; on error opcional
Compara el valor con un umbral usando < o <=.
validate "age": < 18, on error "Age must be below 18";
validate "discount": <= 50, on error "Discount must be 50% or less";Parámetros: campo, umbral; on error opcional
Comprueba igualdad con equal o excluye valores mediante not in.
validate "status": equal "Active", on error "Status must be active";
validate "status": not in ["Inactive", "Suspended"], on error "Invalid status";Parámetros: campo, valor o lista excluida; on error opcional
Los archivos de reglas usan la extensión .rules. La CLI lee estos archivos directamente; el ejemplo muestra el comando previsto.
rg-run rules.rules input.csv output.csvEl diseño de la API contempla lotes CSV y registros JSON individuales con archivos .rules. Las rutas ilustran la interfaz prevista. Las cargas multipart envían el archivo CSV como una parte de archivo.
POST /api/v1/validate/my_rules.rules
Content-Type: multipart/form-data; boundary=example
--example
Content-Disposition: form-data; name="file"; filename="input.csv"
Content-Type: text/csv
price,country
25,US
--example--POST /api/v1/validate/my_rules.rules
Content-Type: application/json
{"record":{"full_name":"Sample Person","price":-50,"country_code":"US"}}{"status":"error","errors":[{"field":"price","error":"Price must be between 0 and 10000"}]}El procesamiento por lotes comprueba una entrega completa; la validación por registro comprueba un evento o envío. Una implementación futura debe definir errores y coherencia entre interfaces.
rg-transform step1.rules input.csv \
| rg-transform step2.rules \
| rg-validate rules.rules --output output.csvCada paso del proceso lee un archivo .rules. El motor debe definir el formato de los datos entre pasos y los códigos de salida.
La ejecución privada es una opción de despliegue en estudio para que los equipos puedan ejecutar reglas en su propia infraestructura. Aún no está disponible.
Esta demostración comprueba un precio numérico entre 0 y 10000 y un código US, CA o MX. Es JavaScript escrito para estas dos comprobaciones, no un parser de RuleScript ni el futuro motor. Los datos permanecen en esta página.