Rubyで文字列の中からマークダウンのチェックボックスの中の文字列を取得したい


タイトルの通りなのですが、

Rubyであるmarkdownのテキストの中からチェックボックスの中の文字列(`- []` `-
[x]`)だけを取得して、その文字列の配列を返してくれるみたいな事を実装したいのですが、良いライブラリがありましたらご教授頂けないでしょうか？




## HTMLに変換してからDOMを検索する

Markdownパーサを通してHTMLを出力し、[Nokogiri](http://www.nokogiri.org/)を使ってDOM要素を検索します。Markdownか検索条件かもしくはその両方が複雑なのであれば、これが一番確実です。

## Markdownパーサをカスタマイズする

[Redcarpet](https://github.com/vmg/redcarpet)のような高機能なMarkdownパーサであれば、動作をカスタマイズするための方法が用意されているでしょうから、それを使ってリスト要素のレンダリングをフックしてどこかにデータを出力する、と言う方法が考えられます。

## Markdownソースを検索する

簡易な方法であれば、Markdownソースを正規表現で検索するのでもよいでしょう。

[code]

    source.scan(/^\s*-\s*\[(.*)\]\s*(.*)$/) {|s| ... }
    
[/code]

s には []
の中と後続の文字列が配列で渡されます。コードブロックの内外の区別が付かない、ネストしたリストを扱うのは大変、など難点がありますが、ソースのフォーマットが限定されることが確実ならこれでも十分です。

