#coding:utf-8
text=<<TEXT
:コロンで始まる行は字下げされます。改行しない限り、同じ深さで表示されます。
::コロンを追加すると、さらに深く字下げされます。
::同じ個数のコロンを使うと、同じ深さの字下げになります。
:::あまり深くなり過ぎると、
::::読みづらくなるかもしれません。
TEXT
text=<<TEXT
: 的外れな批判してる奴がいるけど
::: 言語って目的に応じて使い分けるもの
:: ある用途での適性が高ければその用途で利用するのは当然
:::::専門舐めすぎだな
:パソコンなんて触ったことないです><
::::みたいなの普通にいるしそういうゴミに合わせて進めるから
:::まともに勉強する気があるなら行かない方が良い
:::まともな大学行け
TEXT
line =
text.each_line.map do |m|
[ m.count(":") , m ]
end.flatten
# p line
nest = 0
tmp = 0
buf = ""
line.each_slice(2).with_index do | (n , str) , i |
nest = n
str.delete!":"
# p n , tmp
if n == tmp
buf << "<dd>"
buf << str.chomp
buf << "</dd>\n"
elsif n < tmp
(tmp-n).times do
buf << "</dd>\n</dl>\n"
end
buf << "<dd>"
buf << str
else
(n-tmp).times do
buf << "<dl>\n<dd>"
end
buf << str
end
tmp = n
end
puts buf
nest.times do
print"</dd>\n</dl>\n"
end
I2NvZGluZzp1dGYtOAoKdGV4dD08PFRFWFQKOuOCs+ODreODs+OBp+Wni+OBvuOCi+ihjOOBr+Wtl+S4i+OBkuOBleOCjOOBvuOBmeOAguaUueihjOOBl+OBquOBhOmZkOOCiuOAgeWQjOOBmOa3seOBleOBp+ihqOekuuOBleOCjOOBvuOBmeOAgiAKOjrjgrPjg63jg7PjgpLov73liqDjgZnjgovjgajjgIHjgZXjgonjgavmt7HjgY/lrZfkuIvjgZLjgZXjgozjgb7jgZnjgIIgCjo65ZCM44GY5YCL5pWw44Gu44Kz44Ot44Oz44KS5L2/44GG44Go44CB5ZCM44GY5rex44GV44Gu5a2X5LiL44GS44Gr44Gq44KK44G+44GZ44CCIAo6OjrjgYLjgb7jgormt7HjgY/jgarjgorpgY7jgY7jgovjgajjgIEgCjo6Ojroqq3jgb/jgaXjgonjgY/jgarjgovjgYvjgoLjgZfjgozjgb7jgZvjgpPjgIIgClRFWFQKCnRleHQ9PDxURVhUCjog55qE5aSW44KM44Gq5om55Yik44GX44Gm44KL5aW044GM44GE44KL44GR44GpICAKOjo6IOiogOiqnuOBo+OBpuebrueahOOBq+W/nOOBmOOBpuS9v+OBhOWIhuOBkeOCi+OCguOBriAgCjo6IOOBguOCi+eUqOmAlOOBp+OBrumBqeaAp+OBjOmrmOOBkeOCjOOBsOOBneOBrueUqOmAlOOBp+WIqeeUqOOBmeOCi+OBruOBr+W9k+eEtiAgCjo6Ojo65bCC6ZaA6IiQ44KB44GZ44GO44Gg44GqIAo644OR44K944Kz44Oz44Gq44KT44Gm6Kem44Gj44Gf44GT44Go44Gq44GE44Gn44GZPjwgCjo6Ojrjgb/jgZ/jgYTjgarjga7mma7pgJrjgavjgYTjgovjgZfjgZ3jgYbjgYTjgYbjgrTjg5/jgavlkIjjgo/jgZvjgabpgLLjgoHjgovjgYvjgokgCjo6OuOBvuOBqOOCguOBq+WLieW8t+OBmeOCi+awl+OBjOOBguOCi+OBquOCieihjOOBi+OBquOBhOaWueOBjOiJr+OBhCAKOjo644G+44Go44KC44Gq5aSn5a2m6KGM44GRIApURVhUCgoKbGluZSA9IAp0ZXh0LmVhY2hfbGluZS5tYXAgZG8gfG18CglbIG0uY291bnQoIjoiKSAsIG0gXQplbmQuZmxhdHRlbgoKIyBwIGxpbmUKbmVzdCA9IDAKdG1wICA9IDAKYnVmID0gIiIKbGluZS5lYWNoX3NsaWNlKDIpLndpdGhfaW5kZXggZG8gfCAobiAsIHN0cikgLCBpIHwKCW5lc3QgPSBuCglzdHIuZGVsZXRlISI6IgojCXAgbiAsIHRtcAogIGlmIG4gPT0gdG1wCiAgCWJ1ZiA8PCAiPGRkPiIKICAJYnVmIDw8IHN0ci5jaG9tcAogCSAgYnVmIDw8ICI8L2RkPlxuIgogIGVsc2lmIG4gPCB0bXAKICAJKHRtcC1uKS50aW1lcyBkbwogICAgCWJ1ZiA8PCAiPC9kZD5cbjwvZGw+XG4iCiAgCWVuZAogIAlidWYgPDwgIjxkZD4iCiAgCWJ1ZiA8PCBzdHIKICBlbHNlCiAgCShuLXRtcCkudGltZXMgZG8KICAJICBidWYgPDwgIjxkbD5cbjxkZD4iCiAgCWVuZAogIAlidWYgPDwgc3RyCiAgZW5kCgl0bXAgPSBuCmVuZAoKcHV0cyBidWYKbmVzdC50aW1lcyBkbwoJIHByaW50IjwvZGQ+XG48L2RsPlxuIgplbmQKCg==