ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-core:54593] [ruby-trunk - misc #8329][Open] Cannot change \r\n to \n (Windows/DOS to Unix)
@ 2013-04-26  2:32 mghomn (Justin Peal)
  2013-04-26  7:18 ` [ruby-core:54599] [ruby-trunk - misc #8329][Rejected] " nobu (Nobuyoshi Nakada)
  0 siblings, 1 reply; 2+ messages in thread
From: mghomn (Justin Peal) @ 2013-04-26  2:32 UTC (permalink / raw
  To: ruby-core


Issue #8329 has been reported by mghomn (Justin Peal).

----------------------------------------
misc #8329: Cannot change \r\n to \n (Windows/DOS to Unix)
https://bugs.ruby-lang.org/issues/8329

Author: mghomn (Justin Peal)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 


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



-- 
http://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [ruby-core:54599] [ruby-trunk - misc #8329][Rejected] Cannot change \r\n to \n (Windows/DOS to Unix)
  2013-04-26  2:32 [ruby-core:54593] [ruby-trunk - misc #8329][Open] Cannot change \r\n to \n (Windows/DOS to Unix) mghomn (Justin Peal)
@ 2013-04-26  7:18 ` nobu (Nobuyoshi Nakada)
  0 siblings, 0 replies; 2+ messages in thread
From: nobu (Nobuyoshi Nakada) @ 2013-04-26  7:18 UTC (permalink / raw
  To: ruby-core


Issue #8329 has been updated by nobu (Nobuyoshi Nakada).

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.
----------------------------------------
misc #8329: Cannot change \r\n to \n (Windows/DOS to Unix)
https://bugs.ruby-lang.org/issues/8329#change-38921

Author: mghomn (Justin Peal)
Status: Rejected
Priority: Normal
Assignee: 
Category: 
Target version: 


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



-- 
http://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-04-26  7:42 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-26  2:32 [ruby-core:54593] [ruby-trunk - misc #8329][Open] Cannot change \r\n to \n (Windows/DOS to Unix) mghomn (Justin Peal)
2013-04-26  7:18 ` [ruby-core:54599] [ruby-trunk - misc #8329][Rejected] " nobu (Nobuyoshi Nakada)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).