Как обернуть строки Ruby в теги HTML - PullRequest
3 голосов
/ 10 января 2011

Я ищу помощи по двум вещам. 1) Я ищу способ для Ruby обернуть строки в HTML. У меня есть программа, которую я пишу, которая генерирует хэш частот слов для текстового файла, и я хочу взять результаты и поместить их в файл HTML, а не печатать в STDOUT. Я думаю, что каждая строка должна быть обернута в тэг HTML-абзаца, используя readlines () или что-то еще, но я не могу понять это. Затем, как только я заверну строки в HTML 2), я хочу записать в пустой файл HTML.

Сейчас моя программа выглядит так:

filename = File.new(ARGV[0]).read().downcase().scan(/[\w']+/)
frequency = Hash.new(0)
words.each { |word| frequency[word] +=1 }
frequency.sort_by { |x,y| y }.reverse().each{ |w,f| puts "#{f}, #{w}" }

Итак, если мы пропустили текстовый файл и получили:

35, the
27, of
20, to
16, in
# . . .

Я бы хотел экспортировать в HTML-файл, который переносит строки вроде:

<p>35, the</p>
<p>27, of</p>
<p>20, to</p>
<p>16, in</p>
# . . .

Спасибо за любые советы заранее!

Ответы [ 3 ]

3 голосов
/ 10 января 2011

Это тривиальная проблема.

#open file, write, and close

File.open('words.html', 'w') do |ostream|
  words = File.new(ARGV[0]).read.downcase.scan(/[\w']+/)
  frequency = Hash.new
  words.each { |word| frequency[word] +=1 }

  frequency.sort_by {|x, y| y }.reverse.each do |w,f| 
     ostream.write "<p>#{f}, #{w}</p>" 
  end
end
2 голосов
/ 10 января 2011

Примерно так:

File.open("output.html", "w") do |output|

  words = File.new(ARGV[0]).read().downcase().scan(/[\w']+/)
  frequency = Hash.new(0)
  words.each { |word| frequency[word] +=1 }
  frequency.sort_by { |x,y| y }.reverse().each do |w,f| 
   output.write "<p>#{f}, #{w}</p>\n"
  end

end
1 голос
/ 07 мая 2016

Возможно, вы захотите взглянуть на dom gem , который я разработал.Ваша строка может быть сгенерирована следующим образом:

require "dom"

frequency.sort_by(&:last).reverse.map{|w, f| "#{f}, #{w}".dom(:p)}.dom
# => "<p>35, the</p><p>27, of</p><p>20, to</p><p>16, in</p>"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...