最初の投稿でmarkdown機能を一部制限する方法は?

プラグインから提供されるトピックの最初の投稿で、一部のMarkdown機能を制限したいと考えています。

クライアント側では、コンポーザーモデルのtopicFirstPost属性にアクセスすることで簡単に実装できます。しかし、サーバー側のlib/pretty_text.rbmodel/post.rbでは、cookメソッドに渡されるのはtopic_idのみであることがわかりました。トピックのposts_count属性をチェックすることも可能ですが、再ベイク時には機能しません。

おそらく、markdown-itプロセスで状態を使用しない方が良いのでしょうか?

これを達成する別の方法としては、Markdownを使用してプレースホルダーを生成し、プレビューを手動で更新し、サーバー側で何らかのクック後処理イベントをリッスンすることが考えられますが、これには追加の作業が必要になる可能性があります。

可能であれば、最初の方法を優先します。何か提案があれば教えてください。

さっぱりわかりませんが、HTMLで何をしていますか?マークダウンでさえ制限されるのではないでしょうか?

レンダリングしたくないテキストを生成するプラグインを作成したということですか?

どのようなことをしようとしているのか、もう少し詳しく教えていただけますか?

@Jagster @pfaffman
プラグインがカスタムBBCodeタグを追加したり、後で使用するためにテキストをカスタムHTMLタグでラップしたりすると想像してみてください。装飾のためです。最初の投稿外(または他の条件に基づく)では効果を発揮させたくありません。必要ないですし、副作用を引き起こす可能性があるためです。

また、サーバー側で可能な解決策を見つけたかもしれません。Postモデルのcookメソッドをラップします。まだテストしていません。

class ::Post
  # 元のcookメソッドをラップして機能オプションを追加します
  # lib/pretty_text.rb の markdown メソッドを参照してください
  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