Estoy utilizando api.decorateCooked() para esto, pero como el contenido ya está «cocinado», se han eliminado todos los espacios «redundantes», por ejemplo, el espacio antes de printf en el ejemplo anterior.
¿Cómo puedo acceder al texto «sin cocinar» tal como lo ingresó el usuario?
Para ser claro; lo que quiero que mi componente de tema soporte es permitir que el usuario escriba algo como:
¿Es posible instalar un plugin personalizado en una instancia de Discourse alojada por Discourse en el plan gratuito? De todos modos, no he encontrado cómo hacerlo.
¿Sería posible implementar soporte para raw en los componentes de tema? De ser así, ¿aceptarían un PR para hacerlo?
El helper wrap no hace lo que pedí. También elimina la sangría.
Lamentablemente, nuestros planes gratuito, estándar y empresarial no permiten plugins personalizados. Utilizamos un clúster que aloja a muchos clientes diferentes y no contamos con un mecanismo para ejecutar un plugin solo para un cliente.
Soportar la capacidad de inyectar una extensión de markdown mediante un componente de tema es algo que he considerado en el pasado, pero no tenemos planes concretos de implementarlo. Sería extremadamente difícil de añadir.
¿Qué tal si se envuelve dos veces? Esto mantendrá toda la indentación.
[wrap=test]
```
1
1
3
```
[/wrap]
Quizás incluso usar algo como esto funcionará; tendrás un elemento distinto con el que trabajar:
¿Es extremadamente difícil también para ti, o solo para alguien como yo sin conocimientos previos de la implementación? ¿En qué radica la dificultad? ¿Sería más fácil hacer algo más sencillo que una extensión completa de Markdown, como el acceso de solo lectura a lo crudo?
El front-end no recibe el contenido del mensaje en formato raw. Solo recibe la versión procesada. Esto significa que las cargas útiles enviadas al cliente son más pequeñas. Además, el servidor es finalmente el responsable de la conversión de Markdown a HTML. Si hiciéramos todo esto en tiempo de ejecución en el navegador, añadiríamos muchos costos adicionales y tendríamos que preocuparnos por vectores de seguridad complejos.
Solo para aclarar, ¿sabes que si lo que realmente quieres son bloques de código, puedes envolverlos con tres comillas invertidas, verdad? No puedo determinar en qué medida tu ejemplo es una metáfora.
@pfaffman No sé a qué te refieres con bloques de café, pero sí sé que tres acentos graves generan un bloque de código.
No entiendo por qué mi ejemplo debería ser una metáfora. ¿Para qué? La imagen que publiqué es una captura de pantalla para mostrar lo que mi componente de tema genera para el código dado.
Sí, supongo que sí. No he visto el plugin de matemáticas, pero suena similar en concepto. Es la misma función básica que la del Discourse Graphviz, pero este puede hacer cosas mucho más avanzadas, como transiciones animadas entre gráficos, y tiene un montón de opciones para controlarlo y darle estilo.
Aquí está el repositorio de GitHub si estás interesado. Todavía no está implementado oficialmente en ningún lugar porque primero necesito escribir una documentación detallada sobre cómo usarlo.
Entonces parece que funciona, y quizás me esté perdiendo algo, de que la solución sería enviar tus cambios como un PR y luego estaría disponible en los planes empresariales.
Lo siento, no entiendo a qué te refieres. Es un componente de tema y puede instalarse en cualquier instancia de Discourse a través de la interfaz web por parte de su administrador, independientemente del plan que tengan.
Probablemente no lo entienda. Pero parecía que lo que quieres hacer es extender el plugin de graphviz para admitir más funciones de graphviz y que tendría más sentido integrarlas en ese plugin.
Pero realmente no entiendo a qué te refieres, así que podría estar muy equivocado.
Ahora entiendo lo que querías decir. No, como estamos en un plan gratuito, no pudimos usar ese plugin, por lo que desarrollé un componente de tema en su lugar. Las funciones adicionales fueron como un bonus que se pudo añadir fácilmente porque se basa en una biblioteca diferente a la del plugin existente.
Los plugins y los componentes de tema son muy diferentes, así que no creo que sea posible reutilizar código entre ellos, pero supongo que alguien podría añadir la misma funcionalidad al plugin existente si le interesa.