fork download
  1. #coding:utf-8
  2.  
  3. text=<<TEXT
  4. :コロンで始まる行は字下げされます。改行しない限り、同じ深さで表示されます。
  5. ::コロンを追加すると、さらに深く字下げされます。
  6. ::同じ個数のコロンを使うと、同じ深さの字下げになります。
  7. :::あまり深くなり過ぎると、
  8. ::::読みづらくなるかもしれません。
  9. TEXT
  10.  
  11. text=<<TEXT
  12. : 的外れな批判してる奴がいるけど
  13. ::: 言語って目的に応じて使い分けるもの
  14. :: ある用途での適性が高ければその用途で利用するのは当然
  15. :::::専門舐めすぎだな
  16. :パソコンなんて触ったことないです><
  17. ::::みたいなの普通にいるしそういうゴミに合わせて進めるから
  18. :::まともに勉強する気があるなら行かない方が良い
  19. :::まともな大学行け
  20. TEXT
  21.  
  22.  
  23. line =
  24. text.each_line.map do |m|
  25. [ m.count(":") , m ]
  26. end.flatten
  27.  
  28. # p line
  29. nest = 0
  30. tmp = 0
  31. buf = ""
  32. line.each_slice(2).with_index do | (n , str) , i |
  33. nest = n
  34. str.delete!":"
  35. # p n , tmp
  36. if n == tmp
  37. buf << "<dd>"
  38. buf << str.chomp
  39. buf << "</dd>\n"
  40. elsif n < tmp
  41. (tmp-n).times do
  42. buf << "</dd>\n</dl>\n"
  43. end
  44. buf << "<dd>"
  45. buf << str
  46. else
  47. (n-tmp).times do
  48. buf << "<dl>\n<dd>"
  49. end
  50. buf << str
  51. end
  52. tmp = n
  53. end
  54.  
  55. puts buf
  56. nest.times do
  57. print"</dd>\n</dl>\n"
  58. end
  59.  
  60.  
Success #stdin #stdout 0.05s 9704KB
stdin
Standard input is empty
stdout
<dl>
<dd> 的外れな批判してる奴がいるけど  
<dl>
<dd><dl>
<dd> 言語って目的に応じて使い分けるもの  
</dd>
</dl>
<dd> ある用途での適性が高ければその用途で利用するのは当然  
<dl>
<dd><dl>
<dd><dl>
<dd>専門舐めすぎだな 
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
<dd>パソコンなんて触ったことないです>< 
<dl>
<dd><dl>
<dd><dl>
<dd>みたいなの普通にいるしそういうゴミに合わせて進めるから 
</dd>
</dl>
<dd>まともに勉強する気があるなら行かない方が良い 
<dd>まともな大学行け </dd>
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>