첫 게시물에서 마크다운 기능을 일부 제한하는 방법?

플러그인에서 생성된 토픽의 첫 번째 게시글에 대해 일부 마크다운 기능을 제한하고 싶습니다.

클라이언트 측에서는 composer 모델의 topicFirstPost 속성에 접근하여 쉽게 구현할 수 있습니다. 하지만 서버 측의 lib/pretty_text.rb와 model/post.rb를 확인해 보니, cook 메서드에는 topic_id만 전달되고 있습니다. 토픽의 posts_count 속성을 확인하는 방식으로 처리할 수 있겠지만, rebaking 시에는 작동하지 않습니다.

아마도 markdown-it 프로세스에서 상태를 사용하지 않는 것이 좋을 것 같습니다.

또 다른 방법으로는 마크다운으로 플레이스홀더를 생성한 뒤, 서버 측에서 미리보기(manual update)를 업데이트하고 cook 후처리 이벤트를 청취하는 방식이 있습니다. 하지만 이 경우 추가 작업이 필요할 수 있습니다.

가능하다면 첫 번째 방식을 선호합니다. 조언 주시면 감사하겠습니다.

전혀 모르겠지만, html은 어떻게 사용하나요? 마크다운은 제한이 되더라도 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