rdp / ruby_gnuplot

The ruby gnuplot gem [gnuplot] [rgnuplot] (official releases of the gnuplot gem are from rdp branch)
BSD 3-Clause "New" or "Revised" License
216 stars 48 forks source link

change the pipe calling the gnuplot command from a write-only to read-write? #12

Closed boutil closed 11 years ago

boutil commented 12 years ago

Hi!

In Debian, there is this bug report by a user: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=626984 reported also on rubyforge: http://rubyforge.org/tracker/index.php?func=detail&aid=29177&group_id=173&atid=741 proposing to transform the pipe calling the gnuplot command from write-only to read-write, so that the output of the plot could be stored in a variable.

Here is the relevant part of the patch

--- gnuplot.rb.orig 2005-11-15 03:33:42.000000000 +0100
+++ gnuplot.rb  2011-05-06 23:04:02.000000000 +0200
@@ -56,7 +56,12 @@

   def Gnuplot.open( persist=true )
     cmd = Gnuplot.gnuplot( persist ) or raise 'gnuplot not found'
-    IO::popen( cmd, "w") { |io| yield io }
+    IO::popen( cmd, "w+") { |io|
+      yield io
+      io.close_write
+      @output = io.read
+     }
+    return @output
   end 

the rest is about adding a smooth attribute, but this has already been included. Would you consider this modification as possible?

Thanks!

Cédric

rdp commented 12 years ago

yep I'll get on it...

rdp commented 12 years ago

Ok committed a patch for 2.5.0 -r

On Mon, Jun 11, 2012 at 4:04 PM, Cédric Boutillier reply@reply.github.com wrote:

Hi!

In Debian, there is this bug report by a user:  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=626984 reported also on rubyforge:  http://rubyforge.org/tracker/index.php?func=detail&aid=29177&group_id=173&atid=741 proposing to transform the pipe calling the gnuplot command from write-only to read-write, so that the output of the plot could be stored in a variable.

Here is the relevant part of the patch

--- gnuplot.rb.orig     2005-11-15 03:33:42.000000000 +0100
+++ gnuplot.rb  2011-05-06 23:04:02.000000000 +0200
@@ -56,7 +56,12 @@

  def Gnuplot.open( persist=true )
    cmd = Gnuplot.gnuplot( persist ) or raise 'gnuplot not found'
-    IO::popen( cmd, "w") { |io| yield io }
+    IO::popen( cmd, "w+") { |io|
+      yield io
+      io.close_write
+      @output = io.read
+         }
+    return @output
  end

the rest is about adding a smooth attribute, but this has already been included. Would you consider this modification as possible?

Thanks!

Cédric


Reply to this email directly or view it on GitHub: https://github.com/rdp/ruby_gnuplot/issues/12

rdp commented 11 years ago

closing if no comment