on Windows, I need to replace some values in a file; see the program below.
ff
The file is in Unix fileformat; but when Ruby wrote to it, there are
DOS line endings instead of Unix one, AFAICS.
That’s what I think what happens.
What I see is:
I open the file in Vim (which is ff=unix); everything looks fine. I run
the Ruby program, then Vim prompts me to relaod the file; after this,
every line ends in ^M.
When I reopen the file in Vim, everything looks OK again; I think Vim
converts the dos line endings automatically since I have
set ff=unix
in my vimrc.
I really would prefer if Ruby would only gsub the stuff I ask it to,
not the line endings.
gsub
How could I match a longer string, but replace only a part of it?
eg ~
string.gsub! /<(embed|object).+?width="\d+"/, “width=”#{w}""
… but the <object etc should stay.
Golf
What’s a shorter / more elegant version of the program? s.th. in the style of: grep /dimensions/, sed s/old/new/
Tobi
···
########################################
SVG = 'links.svg’
d = Dir.new ‘./‘
HTMLs = d.grep /^svg.*.html$/
def get_new_dimensions
open(SVG) do |svg|
svg.read.scan
/<svg\s+width="(.+?)"\s+height="(.+?)"/m
[($1.delete’px’),$2.delete’px’]
end
end
w,h = get_new_dimensions
HTMLs.each do |html_file_name|
string = open(html_file_name) do |html_file|
html_file.read
end
how to write these in one (gsub) line?
string.gsub! /width="\d+"/, “width=”#{w}"“
string.gsub! /height=”\d+"/, “width=”#{h}""
open(html_file_name,‘w’) do |html_file|
on Windows, I need to replace some values in a file; see the program below.
[…]
2. gsub
How could I match a longer string, but replace only a part of it?
eg ~
string.gsub! /<(embed|object).+?width=“\d+”/, “width="#{w}"”
… but the <object etc should stay.