# Add to words syntaxes

**URL:** <https://rubytalk.org/t/add-to-words-syntaxes/25816>\
**Category:** ruby-talk\
**Created:** [16 March 2006 10:48 UTC](https://rubytalk.org/t/add-to-words-syntaxes/25816 "2006-03-16T10:48:47Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dani](https://avatars.discourse-cdn.com/v4/letter/d/35a633/32.png) [@Dani](https://rubytalk.org/u/Dani)\
**Post date:** [16 March 2006 10:48 UTC](https://rubytalk.org/t/add-to-words-syntaxes/25816/1 "2006-03-16T10:48:47Z")

</div>

If I understand you well the script should look like this:

outfile = ARGV.shift

lines = ARGF.readlines

nyomtatvanyazonosito, nev, adoszam, adoazonosito, tol, ig =  
&nbsp;&nbsp;&nbsp;&nbsp;lines.slice!(0,6).map {|w| w.chomp.chomp(';') }  
first\_six\_data = \<\<-EOT  
'\<?xml version="1.0" encoding="windows-1250"?\>'  
'\<nyomtatvanyinformacio\>'

'\<nyomtatvanyazonosito\>'#{nyomtatvanyazonosito}'\</nyomtatvanyazonosito\>'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'\<adozo\>'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'\<nev\>'#{nev}'\</nev\>'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'\<adoszam\>'#{adoszam}'\</adoszam\>'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'\<adoazonosito\>'#{adoazonosito}'\</adoazonosito\>'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'\</adozo\>'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'\<idoszak\>'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'\<tol\>'#{tol}'\</tol\>'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'\<ig\>'#{ig}'\</ig\>'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'\</idoszak\>'  
'\</nyomtatvanyinformacio\>'  
'\<mezok\>'  
EOT

marked\_up\_lines = lines.map do |line|  
&nbsp;&nbsp;words = line.split  
&nbsp;&nbsp;'\<mezo eazon="' + words[0] + '"\>' + words[1] + '\</mezo\>' + "\n"  
end

File.open(outfile,'w') do |file|  
&nbsp;&nbsp;file.write marked\_up\_lines.join  
end

But if i run it so in the ouput only the things after the first six  
lines appear....

Daniel

> **···**
>
> -----Original Message-----  
> From: Carlos [mailto:angus@quovadis.com.ar]  
> Sent: Thursday, March 16, 2006 10:46 AM  
> To: ruby-talk ML  
> Subject: Re: add to words syntaxes
> 
> Dani wrote:
> 
> > Thanks, for the answers, but didnt worked. I try to clear my problem,  
> > Here is the input:
> > 
> > 0608A;  
> > Teszt Kft;  
> > 33445566222;  
> > ;  
> > 20060101;  
> > 20060131;  
> > 0A0001C002A 33445566222  
> > 0A0001C007A Teszt kft  
> > # this text repeat himself with other data several times
> > 
> > This, should look like this:
> > 
> > \<?xml version="1.0" encoding="windows-1250"?\>  
> > \<nyomtatvanyok\>  
> > &nbsp;&nbsp;\<nyomtatvany\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;\<nyomtatvanyinformacio\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<nyomtatvanyazonosito\>0608A\</nyomtatvanyazonosito\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<adozo\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<nev\>Teszt kft\</nev\> # the first line from the txt  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<adoszam\>33445566222\</adoszam\> # second line  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<adoazonosito\>\</adoazonosito\> #thrid line, in this txt is
> 
> blank
> 
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\</adozo\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<idoszak\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<tol\>20060101\</tol\> # fourth  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<ig\>20060131\</ig\> # fifth  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\</idoszak\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;\</nyomtatvanyinformacio\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;\<mezok\>  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<mezo eazon="0A0001C002A"\>11111111122\</mezo\> # and the lines...  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<mezo eazon="0A0001C007A"\>Próba Cég\</mezo\>  
> > .....  
> > \</mezok\>\</nyomtatvany\>\</nyomtatvanyok\>
> > 
> > So my problem is how can I get an XML source like above. For the
> 
> columns
> 
> > I already have this script:  
> > outfile = ARGV.shift
> > 
> > lines = ARGF.readlines
> 
> Well, before you start to loop to fill the "mezo" tags, extract the  
> other lines:
> 
> &nbsp;&nbsp;nyomtatvanyazonosito, nev, adoszam, adoazonosito, tol, ig =  
> &nbsp;&nbsp;&nbsp;&nbsp;lines.slice!(0,6).map {|w| w.chomp.chomp(';') }  
> &nbsp;&nbsp;first\_six\_data = \<\<-EOT  
> \<?xml ...  
> \<nyomtatvanyinformacio\>  
> &nbsp;&nbsp;&nbsp;\<nyomtatvanyazonosito\>#{nyomtatvanyazonosito}\</nyomtatvanyazonosito\>  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<adozo\>  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<nev\>#{nev}\</nev\>  
> &nbsp;&nbsp;...  
> EOT
> 
> ...And then continue processing the array as before.
> 
> > marked\_up\_lines = lines.map do |line|  
> > &nbsp;&nbsp;words = line.split  
> > &nbsp;&nbsp;'\<mezo eazon="' + words[0] + '"\>' + words[1] + '\</mezo\>' + "\n"  
> > end
> > 
> > File.open(outfile,'w') do |file|
> 
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.write first\_six\_data
> 
> > &nbsp;&nbsp;file.write marked\_up\_lines.join  
> > end
> 
> HTH
> 
> (warning: code not tested)

---

<div class="post-metadata">

**Author:** ![Carlos](https://avatars.discourse-cdn.com/v4/letter/c/ecae2f/32.png) [@Carlos](https://rubytalk.org/u/Carlos)\
**Post date:** [16 March 2006 11:26 UTC](https://rubytalk.org/t/add-to-words-syntaxes/25816/2 "2006-03-16T11:26:16Z")

</div>

Dani wrote:

> If I understand you well the script should look like this:
> 
> outfile = ARGV.shift
> 
> lines = ARGF.readlines  
> nyomtatvanyazonosito, nev, adoszam, adoazonosito, tol, ig =  
> &nbsp;&nbsp;&nbsp;&nbsp;lines.slice!(0,6).map {|w| w.chomp.chomp(';') }  
> first\_six\_data = \<\<-EOT  
> '\<?xml version="1.0" encoding="windows-1250"?\>'

Why the quotes here? The string is everything between the line following "\<\<-EOT" and "EOT". See [Ruby Syntax](http://www.ruby-doc.org/docs/ruby-doc-bundle/Manual/man-1.4/syntax.html#here_doc)

[...]

> File.open(outfile,'w') do |file|

# You forgot to write the variable first\_six\_data here.  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.write first\_six\_data

> &nbsp;&nbsp;file.write marked\_up\_lines.join

# And here probably you need to write  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.write "\</...\>\</...\>\</...\>"

> end

HTH
