Project

General

Profile

Actions

Misc #8329

closed

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

Added by mghomn (Justin Peal) almost 11 years ago. Updated almost 11 years ago.

Status:
Rejected
Assignee:
-
[ruby-core:54593]

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 filename_rb
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 filename_rb, new_text
File.write(filename_tm = filename_rb + '.t~m~p', new_text, :mode => 'wb:utf-8')
File.rename(filename_tm, filename_rb)
end

def parse filename_rb
text = load(filename_rb)
new_text = replace(text)
save(filename_rb, new_text) if changed = (new_text != text)
yield changed if block_given?
end

def search pattern
Dir.glob(pattern) do |filename_rb|
parse(filename_rb) do |changed|
yield filename_rb, changed if block_given?
end
end
end
end

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

Updated by nobu (Nobuyoshi Nakada) almost 11 years 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.

Actions

Also available in: Atom PDF

Like0
Like0