向井という者です。
# どうせ真面目な解答はほかの人がしてくれると思うので

data.txtはこの形式でなければならないのでしょうか? もし多少の改変が許
されるのであれば、 yaml にしてしまうと処理が楽になるのではないかと思い
ます。


--- data.yml ---
Title-1:
    Title-A:
        - content1
    Title-B:
        - content2
        - content3
Title-2:
    Title-A:
        - content4
        - content5
    Title-B:
        - content6
----------------

とすれば、
-- yaml版 --
require 'yaml'
data = YAML.load('data.yml')
data['Title-1']['Title-B']  # => ['content2', 'content3']
----

のようになります。ここでの data はただのハッシュなので、好きなように操
作することができます。

もちろん yaml を覚えないと使えなくなってしまいますが、yamlについてはちょ
うどるびまの記事がありますね。
http://jp.rubyist.net/magazine/?0009-YAML
http://jp.rubyist.net/magazine/?0010-YAML

また、 YAML Cookbook も参考になります。英語のページですが、コード比較
を見るだけでだいたいわかるようになると思います。
http://yaml4r.sourceforge.net/cookbook/



data.txt そのままで処理したい場合は、すぐ思いつくのはインデント数から
構造を推定していく方法でしょうか。

いずれにせよ、井沢さんの今のコードでは、順序をちょっと変えたり、新しい
項目を追加するとえらいことになるので、後々で大変になると思います。
# これまた用途にもよりけりでしょうが……