html-pipeline を使ってマークダウンを変換したり、任意のテキスト処理をしたりしますが、デフォルトで組み込まれている HTML::Pipeline::MarkdownFilter
は <script>
や <iframe>
などのタグをエスケープ処理するようになっています。
より正確に言うと HTML::Pipeline::MarkdownFilter
の内部で使っている CommonMarker
の tagfilter
オプションで処理されています。
html-pipeline version 2.7 未満はデフォルトで指定されていましたが、それ以降はオプションを上書きできるようになりました。
こんな感じで tagfilter
以外のオプションを指定してあげると、 <script>
や <iframe>
を使うことができます。当然、悪意のあるコードが実行されてしまうので気をつけてください。
module Markdown
class Processor
def call(input)
filters = [
HTML::Pipeline::MarkdownFilter
]
context = {
commonmarker_extensions: %i[table strikethrough autolink]
}
HTML::Pipeline.new(filters, context).call(input)
end
end
end