Charles L. Snyder wrote:
> Hi,
>
> I have a snippet of code which
>
> 1. asks for a title from user
> 2. opens a text file of the form :
>
> definition: blah blah blah
> incidence: blah yah blah
> category: yeah blah tah
> .
> .
>
> 3. puts everything to the left of the : into a hash as the keys, and
> everything to the right in as matching values.
> 4. Outputs it as "Title.htm" file in format I want
>
> My code works for (obviously) the key and value ONLY in the 1
> position

What do you mean by that?

> - Problem is I can't figure out how to get it to
> sequentially iterate thru the whole hash table - should be easy, but
> I can't make it work... Thanks in advance !
>
> Here is my code:
>
> p "Enter a title..."
> title  = gets.chomp
> talks_text = []
> dict = {}
> IO.foreach("testfile.txt") do
>> x|
> if
> y = /:/.match(x)
> y = y.pre_match
> z=/:/.match(x)
> z = z.post_match
> dict[y] = z
> end
> end

Reading can be somewhat simplified:

# untested
IO.foreach("testfile.txt") do |line|
  if /^\s*(w+)\s*:\s*\b(.*)$/ =~ line
    dict[$1] = $2
  end
end

> dict.sort

This sort is useless as it will not sort the Hash but return an ordered
array of arrays.  You're only wasting CPU cycles here.

>
> File::open(title + '.htm', 'w') do |f|
>  f.puts "<HTML>\n<HEAD><TITLE>" + title + "</TITLE></HEAD>\n<BODY
> bgcolor=#FFDEAD>\n"
>  f.puts "<CENTER><A NAME=\"page_top\"><H1>" + title + "</H1></A>"
>   f.puts "by Charles L. Snyder, MD<BR>\n"
>  f.puts "</CENTER>\n<HR>\n"
>   f.puts "<A NAME=\"$anchor\"><H2>" + dict.keys[1] + "</H2></A>" +
> dict.values[1] + "<BR>"
>  f.puts "<CENTER><A
>   HREF=\'javascript:window.history.back()\'>Back</A>&nbsp" f.puts
>  "</CENTER>\n<HR>\n" end

File::open(title + '.htm', 'w') do |f|
 f.puts "<HTML>\n<HEAD><TITLE>" + title + "</TITLE></HEAD>\n<BODY
bgcolor=#FFDEAD>\n"
 f.puts "<CENTER><A NAME=\"page_top\"><H1>" + title + "</H1></A>"
  f.puts "by Charles L. Snyder, MD<BR>\n"
  f.puts "</CENTER>\n<HR>\n"

  dict.sort.each do |key,value|
    f.puts "<A NAME=\"$anchor\"><H2>" + key + "</H2></A>" + value + "<BR>"
  end

 f.puts "<CENTER><A
HREF=\'javascript:window.history.back()\'>Back</A>&nbsp"
  f.puts "</CENTER>\n<HR>\n"
 end


Kind regards

    robert