Estoy trabajando en un plugin de Markdown y tengo problemas para agregar una configuración del sitio que permita desactivar la función. Escribí el plugin siguiendo la estructura de Discourse Footnote, que incluye una configuración para desactivar ese plugin. Instalé el plugin de notas al pie y verifiqué que se puede desactivar desde la interfaz de usuario y que su prueba correspondiente pasa. Sin embargo, desactivar mi plugin desde las configuraciones del sitio no tiene ningún efecto, y la prueba unitaria lo confirma al fallar.
No estoy seguro de qué estoy haciendo de manera diferente en comparación con el plugin de notas al pie. Es posible que mi uso de opts.features sea completamente incorrecto o que esté haciendo suposiciones erróneas, ya que, como en casi todos los demás lugares, simplemente reemplacé “footnotes” por “ruby”. Cualquier ayuda sería apreciada.
Los aspectos clave relacionados con la configuración del sitio incluyen:
Y esta es la prueba que sigue fallando (aún no está en el repositorio):
it "can be disabled" do
SiteSetting.enable_markdown_ruby = false
markdown = <<~MD
Here is some text: {漢字|かん|じ}.
MD
html = <<~HTML
<p>Here is some text: {漢字|かん|じ}.</p>
HTML
cooked = PrettyText.cook markdown.strip
expect(cooked).to eq(html.strip)
end
No es sorprendente que el error indique que se está obteniendo el texto procesado como si el Markdown aún se aplicara.
expected: "<p>Here is some text: {漢字|かん|じ}.</p>"
got: "<p>Here is some text: <ruby>漢<rt>かん</rt>字<rt>じ</rt></ruby>.</p>"
Lo que suelo hacer en casos como este es empezar a imprimir cosas.
¿Has intentado agregar algunas declaraciones internas de console.log que muestren variables? Podrían ayudar a aclarar la situación. Creo que la configuración se envía al motor de markdown; tu prueba parece legítima.
He resuelto el problema. De hecho, era un problema con la forma en que usaba opts.features, tal como sospechaba. Después de revisar el código central de markdown, me di cuenta de que el nombre de la característica se basa en el nombre del archivo. Tenía mi archivo llamado markdown-ruby.js.es6, por lo que el nombre de la característica era implícitamente markdown-ruby, aunque en mi código estaba asignando la característica ruby. Cambiar el nombre del archivo a ruby.js.es6 resolvió el problema.
Todavía me resulta un poco poco claro si opts.features que estoy modificando representa todas las características o solo el subconjunto de características de markdown. Si son todas las características, ruby me parece un poco demasiado corto/vago y podría cambiar el nombre del archivo y la característica a markdown-ruby solo para estar seguro.