# Scriptable text editor with Ruby?

**URL:** <https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205>\
**Category:** ruby-talk\
**Created:** [3 January 2007 16:15 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205 "2007-01-03T16:15:07Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dolazy](https://avatars.discourse-cdn.com/v4/letter/d/eb8c5e/32.png) [@Dolazy](https://rubytalk.org/u/Dolazy)\
**Post date:** [3 January 2007 16:15 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/1 "2007-01-03T16:15:07Z")

</div>

Hi all!

Vim and emacs are text editor that can be scripted using internal  
script languages. I'm thinking of writing a platform independent text  
editor myself that uses the ruby language for executing scripts. The  
host application would be written in C++ (+Qt) and it would somehow be  
able to interact with ruby.

I think there are basically two ways of implementing this interaction:  
- using IPC  
- command line interaction (host executes the ruby script with  
parameters and catches the output)

IPC is the most powerful I think, but then again I have various options  
to achieve this communication:  
- TCP  
- XmlRpc  
- shared memory

I'm very new to the concept of inter-process-communication and I would  
greatly appreciate your insights on how I would best proceed to achieve  
this interaction.

Or maybe there is a more obvious and straightforward approach that I  
overlooked?

Best regards,  
Francis

---

<div class="post-metadata">

**Author:** ![Michael\_P\_Soulier](https://avatars.discourse-cdn.com/v4/letter/m/a8b319/32.png) [@Michael\_P\_Soulier](https://rubytalk.org/u/Michael_P_Soulier)\
**Post date:** [3 January 2007 16:44 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/2 "2007-01-03T16:44:24Z")

</div>

Vim runs everywhere. Are you sure that this is necessary?

Mike

> **···**
>
> On 1/3/07, Dolazy \<francis.rammeloo@gmail.com\> wrote:
> 
> > Hi all!
> > 
> > Vim and emacs are text editor that can be scripted using internal  
> > script languages. I'm thinking of writing a platform independent text  
> > editor myself that uses the ruby language for executing scripts. The  
> > host application would be written in C++ (+Qt) and it would somehow be  
> > able to interact with ruby.
> 
> --  
> Michael P. Soulier \<msoulier@digitaltorque.ca\>  
> "Any intelligent fool can make things bigger and more complex... It takes a  
> touch of genius - and a lot of courage to move in the opposite direction."  
> --Albert Einstein

---

<div class="post-metadata">

**Author:** ![Jason\_R](https://avatars.discourse-cdn.com/v4/letter/j/94ad74/32.png) [@Jason\_R](https://rubytalk.org/u/Jason_R)\
**Post date:** [3 January 2007 16:44 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/3 "2007-01-03T16:44:40Z")

</div>

Embed the Ruby interpreter in the text editor itself? Then just make certain  
functions available to Ruby and script away.

Jason

> **···**
>
> On 1/3/07, Dolazy \<francis.rammeloo@gmail.com\> wrote:
> 
> > Hi all!
> > 
> > Vim and emacs are text editor that can be scripted using internal  
> > script languages. I'm thinking of writing a platform independent text  
> > editor myself that uses the ruby language for executing scripts. The  
> > host application would be written in C++ (+Qt) and it would somehow be  
> > able to interact with ruby.
> > 
> > I think there are basically two ways of implementing this interaction:  
> > - using IPC  
> > - command line interaction (host executes the ruby script with  
> > parameters and catches the output)
> > 
> > IPC is the most powerful I think, but then again I have various options  
> > to achieve this communication:  
> > - TCP  
> > - XmlRpc  
> > - shared memory
> > 
> > I'm very new to the concept of inter-process-communication and I would  
> > greatly appreciate your insights on how I would best proceed to achieve  
> > this interaction.
> > 
> > Or maybe there is a more obvious and straightforward approach that I  
> > overlooked?
> > 
> > Best regards,  
> > Francis

---

<div class="post-metadata">

**Author:** ![James\_Britt3](https://avatars.discourse-cdn.com/v4/letter/j/b782af/32.png) [@James\_Britt3](https://rubytalk.org/u/James_Britt3)\
**Post date:** [3 January 2007 17:28 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/4 "2007-01-03T17:28:09Z")

</div>

Dolazy wrote:

> Hi all!
> 
> Vim and emacs are text editor that can be scripted using internal  
> script languages. I'm thinking of writing a platform independent text  
> editor myself that uses the ruby language for executing scripts.

Vim can do that now. Build it with Ruby support and you can drive the editor with Ruby.

> **···**
>
> --  
> James Britt
> 
> "I was born not knowing and have had only a little  
> &nbsp;&nbsp;time to change that here and there."  
> &nbsp;&nbsp;- Richard P. Feynman

---

<div class="post-metadata">

**Author:** ![M\_Edward\_Ed\_Borasky1](https://avatars.discourse-cdn.com/v4/letter/m/e9c0ed/32.png) [@M\_Edward\_Ed\_Borasky1](https://rubytalk.org/u/M_Edward_Ed_Borasky1)\
**Post date:** [3 January 2007 17:53 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/5 "2007-01-03T17:53:43Z")

</div>

Dolazy wrote:

> Hi all!
> 
> Vim and emacs are text editor that can be scripted using internal  
> script languages. I'm thinking of writing a platform independent text  
> editor myself that uses the ruby language for executing scripts. The  
> host application would be written in C++ (+Qt) and it would somehow be  
> able to interact with ruby.  
> &nbsp;&nbsp;

Well, given QtRuby, you probably don't really need C++ at all -- you could do it all in Ruby. But I'm not sure what the most recent status of QtRuby is, and there is always the licensing gotcha -- you have to use Qt 4 for open source Windows projects. If you use another GUI toolkit, there are a number with Ruby bindings. For that matter, most of them have some kind of text editor widget built in, which makes life even easier.

> I think there are basically two ways of implementing this interaction:  
> - using IPC  
> - command line interaction (host executes the ruby script with  
> parameters and catches the output)
> 
> IPC is the most powerful I think, but then again I have various options  
> to achieve this communication:  
> - TCP  
> - XmlRpc  
> - shared memory
> 
> I'm very new to the concept of inter-process-communication and I would  
> greatly appreciate your insights on how I would best proceed to achieve  
> this interaction.
> 
> Or maybe there is a more obvious and straightforward approach that I  
> overlooked?  
> &nbsp;&nbsp;

Two comments:

1. As a number of folks have pointed out, "vim" has an excellent Ruby scripting facility already.  
2. Rather than delving into issues of low-level implementation, interprocess communication vs. shelling out to a command like vs. whatever, I'd recommend a more agile and pragmatic approach. Pick a toolkit, find a Windows user, a Mac user and a Linux user, set up a project on RubyForge and start building the thing!

> **···**
>
> --  
> M. Edward (Ed) Borasky, FBG, AB, PTA, PGS, MS, MNLP, NST, ACMC(P)  
> [http://borasky-research.blogspot.com/](http://borasky-research.blogspot.com/)
> 
> If God had meant for carrots to be eaten cooked, He would have given rabbits fire.

---

<div class="post-metadata">

**Author:** ![Simon\_Strandgaard2](https://avatars.discourse-cdn.com/v4/letter/s/ac91a4/32.png) [@Simon\_Strandgaard2](https://rubytalk.org/u/Simon_Strandgaard2)\
**Post date:** [3 January 2007 19:12 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/6 "2007-01-03T19:12:08Z")

</div>

[snip stuff about ruby/c++]

> Or maybe there is a more obvious and straightforward approach that I  
> overlooked?

have you considered writing the entire editor in ruby and  
then use ruby qt.. so you don't use any c++?

Ruby is good at string manipulation, so its possible  
to do the entire syntax coloring in ruby. I think  
this task is pretty big in c++.

> **···**
>
> On 1/3/07, Dolazy \<francis.rammeloo@gmail.com\> wrote:
> 
> --  
> Simon Strandgaard  
> [http://opcoders.com/](http://opcoders.com/)

---

<div class="post-metadata">

**Author:** ![Ara.T.Howard6](https://avatars.discourse-cdn.com/v4/letter/a/958977/32.png) [@Ara.T.Howard6](https://rubytalk.org/u/Ara.T.Howard6)\
**Post date:** [3 January 2007 23:14 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/7 "2007-01-03T23:14:19Z")

</div>

- using vim

it already does all this! check out the man pages.

regards.

-a

> **···**
>
> On Thu, 4 Jan 2007, Dolazy wrote:
> 
> > Hi all!
> > 
> > Vim and emacs are text editor that can be scripted using internal  
> > script languages. I'm thinking of writing a platform independent text  
> > editor myself that uses the ruby language for executing scripts. The  
> > host application would be written in C++ (+Qt) and it would somehow be  
> > able to interact with ruby.
> > 
> > I think there are basically two ways of implementing this interaction:  
> > - using IPC  
> > - command line interaction (host executes the ruby script with  
> > parameters and catches the output)
> 
> --  
> if you find yourself slandering anybody, first imagine that your mouth is  
> filled with excrement. it will break you of the habit quickly enough. - the  
> dalai lama

---

<div class="post-metadata">

**Author:** ![Tim\_X](https://avatars.discourse-cdn.com/v4/letter/t/f9ae1b/32.png) [@Tim\_X](https://rubytalk.org/u/Tim_X)\
**Post date:** [4 January 2007 04:20 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/8 "2007-01-04T04:20:09Z")

</div>

"Dolazy" \<francis.rammeloo@gmail.com\> writes:

> Hi all!
> 
> Vim and emacs are text editor that can be scripted using internal  
> script languages. I'm thinking of writing a platform independent text  
> editor myself that uses the ruby language for executing scripts. The  
> host application would be written in C++ (+Qt) and it would somehow be  
> able to interact with ruby.
> 
> I think there are basically two ways of implementing this interaction:  
> - using IPC  
> - command line interaction (host executes the ruby script with  
> parameters and catches the output)
> 
> IPC is the most powerful I think, but then again I have various options  
> to achieve this communication:  
> - TCP  
> - XmlRpc  
> - shared memory
> 
> I'm very new to the concept of inter-process-communication and I would  
> greatly appreciate your insights on how I would best proceed to achieve  
> this interaction.
> 
> Or maybe there is a more obvious and straightforward approach that I  
> overlooked?

Although I've not looked at it in any detail, there is an emacs-\>ruby interface  
which allows you to extend emacs functionality with ruby code in a similar way  
to how functionality is extended with elisp.

I would strongly recommend leveraging an existing editor - writing an editor is  
a non-trivial task and many many code years have been put into vim and emacs.  
Take advantage of this to allow you time to concentrate on the bits you really  
want to achieve.

Note that if you don't like emacs (many don't) I believe vim has the ability to  
achieve what you want. A few people from the common lisp community have been  
working on an interface between vim and common lisp to provide a more high  
level development environment (similar to emacs + slime). You can probably  
steal ^H^H^H^H^H borrow some of their ideas to provide a way of  
interfacing/extending vim with ruby scripts/code.

HTH

Tim

> **···**
>
> --  
> tcross (at) rapttech dot com dot au

---

<div class="post-metadata">

**Author:** ![Simon\_Strandgaard2](https://avatars.discourse-cdn.com/v4/letter/s/ac91a4/32.png) [@Simon\_Strandgaard2](https://rubytalk.org/u/Simon_Strandgaard2)\
**Post date:** [4 January 2007 16:54 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/9 "2007-01-04T16:54:01Z")

</div>

[snip out of context]

> I'm thinking of writing a platform independent text  
> editor myself that uses the ruby language for executing scripts.

[snip]

I don't know what exactly your goal is for this editor,  
but if you want it to be great then take a look at  
what other great editors is doing.

IMO TextMate is the best editor I have ever tried,  
and was the reason I abandoned my own editor  
project: [http://aeditor.rubyforge.org/](http://aeditor.rubyforge.org/)

btw: Know your enemy (maybe I should this one day)

> **[The Art of War](https://en.wikipedia.org/wiki/The_Art_of_War)**
>
> The Art of War (Chinese: 孫子兵法; pinyin: Sūnzǐ bīngfǎ; lit. 'Sun Tzu's Military Method') is an ancient Chinese military treatise dating from the late Spring and Autumn Period (roughly 5th century BC). The work, which is attributed to the ancient Chinese military strategist Sun Tzu ("Master Sun"), is composed of 13 chapters. Each one is devoted to a different set of skills or art related to warfare and how it applies to military strategy and tactics. For almost 1,500 years, it was the lead text in...

> **···**
>
> On 1/3/07, Dolazy \<francis.rammeloo@gmail.com\> wrote:
> 
> --  
> Simon Strandgaard  
> [http://opcoders.com/](http://opcoders.com/)

---

<div class="post-metadata">

**Author:** ![Suraj\_Kurapati1](https://avatars.discourse-cdn.com/v4/letter/s/f19dbf/32.png) [@Suraj\_Kurapati1](https://rubytalk.org/u/Suraj_Kurapati1)\
**Post date:** [4 January 2007 19:53 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/10 "2007-01-04T19:53:40Z")

</div>

Dolazy wrote:

> I'm thinking of writing a platform independent text  
> editor myself that uses the ruby language for executing scripts. The  
> host application would be written in C++ (+Qt) and it would somehow be  
> able to interact with ruby.

Why start from scratch? Take over an existing, defunct open source  
project:

&nbsp;&nbsp;[http://aeditor.rubyforge.org/](http://aeditor.rubyforge.org/)

> **···**
>
> --  
> Posted via [http://www.ruby-forum.com/\](http://www.ruby-forum.com/%5C).

---

<div class="post-metadata">

**Author:** ![Alder\_Green](https://avatars.discourse-cdn.com/v4/letter/a/db5fbb/32.png) [@Alder\_Green](https://rubytalk.org/u/Alder_Green)\
**Post date:** [7 January 2007 03:40 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/11 "2007-01-07T03:40:03Z")

</div>

As you probably already told by numerous people, Vim does that already.

Emacs is supposed to have something like that as well, but it hardly works.

Whereas I managed to get Vim's Ruby support running out of the box on  
several flavours of Linux and even freaking Windows...! Respect.

-Alder

> **···**
>
> On 1/3/07, Dolazy \<francis.rammeloo@gmail.com\> wrote:
> 
> > ...

---

<div class="post-metadata">

**Author:** ![Dolazy](https://avatars.discourse-cdn.com/v4/letter/d/eb8c5e/32.png) [@Dolazy](https://rubytalk.org/u/Dolazy)\
**Post date:** [3 January 2007 17:00 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/12 "2007-01-03T17:00:09Z")

</div>

Michael P. Soulier schreef:

> Vim runs everywhere. Are you sure that this is necessary?
> 
> Mike

Are you sure Vim was necessary? Emacs runs everywhere... 😛

---

<div class="post-metadata">

**Author:** ![Dolazy](https://avatars.discourse-cdn.com/v4/letter/d/eb8c5e/32.png) [@Dolazy](https://rubytalk.org/u/Dolazy)\
**Post date:** [3 January 2007 17:51 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/13 "2007-01-03T17:51:50Z")

</div>

> Embed the Ruby interpreter in the text editor itself? Then just make certain  
> functions available to Ruby and script away.
> 
> Jason

That would be one of those obvious approaches that I couldn't think of  
myself.. Thanks!

---

<div class="post-metadata">

**Author:** ![Thomas\_Mueller](https://avatars.discourse-cdn.com/v4/letter/t/9de0a6/32.png) [@Thomas\_Mueller](https://rubytalk.org/u/Thomas_Mueller)\
**Post date:** [3 January 2007 22:15 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/14 "2007-01-03T22:15:34Z")

</div>

Hi,

You might want to have a look at Java 6. I have just installed that  
yesterday and haven't played around with it at all yet, but from what  
I read on the website it's integration with scripting languages might  
make it relatively easy to include Ruby scripting in your text editor.

I realise there would be quite a few disadvantages to this approach  
(need the runtime, need a brand new runtime, cannot code it in  
Ruby...) but it might be worth looking into this.

Thomas

> **···**
>
> 2007/1/4, Simon Strandgaard \<neoneye@gmail.com\>:
> 
> > On 1/3/07, Dolazy \<francis.rammeloo@gmail.com\> wrote:  
> > [snip stuff about ruby/c++]  
> > \> Or maybe there is a more obvious and straightforward approach that I  
> > \> overlooked?
> > 
> > have you considered writing the entire editor in ruby and  
> > then use ruby qt.. so you don't use any c++?
> > 
> > Ruby is good at string manipulation, so its possible  
> > to do the entire syntax coloring in ruby. I think  
> > this task is pretty big in c++.
> > 
> > --  
> > Simon Strandgaard  
> > [http://opcoders.com/](http://opcoders.com/)

---

<div class="post-metadata">

**Author:** ![Vincent\_Fourmond](https://avatars.discourse-cdn.com/v4/letter/v/cdc98d/32.png) [@Vincent\_Fourmond](https://rubytalk.org/u/Vincent_Fourmond)\
**Post date:** [3 January 2007 22:54 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/15 "2007-01-03T22:54:57Z")

</div>

M. Edward (Ed) Borasky wrote:

> Dolazy wrote:
> 
> > Hi all!
> > 
> > Vim and emacs are text editor that can be scripted using internal  
> > script languages. I'm thinking of writing a platform independent text  
> > editor myself that uses the ruby language for executing scripts. The  
> > host application would be written in C++ (+Qt) and it would somehow be  
> > able to interact with ruby.  
> > &nbsp;&nbsp;
> 
> Well, given QtRuby, you probably don't really need C++ at all -- you  
> could do it all in Ruby.

&nbsp;&nbsp;I can only agree to that. For what I experience, Qt4 1.4.7 is pretty  
stable, much more than its predecessors. But I think you'll need a bit  
of practice with the C++ classes before coding direcly with Qt/Ruby.

&nbsp;&nbsp;Well, have fun !

&nbsp;&nbsp;Vince

> **···**
>
> --  
> Vincent Fourmond, PhD student  
> [http://vincent.fourmond.neuf.fr/](http://vincent.fourmond.neuf.fr/)

---

<div class="post-metadata">

**Author:** ![Tim\_X](https://avatars.discourse-cdn.com/v4/letter/t/f9ae1b/32.png) [@Tim\_X](https://rubytalk.org/u/Tim_X)\
**Post date:** [4 January 2007 04:30 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/16 "2007-01-04T04:30:12Z")

</div>

"Simon Strandgaard" \<neoneye@gmail.com\> writes:

> Subject: Re: Scriptable text editor with Ruby?
> 
> [snip stuff about ruby/c++]
> 
> > Or maybe there is a more obvious and straightforward approach that I  
> > overlooked?
> 
> have you considered writing the entire editor in ruby and  
> then use ruby qt.. so you don't use any c++?
> 
> Ruby is good at string manipulation, so its possible  
> to do the entire syntax coloring in ruby. I think

syntax highlighting can be non-trivial to get right, paticularly with larger  
files (see some of the debates in emacs and xemacs community as an example).

What I think would be really good is semantic highlighting rather than syntax  
highlighting - this may sound crazy, but I find syntax problems to be the more  
trivial bugs to squash. Highlighting which gave more information on the  
"meaning" of what you are coding would probably provide more valuable  
information. The problem of course is that the editor wold then need to  
understand more than the basic syntax rules of the language you are coding in -  
essentially, it would need an interpreter, either built-in or closely  
integrated.

I've not really given a lot of thought to this, it just strikes me that nearly  
every editor does syntax highlighting and maybe its time to re-evaluate the  
paradigm and see if, given faster cpus, greater memory and larger storage, it  
might not be time to look at doing things differently.

Tim

> **···**
>
> > On 1/3/07, Dolazy \<francis.rammeloo@gmail.com\> wrote:
> 
> --  
> tcross (at) rapttech dot com dot au

---

<div class="post-metadata">

**Author:** ![Dolazy](https://avatars.discourse-cdn.com/v4/letter/d/eb8c5e/32.png) [@Dolazy](https://rubytalk.org/u/Dolazy)\
**Post date:** [4 January 2007 18:10 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/17 "2007-01-04T18:10:08Z")

</div>

Simon Strandgaard wrote:

> have you considered writing the entire editor in ruby and  
> then use ruby qt.. so you don't use any c++?
> 
> Ruby is good at string manipulation, so its possible  
> to do the entire syntax coloring in ruby. I think  
> this task is pretty big in c++.

🙂 Syntax coloring could be implemented as a ruby plugin.  
And all these advanced concepts I will try to delegate to libraries as  
much as I can.

---

<div class="post-metadata">

**Author:** ![Dolazy](https://avatars.discourse-cdn.com/v4/letter/d/eb8c5e/32.png) [@Dolazy](https://rubytalk.org/u/Dolazy)\
**Post date:** [4 January 2007 21:20 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/18 "2007-01-04T21:20:07Z")

</div>

Simon Strandgaard wrote:

> I don't know what exactly your goal is for this editor,  
> but if you want it to be great then take a look at  
> what other great editors is doing.
> 
> IMO TextMate is the best editor I have ever tried,  
> and was the reason I abandoned my own editor  
> project: [http://aeditor.rubyforge.org/](http://aeditor.rubyforge.org/)

Well TextMate has two important drawbacks: it's Mac only and it's not  
free. I'll give the evaluation version a try on my Mac at work to see  
if I it can inspire me (hopefully not discourage me if it's too  
good!)..

> btw: Know your enemy (maybe I should this one day)  
> [The Art of War - Wikipedia](http://en.wikipedia.org/wiki/The_Art_of_War)

Hah, thanks 😉

---

<div class="post-metadata">

**Author:** ![7rans](https://avatars.discourse-cdn.com/v4/letter/7/a8b319/32.png) [@7rans](https://rubytalk.org/u/7rans)\
**Post date:** [5 January 2007 04:20 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/19 "2007-01-05T04:20:15Z")

</div>

Suraj Kurapati wrote:

> Dolazy wrote:  
> \> I'm thinking of writing a platform independent text  
> \> editor myself that uses the ruby language for executing scripts. The  
> \> host application would be written in C++ (+Qt) and it would somehow be  
> \> able to interact with ruby.
> 
> Why start from scratch? Take over an existing, defunct open source  
> project:
> 
> &nbsp;&nbsp;[http://aeditor.rubyforge.org/](http://aeditor.rubyforge.org/)

+1

Simon?

T.

---

<div class="post-metadata">

**Author:** ![Dolazy](https://avatars.discourse-cdn.com/v4/letter/d/eb8c5e/32.png) [@Dolazy](https://rubytalk.org/u/Dolazy)\
**Post date:** [7 January 2007 02:27 UTC](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205/20 "2007-01-07T02:27:06Z")

</div>

I have taken a look at embedding and Swig.

Hmm... I'm very unsure about them.

Swig seems to assume that you want to take away the main() method and  
treat the C++ code as a shared library. It's not really the same as  
interprocess communication.

The embedding solution also provides one way interaction. The C++  
program calls ruby, but not the other way around. There might be ways  
around this, using callbacks or so. I'd like to learn more...

I suspect that IPC using XmlRpc is the most powerful solution (and easy  
to implement).

I am eager to learn your (anyone's) insights.

[Next page](https://rubytalk.org/t/scriptable-text-editor-with-ruby/34205.md?page=2)
