Referencia del DSL del Motor de Reglas

El Lenguaje de Dominio Específico (DSL) de RuleDock te permite crear potentes reglas de organización usando expresiones legibles. Esta referencia cubre todos los operadores y patrones disponibles.

Descripción General

Una expresión DSL evalúa las propiedades de un icono de escritorio y devuelve verdadero o falso. Si es verdadero, el icono se organiza en el fence de destino.

Ejemplo Básico
ext == '.png'

Esto coincide con cualquier archivo con extensión .png.

Propiedades Disponibles

Puedes hacer referencia a estas propiedades de cada icono de escritorio:

Propiedad Descripción Valor de Ejemplo
ext Extensión del archivo (incluyendo el punto) .png, .docx, .exe
name Nombre del archivo (sin ruta) Screenshot_2026.png
path Ruta completa del archivo C:\Users\John\Desktop\file.txt

Operadores de Comparación

Igualdad (==)

Verifica si una propiedad es exactamente igual a un valor. No distingue entre mayúsculas y minúsculas.

ext == '.PDF'     # Coincide con .pdf, .PDF, .Pdf, etc.
name == 'readme.txt'

Desigualdad (!=)

Verifica si una propiedad NO es igual a un valor.

ext != '.tmp'     # Excluir archivos temporales
path != 'C:\Windows'

Contiene (contains)

Verifica si una propiedad contiene una subcadena. No distingue entre mayúsculas y minúsculas.

name contains 'backup'   # Coincide con "backup.zip", "my_backup_2026.rar"
path contains 'Projects'

En Lista (in [...])

Verifica si una propiedad coincide con cualquier valor de una lista.

ext in ['.jpg', '.png', '.gif', '.webp']   # Archivos de imagen
ext in ['.doc', '.docx', '.pdf']          # Documentos

Operadores Lógicos

Y (and)

Ambas condiciones deben ser verdaderas.

ext == '.png' and path contains 'Screenshots'

# Coincide: C:\Users\Screenshots\image.png
# No coincide: C:\Users\Documents\image.png

O (or)

Cualquiera de las condiciones debe ser verdadera.

ext == '.exe' or ext == '.msi'

# Coincide: setup.exe, install.msi

Combinar AND y OR

AND tiene mayor precedencia que OR. Usa expresiones complejas con cuidado:

# Esto significa: (A AND B) OR C
ext == '.png' and name contains 'screenshot' or ext == '.gif'

Entrecomillado de Cadenas

Los valores pueden ir entre comillas simples o dobles:

name contains "my file"    # Comillas dobles
name contains 'my file'    # Comillas simples
ext == .txt               # Sin comillas (valores simples)

Usa comillas cuando los valores contengan espacios o caracteres especiales.

Tipo de Regla Regex

Para coincidencias de patrones más allá del DSL, usa el tipo de regla Regex (no es un operador de expresión). Esto aplica un patrón regex al nombre del archivo.

Ejemplos de Regex
# Coincide con "Screenshot_20260205_123456.png"
^Screenshot_\d{8}_\d{6}\.png$

# Coincide con patrones de versión como "app_v2.1.exe"
_v\d+\.\d+\.exe$

# Coincide con archivos que comienzan con "backup" o "archive"
^(backup|archive)

# Coincide con cualquier archivo numerado
\(\d+\)\.[a-z]+$   # p. ej., "file (1).txt"

Seguridad de Regex

Todos los patrones regex se evalúan con:

  • Coincidencia sin distinción de mayúsculas y minúsculas por defecto
  • Tiempo límite de 200ms para prevenir retroceso catastrófico (ReDoS)
  • Los patrones que exceden el tiempo límite se omiten silenciosamente

Ejemplos Completos

Organizar Archivos de Diseño

Destino: fence "Diseño"
ext in ['.psd', '.ai', '.xd', '.fig', '.sketch']

Organizar Archivos de Desarrollo

Destino: fence "Código"
ext in ['.js', '.ts', '.py', '.cs', '.java', '.cpp', '.h']

Organizar Capturas de Pantalla del Proyecto

Destino: fence "Capturas del Proyecto"
ext in ['.png', '.jpg'] and path contains 'Projects'

Organizar Documentos de Trabajo (Excluir Personales)

Destino: fence "Docs de Trabajo"
ext in ['.docx', '.xlsx', '.pptx'] and path contains 'Work' and name != 'personal'

Instaladores y Archivos de Configuración

Destino: fence "Instaladores"
ext in ['.exe', '.msi'] and name contains 'setup'
or
ext in ['.exe', '.msi'] and name contains 'install'

Solución de Problemas

La expresión no coincide

  • Verifica errores tipográficos en los nombres de propiedades (ext, name, path)
  • Recuerda que las comparaciones no distinguen entre mayúsculas y minúsculas
  • Usa la función de Vista Previa en la configuración de reglas para probar
  • Verifica que el archivo realmente tenga la extensión que esperas

El regex no funciona

  • Prueba tu regex primero en regex101.com
  • Escapa los caracteres especiales: \. para un punto literal, \\ para barra invertida
  • Los patrones complejos pueden exceder el tiempo límite—simplifícalos si es necesario