[#10209] Market for XML Web stuff — Matt Sergeant <matt@...>

I'm trying to get a handle on what the size of the market for AxKit would be

15 messages 2001/02/01

[#10238] RFC: RubyVM (long) — Robert Feldt <feldt@...>

Hi,

20 messages 2001/02/01
[#10364] Re: RFC: RubyVM (long) — Mathieu Bouchard <matju@...> 2001/02/05

[#10708] Suggestion for threading model — Stephen White <spwhite@...>

I've been playing around with multi-threading. I notice that there are

11 messages 2001/02/11

[#10853] Re: RubyChangeRequest #U002: new proper name for Hash#indexes, Array#indexes — "Mike Wilson" <wmwilson01@...>

10 messages 2001/02/14

[#11037] to_s and << — "Brent Rowland" <tarod@...>

list = [1, 2.3, 'four', false]

15 messages 2001/02/18

[#11094] Re: Summary: RCR #U002 - proper new name fo r indexes — Aleksi Niemel<aleksi.niemela@...>

> On Mon, 19 Feb 2001, Yukihiro Matsumoto wrote:

12 messages 2001/02/19

[#11131] Re: Summary: RCR #U002 - proper new name fo r indexes — "Conrad Schneiker" <schneik@...>

Robert Feldt wrote:

10 messages 2001/02/19

[#11251] Programming Ruby is now online — Dave Thomas <Dave@...>

36 messages 2001/02/21

[#11469] XML-RPC and KDE — schuerig@... (Michael Schuerig)

23 messages 2001/02/24
[#11490] Re: XML-RPC and KDE — schuerig@... (Michael Schuerig) 2001/02/24

Michael Neumann <neumann@s-direktnet.de> wrote:

[#11491] Negative Reviews for Ruby and Programming Ruby — Jim Freeze <jim@...> 2001/02/24

Hi all:

[#11633] RCR: shortcut for instance variable initialization — Dave Thomas <Dave@...>

13 messages 2001/02/26

[#11652] RE: RCR: shortcut for instance variable initialization — Michael Davis <mdavis@...>

I like it!

14 messages 2001/02/27

[#11700] Starting Once Again — Ron Jeffries <ronjeffries@...>

OK, I'm starting again with Ruby. I'm just assuming that I've

31 messages 2001/02/27
[#11712] RE: Starting Once Again — "Aaron Hinni" <aaron@...> 2001/02/27

> 2. So far I think running under TextPad will be better than running

[#11726] Re: Starting Once Again — Aleksi Niemel<zak@...> 2001/02/28

On Wed, 28 Feb 2001, Aaron Hinni wrote:

[ruby-talk:10808] Cute toy or start of something?

From: Stephen White <spwhite@...>
Date: 2001-02-13 21:40:49 UTC
List: ruby-talk #10808
I'm not very bright today. I sent a previous version of the message. Here
is the version I meant to send.

I wrote a quick little hack to add buffers to irb. This reminds me of the
editing environment in the good ol' days.

Here's how it works:

    irb(main):274:0> load 'irbide'
    true
    irb(main):276:0> a = IRBIDE.new
    Newly created environment. No buffers exist
    irb(main):277:0> a.add 'test', 'Prints out "hello"'
    "New buffer test created"
    irb(main):278:0> a.add 'greet', 'Takes a name as a string argument and says
    hello'
    "New buffer greet created"
    irb(main):279:0> a
      test: Prints out "hello"
      greet: Takes a name as a string argument and says hello
    irb(main):280:0> a.rename 'test', 'hello'
      hello: Prints out "hello"
      greet: Takes a name as a string argument and says hello
    irb(main):281:0> a.edit 'hello'
    class Test
      def greet
        puts "hello world"
      end
    end
    nil
    irb(main):282:0> a.description 'hello', 'Prints out "hello world"'
      hello: Prints out "hello world"
      greet: Takes a name as a string argument and says hello
    irb(main):283:0> a.cat 'greet'

    nil
    irb(main):284:0> a.delete 'greet'
      hello: Prints out "hello world"

Whatever you edit in the buffers is immediately loaded into irb when you
exit. Try "Test.new.greet". You can do "a.help" as well.

Here's the source code. It's not good enough for public use, but if there's
no interest from other people then I'll know not to expend the effort to
polish it up other than to add stuff for myself. :)

Save this as "irbide" and use the load command shown at the top. You will
probably want to change "joe" to "emacs" or "vi", depending on your
religious persuasion.

    require "tempfile"

    class IRBIDE
      def initialize
        @list = {}
      end

      def add name, description="Lazy Me", text=""
        @list[name] = [ description, text ]
        "New buffer #{name} created"
      end

      def inspect
        result = ""
        @list.each do |i, j|
          result += "  #{i}: #{j[0]}\n"
        end
        if result.empty?
          "Newly created environment. No buffers exist"
        else
          result.chomp
        end
      end

      def list
        print inspect
      end

      def rename oldname, newname
        @list[newname] = @list[oldname]
        @list.delete oldname
        self
      end

      def description name, description="Stupid Me"
        @list[name][0] = description
        self
      end

      def edit name
        tf = Tempfile.new(name)
        tf.write(@list[name][1])
        tf.close

        system "joe " + tf.path

        load tf.path

        tf.open
        @list[name][1] = tf.read
        tf.close

        puts @list[name][1]
      end

      def cat name
        puts @list[name][1]
      end

      def delete name
        @list.delete name
        self
      end

      def help
        puts <<-end
          IRBIDE: Adds editable buffers to irb.

          a = IRBIDE.new
          a.add 'test', 'Prints out "hello"'
          a.add 'greet', 'Takes a name as a string argument and says hello'
          a   (or a.list)

          a.rename 'test', 'hello'
          a.edit 'hello'
          a.description 'hello', 'Prints out "hello world"'

          a.cat 'greet'
          a.delete 'greet'
        end
      end
    end

-- 
  spwhite@chariot.net.au

In This Thread

Prev Next