Quero limitar alguns recursos do markdown para o primeiro post do tópico, que é do meu plugin.
Isso poderia ser facilmente implementado no lado do cliente acessando o atributo topicFirstPost do modelo do composer. No entanto, no lado do servidor, em lib/pretty_text.rb e model/post.rb, descobri que apenas o topic_id é passado para o método cook. Eu poderia possivelmente verificar o atributo posts_count do tópico, mas isso não funcionaria ao refazer.
Talvez eu não deva usar nenhum estado no processo do markdown-it?
Outra maneira de conseguir isso é gerar um placeholder usando markdown, depois atualizar a prévia manualmente e ouvir alguns eventos de pós-processamento do cook no lado do servidor, mas isso pode exigir algum trabalho adicional.
Eu preferiria a primeira maneira, se possível. Obrigado por quaisquer sugestões.
@Jagster@pfaffman
Por favor, imagine que o plugin adiciona algumas tags BBCode personalizadas ou envolve qualquer texto com uma tag HTML personalizada para uso posterior, como para decorá-lo. Não quero que isso tenha efeito fora da primeira postagem (ou com base em outras condições), pois não preciso disso e isso pode causar alguns efeitos colaterais.
Além disso, posso ter encontrado uma solução possível no lado do servidor. Ele envolve o método cook do modelo Post. Ainda não testei.
class ::Post
# envolve o método cook original para adicionar opção de recursos
# veja o método markdown em 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