misc #8329

Cannot change \r\n to \n (Windows/DOS to Unix)

Added by Justin Peal 12 months ago. Updated 12 months ago.

[ruby-core:54593]
Status:Rejected
Priority:Normal
Assignee:-
Category:-
Target version:-

Description

I want to change all of my ruby files to UTF-8 encoded and Unix format, but after the running of the following program, the files' formats are still Windows/DOS (\r\n) but not Unix (\n). How could I do?

class String
def utf8?
self =~ /\A\p{Assigned}*\z/
rescue
false
end
end

class Tounix
def replace text
text.gsub(/\x0d\x0a/, "\n")
end

def load filenamerb
text = File.read(filename
rb, :mode => 'rt:bom|utf-8')
unless text.utf8?
text = File.read(filename_rb, :mode => 'rt:gb18030')
text = text.encode('utf-8')
end
text
end

def save filenamerb, newtext
File.write(filenametm = filenamerb + '.t~m~p', newtext, :mode => 'wb:utf-8')
File.rename(filename
tm, filename_rb)
end

def parse filenamerb
text = load(filename
rb)
newtext = replace(text)
save(filename
rb, newtext) if changed = (newtext != text)
yield changed if block_given?
end

def search pattern
Dir.glob(pattern) do |filenamerb|
parse(filename
rb) do |changed|
yield filenamerb, changed if blockgiven?
end
end
end
end

if $0 == FILE
Tounix.new.search('*/.rb') do |filenamerb, changed|
print '%-9s' % (changed ? 'Changed' : ''), filename
rb, "\n"
end
end

History

#1 Updated by Nobuyoshi Nakada 12 months ago

  • Status changed from Open to Rejected

This BTS is not to ask about your bugs, but language specs and implementations.

As for you bug, newline code is already converted by reading in text mode.

Also available in: Atom PDF