Come limitare alcune funzionalità di markdown per il primo post?

Voglio limitare alcune funzionalità markdown per il primo post dell’argomento, che proviene dal mio plugin.

Potrebbe essere facilmente implementato sul lato client accedendo all’attributo topicFirstPost del modello composer. Tuttavia, sul lato server in lib/pretty_text.rb e model/post.rb, ho scoperto che solo topic_id viene passato al metodo cook. Potrei eventualmente controllare l’attributo posts_count dell’argomento, ma non funzionerebbe durante il rebaking.

Forse non dovrei usare alcuno stato nel processo markdown-it?

Un altro modo per raggiungere questo obiettivo è generare un segnaposto usando markdown, quindi aggiornare l’anteprima manualmente e ascoltare alcuni eventi post-process cook sul lato server, ma ciò potrebbe richiedere del lavoro aggiuntivo.

Preferirei il primo modo, se possibile. Grazie per qualsiasi suggerimento.

Non ho idea, ma cosa fai con l’HTML? È permesso anche il markdown sarebbe limitato, giusto?

Hai scritto un plugin che genera testo che non vuoi venga renderizzato?

Puoi dire di più su cosa stai cercando di fare?

@Jagster @pfaffman
Per favore immagina che il plugin aggiunga alcuni tag BBCode personalizzati o racchiuda qualsiasi testo con un tag HTML personalizzato per un uso successivo, come la decorazione. Non voglio che abbia effetto al di fuori del primo post (o in base ad altre condizioni), poiché non ne ho bisogno e potrebbe causare alcuni effetti collaterali.

Inoltre, potrei aver trovato una possibile soluzione lato server. Racchiude il metodo cook del modello Post. Non l’ho ancora testato.

class ::Post
  # wrap the original cook method to add features option
  # see the markdown method in lib/pretty_text.rb
  alias_method :original_cook, :cook
  def cook(raw, opts = {})
    features = {
      'feature-name':  is_first_post?
    }

    if opts.has_key?(:features)
      opts[:features].merge!(features)
    else
      opts[:features] = features
    end

    original_cook(raw, opts)
  end
end
4 Mi Piace