[#289458] Parsing JSON (#155) — Ruby Quiz <james@...>

The three rules of Ruby Quiz:

86 messages 2008/02/01
[#289675] Re: [QUIZ] Parsing JSON (#155) — steve <oksteev@...> 2008/02/03

Hey guys

[#289709] Re: [QUIZ] Parsing JSON (#155) — "Eric Mahurin" <eric.mahurin@...> 2008/02/04

On Feb 3, 2008 8:14 AM, steve <oksteev@yahoo.com> wrote:

[#289712] Re: [QUIZ] Parsing JSON (#155) — Clifford Heath <no@...> 2008/02/04

Eric Mahurin wrote:

[#289715] Re: [QUIZ] Parsing JSON (#155) — "Eric Mahurin" <eric.mahurin@...> 2008/02/04

On Feb 3, 2008 6:25 PM, Clifford Heath <no@spam.please.net> wrote:

[#289718] Re: [QUIZ] Parsing JSON (#155) — Clifford Heath <no@...> 2008/02/04

Eric Mahurin wrote:

[#289722] Re: [QUIZ] Parsing JSON (#155) — "Eric Mahurin" <eric.mahurin@...> 2008/02/04

On Feb 3, 2008 6:39 PM, Clifford Heath <no@spam.please.net> wrote:

[#289557] Comparing Active Record VS Datamapper...? — Softmind Technology <softmindtechnology@...>

Hello,

15 messages 2008/02/02
[#289633] Re: Comparing Active Record VS Datamapper...? — Ilan Berci <coder68@...> 2008/02/02

Softmind Technology wrote:

[#289636] Re: Comparing Active Record VS Datamapper...? — "s.ross" <cwdinfo@...> 2008/02/03

On 2/2/08 3:56 PM, "Ilan Berci" <coder68@yahoo.com> wrote:

[#289572] Extracting vowels and consonants using regular expression — Dondi <Donovan.Dillon@...>

I am trying to parse a string and extract all vowels and consonants

10 messages 2008/02/02

[#289579] FastRI 0.3.1: faster, Leopard compatibility, etc. — Mauricio Fernandez <mfp@...>

FastRI is an alternative to the ri documentation browser for Ruby.

21 messages 2008/02/02
[#289683] Re: [ANN] FastRI 0.3.1: faster, Leopard compatibility, etc. — botp <botpena@...> 2008/02/03

On Feb 3, 2008 1:07 AM, Mauricio Fernandez <mfp@acm.org> wrote:

[#290164] Re: [ANN] FastRI 0.3.1: faster, Leopard compatibility, etc. — Eric Hodel <drbrain@...7.net> 2008/02/06

On Feb 3, 2008, at 07:40 AM, botp wrote:

[#291478] Re: [ANN] FastRI 0.3.1: faster, Leopard compatibility, etc. — Mauricio Fernandez <mfp@...> 2008/02/18

On Thu, Feb 07, 2008 at 07:52:20AM +0900, Eric Hodel wrote:

[#291493] Re: [ANN] FastRI 0.3.1: faster, Leopard compatibility, etc. — James Gray <james@...> 2008/02/18

On Feb 18, 2008, at 5:53 AM, Mauricio Fernandez wrote:

[#289674] Ruby for game programming — t3chn0n3rd <darrin_allen@...>

Is anyone using Ruby for game programming?

17 messages 2008/02/03

[#289859] how to say # in ruby — Dan Ford <wade@...>

I'm accustomed to usenet as opposed to whatever this is.

22 messages 2008/02/04

[#289900] Introducing Waves - Web App Framework — Dan Yoder <dan@...>

I am pleased to announce the first beta release of Waves, an open-

32 messages 2008/02/05
[#290017] Re: [ANN] Introducing Waves - Web App Framework — Daniel DeLorme <dan-ml@...42.com> 2008/02/06

Dan Yoder wrote:

[#290001] Computer Science Problems — markonlinux@...

Hi all,

33 messages 2008/02/05

[#290020] Ruby type-safe? Ruby strongly/weakly typed? Ruby pitfalls? — "rule.rule.rule@..." <rule.rule.rule@...>

Hi,

36 messages 2008/02/06

[#290022] simple ruby proxy server? — Dt Town <dtown22@...>

I am trying to right at application which will simply record the headers

13 messages 2008/02/06

[#290167] Array Practice — Adam Akhtar <adamtemporary@...>

As some of you may know from previous threads im trying to practice

27 messages 2008/02/06

[#290195] info on block arguments — Russell Me <russ@...>

I'm trying to pick up ruby and I'm impressed by all the cool stuff it

24 messages 2008/02/07

[#290208] idiom I've not seen before — Rob Saul <wyrd@...>

12 messages 2008/02/07

[#290244] Parsing JSON (#155) — Ruby Quiz <james@...>

We saw a large variety of solutions for this week's problem. Many of them used

13 messages 2008/02/07

[#290245] using net::ssh shell to sudo to another user and execute commands — "wbsurfver@..." <wbsurfver@...>

11 messages 2008/02/07

[#290272] is lots of files with Threads faster? — Chris Richards <evilgeenius@...>

Im required to open 50+ files and parse the data in them. WOuld using

11 messages 2008/02/07

[#290296] BigDecimal.new('15.25') == 15.25, false ?? — Henry Jones <mathieu.houle@...>

Hi,

14 messages 2008/02/07

[#290328] trouble with FileUtils.rm() -- Invalid arguement error — an an <dtown22@...>

I have been screwing with this for the last hour, and I still cant get

12 messages 2008/02/08

[#290374] Internal Rate of Return (#156) — Ruby Quiz <james@...>

The three rules of Ruby Quiz:

47 messages 2008/02/08

[#290483] Beginner help - txt dungeon — Jonathon Hartoon <ezrickknight@...>

Hi. I have tried to learn other programming languages before and ruby

20 messages 2008/02/09

[#290716] non case sensitive searching — Adam Akhtar <adamtemporary@...>

If i want to see if a list contains a particular word how would i go

15 messages 2008/02/11

[#290735] Rev/actor TCP monkey patching — fedzor <fedzor@...>

Short and sweet -

13 messages 2008/02/11

[#290825] How do C programmers do unit testing? — "M. Edward (Ed) Borasky" <znmeb@...>

This may seem like a silly question, but how do C programmers (assume

13 messages 2008/02/12

[#290931] Robert's Ruby Riddle: Local or Method — "Robert Dober" <robert.dober@...>

Hi list I was just thinking it might fun to present some of Ruby's

10 messages 2008/02/13

[#290982] ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...>

I recently upgraded to ruby 1.8.6 on mac os x 10.4.7. I had ruby tk

47 messages 2008/02/13
[#290994] Re: ruby tk -- how do you get it working? — Jeremy Henty <onepoint@...> 2008/02/13

On 2008-02-13, 7stud -- <bbxx789_05ss@yahoo.com> wrote:

[#291001] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/14

Jeremy Henty wrote:

[#291006] Re: ruby tk -- how do you get it working? — Hidetoshi NAGAI <nagai@...> 2008/02/14

From: 7stud -- <bbxx789_05ss@yahoo.com>

[#291014] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/14

Hidetoshi NAGAI wrote:

[#291447] Re: ruby tk -- how do you get it working? — Hidetoshi NAGAI <nagai@...> 2008/02/18

From: 7stud -- <bbxx789_05ss@yahoo.com>

[#291459] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/18

Hidetoshi NAGAI wrote:

[#291519] Re: ruby tk -- how do you get it working? — Morton Goldberg <m_goldberg@...> 2008/02/18

On Feb 18, 2008, at 2:52 AM, 7stud -- wrote:

[#291529] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/18

Morton Goldberg wrote:

[#291556] Re: ruby tk -- how do you get it working? — Morton Goldberg <m_goldberg@...> 2008/02/19

On Feb 18, 2008, at 3:05 PM, 7stud -- wrote:

[#291567] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/19

Morton Goldberg wrote:

[#291601] Re: ruby tk -- how do you get it working? — Morton Goldberg <m_goldberg@...> 2008/02/19

On Feb 18, 2008, at 10:28 PM, 7stud -- wrote:

[#291603] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/19

Morton Goldberg wrote:

[#291621] Re: ruby tk -- how do you get it working? — Morton Goldberg <m_goldberg@...> 2008/02/19

On Feb 19, 2008, at 7:05 AM, 7stud -- wrote:

[#291626] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/19

Morton Goldberg wrote:

[#291637] Re: ruby tk -- how do you get it working? — John Joyce <dangerwillrobinsondanger@...> 2008/02/19

[#291707] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/20

John Joyce wrote:

[#291742] Re: ruby tk -- how do you get it working? — Morton Goldberg <m_goldberg@...> 2008/02/20

On Feb 19, 2008, at 7:41 PM, 7stud -- wrote:

[#291747] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/20

Morton Goldberg wrote:

[#291819] Re: ruby tk -- how do you get it working? — "Leslie Viljoen" <leslieviljoen@...> 2008/02/20

On Feb 20, 2008 8:59 AM, 7stud -- <bbxx789_05ss@yahoo.com> wrote:

[#291846] Re: ruby tk -- how do you get it working? — John Joyce <dangerwillrobinsondanger@...> 2008/02/20

[#291967] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/21

John Joyce wrote:

[#292774] Re: ruby tk -- how do you get it working? — Tim Ferrell <s0nspark@...> 2008/02/27

7stud -- wrote:

[#292964] Re: ruby tk -- how do you get it working? — 7stud -- <bbxx789_05ss@...> 2008/02/29

Tim Ferrell wrote:

[#292971] Re: ruby tk -- how do you get it working? — Tim Ferrell <s0nspark@...> 2008/02/29

7stud -- wrote:

[#292992] Re: ruby tk -- how do you get it working? — Tim Ferrell <s0nspark@...> 2008/02/29

Tim Ferrell wrote:

[#290985] my noob "numbering lines" programe. How to improve? — Adam Akhtar <adamtemporary@...>

Give us hints on how to improve this program. If you want to show your

11 messages 2008/02/13

[#291013] Memcached: Dealing with unknown keys — Tony Garcia <tony23@...>

I was wondering if there is a way to handle reading keys when you don't

14 messages 2008/02/14

[#291039] Internal Rate of Return (#156) — Ruby Quiz <james@...>

Solving the IRR equation is essentially a matter of computational guesswork.

15 messages 2008/02/14

[#291084] object specific methods and id — UpsNDowns <tnospamhomas@...>

Hi,

24 messages 2008/02/14
[#291088] Re: object specific methods and id — 7stud -- <bbxx789_05ss@...> 2008/02/14

UpsNDowns wrote:

[#291089] Re: object specific methods and id — Gary Wright <gwtmp01@...> 2008/02/14

[#291184] Re: object specific methods and id — UpsNDowns <tnospamhomas@...> 2008/02/15

Thanks for the reply.

[#291261] Re: object specific methods and id — Gary Wright <gwtmp01@...> 2008/02/16

[#291302] Re: object specific methods and id — UpsNDowns <tnospamhomas@...> 2008/02/16

Gary Wright wrote:

[#291141] The Smallest Circle (#157) — Matthew D Moss <matthew.moss@...>

The three rules of Ruby Quiz 2:

61 messages 2008/02/15

[#291192] Proper way to RDoc markup? — Serg Koren <skoren@...>

Hi,

12 messages 2008/02/15

[#291269] Alter String base class to perform new (private methods) before returning itself when called by print statements — "Steven G. Harms" <steven.harms@...>

class String

8 messages 2008/02/16

[#291280] GC error ? — Piotr Sawicki <piotr.sawicki@...>

Run this program and observe memory usage.

26 messages 2008/02/16
[#291584] Re: GC error ? — "evanwebb@..." <evanwebb@...> 2008/02/19

On Feb 16, 4:12m, Piotr Sawicki <piotr.sawi...@gmail.com> wrote:

[#291281] TRAC - Trac, Project Leads, Python, and Mr. Noah Kantrowitz (sanitizer) — Ilias Lazaridis <ilias@...>

Essence:

14 messages 2008/02/16

[#291354] Slide Show v0.1 - A Free Web Alternative to PowerPoint and KeyNote in Ruby Now Live — "Gerald Bauer" <geraldbauer2007@...>

Hello,

12 messages 2008/02/17

[#291381] displaying user inputed arrays — Isaac Toothyxdip <toothyxdip@...>

[code]

36 messages 2008/02/17
[#291405] Re: displaying user inputed arrays — Wally T Terrible <wally.terrible@...> 2008/02/17

I'm not entirely sure what you intend to do. If you wanted to get five

[#291424] Re: displaying user inputed arrays — Siep Korteling <s.korteling@...> 2008/02/17

Wally T Terrible wrote:

[#291858] Re: displaying user inputed arrays — "Todd Benson" <caduceass@...> 2008/02/20

On Feb 17, 2008 9:18 AM, Isaac Toothyxdip <toothyxdip@gmail.com> wrote:

[#291877] Re: displaying user inputed arrays — "Todd Benson" <caduceass@...> 2008/02/20

On Wed, Feb 20, 2008 at 1:30 PM, Todd Benson <caduceass@gmail.com> wrote:

[#291884] Re: displaying user inputed arrays — Isaac Toothyxdip <toothyxdip@...> 2008/02/20

Thanks that works!

[#291887] Re: displaying user inputed arrays — Isaac Toothyxdip <toothyxdip@...> 2008/02/20

Isaac Toothyxdip wrote:

[#291899] Re: displaying user inputed arrays — "Todd Benson" <caduceass@...> 2008/02/20

On Wed, Feb 20, 2008 at 3:56 PM, Isaac Toothyxdip <toothyxdip@gmail.com> wrote:

[#291515] Connecting to HyperTerminal — Active View <active.view@...>

Hi all...

16 messages 2008/02/18
[#291525] Re: Connecting to HyperTerminal — Ben Bleything <ben@...> 2008/02/18

On Tue, Feb 19, 2008, Active View wrote:

[#291630] Object#freeze as a basis for caching of method results? — "Shot (Piotr Szotkowski)" <shot@...>

Hello, ruby-talk.

12 messages 2008/02/19

[#291664] ||= [] idiom — "Leslie Viljoen" <leslieviljoen@...>

I often make use of this idiom to add something to an array in a hash of arrays:

24 messages 2008/02/19

[#291677] Is there any object-oriented File class in ruby ? — tom_33 <tomjbr.56770318@...>

I am very new to Ruby and my question is about trying to understand

22 messages 2008/02/19

[#291682] HELP: Need to continue the loop after the exception — mirth <mirthcyy@...>

hi guys,

12 messages 2008/02/19

[#291717] IP Address to Decimal - is an one-liner possible? — "Tiago Pinto" <thpinto@...>

Hi guys,

22 messages 2008/02/20

[#291774] What does *args do? — Stedwick <philip.brocoum@...>

I sometimes see funcs declared with def fun (blah, *args)

14 messages 2008/02/20

[#291853] 32bit vs 64bit vs UML performance — Lionel Bouton <lionel-subscription@...>

I've run the QUIZ benchmark on several systems to check their relative

17 messages 2008/02/20

[#291990] beginner's problem with sqlite3 — Tom Cloyd <tomcloyd@...>

It would be helpful if the sqlite3-ruby documentation offered one or two

15 messages 2008/02/21

[#292056] Where does instance_eval _magically_ set the variable to? — Andrew Chen <hangfei@...>

Hi,

13 messages 2008/02/21

[#292080] Newbie Mem Leak Issue — Keith Barr <keith.barr@...>

I am fairly new to Ruby and a program that I have created seems to have

14 messages 2008/02/21

[#292186] gsub("\\", "\\\\") seems unintuitive — John Woods <jqwoods@...>

The following confusing behavior is noted in the pickaxe book (2nd ed)

11 messages 2008/02/22

[#292250] ANN: Teach yourself Ruby - the hard way! — "Martin DeMello" <martindemello@...>

A frequent question from Ruby newcomers is "Okay, I've read the

12 messages 2008/02/23

[#292269] Monkeypatching is Destroying Ruby — "Avdi Grimm" <avdi@...>

Hi folks,

118 messages 2008/02/23
[#292362] Re: Monkeypatching is Destroying Ruby — furtive.clown@... 2008/02/24

[#292366] Re: Monkeypatching is Destroying Ruby — Gary Wright <gwtmp01@...> 2008/02/24

[#292961] Re: Monkeypatching is Destroying Ruby — Trans <transfire@...> 2008/02/29

[#292978] Re: Monkeypatching is Destroying Ruby — "Eric Mahurin" <eric.mahurin@...> 2008/02/29

On Fri, Feb 29, 2008 at 6:20 AM, Trans <transfire@gmail.com> wrote:

[#292274] Re: Monkeypatching is Destroying Ruby — "Eric Mahurin" <eric.mahurin@...> 2008/02/23

On Sat, Feb 23, 2008 at 3:07 PM, Avdi Grimm <avdi@avdi.org> wrote:

[#292385] Re: Monkeypatching is Destroying Ruby — James Gray <james@...> 2008/02/25

On Feb 23, 2008, at 4:23 PM, Eric Mahurin wrote:

[#292281] Re: Monkeypatching is Destroying Ruby — "M. Edward (Ed) Borasky" <znmeb@...> 2008/02/23

Avdi Grimm wrote:

[#292514] Re: Monkeypatching is Destroying Ruby — "Michal Suchanek" <hramrach@...> 2008/02/25

On 24/02/2008, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:

[#292584] Re: Monkeypatching is Destroying Ruby — "Jones, Brian - McClatchy Interactive" <bjones@...> 2008/02/26

I'd be at least a little interested in potentially offering developers

[#292594] Re: Monkeypatching is Destroying Ruby — Trans <transfire@...> 2008/02/26

[#292601] Re: Monkeypatching is Destroying Ruby — James Britt <james.britt@...> 2008/02/26

Trans wrote:

[#292603] Re: Monkeypatching is Destroying Ruby — "Avdi Grimm" <avdi@...> 2008/02/26

On Tue, Feb 26, 2008 at 1:25 PM, James Britt <james.britt@gmail.com> wrote:

[#292368] Suprising behaviour with "def property=" method — "Farrel Lifson" <farrel.lifson@...>

I had a bit of a surprise with the following

14 messages 2008/02/24

[#292394] NoMethodError: private method `to_date' — Sukeerthi Adiga <sukeerthiadiga@...>

Loading development environment.

12 messages 2008/02/25

[#292398] Thread#raise, Thread#kill, and timeout.rb are unsafe — Charles Oliver Nutter <charles.nutter@...>

I wrote up an article on Thread#raise, Thread#kill, and timeout.rb that

58 messages 2008/02/25
[#294446] Re: Thread#raise, Thread#kill, and timeout.rb are unsafe — Yukihiro Matsumoto <matz@...> 2008/03/13

Hi,

[#294479] Re: Thread#raise, Thread#kill, and timeout.rb are unsafe — Paul Brannan <pbrannan@...> 2008/03/13

On Fri, Mar 14, 2008 at 01:02:52AM +0900, Yukihiro Matsumoto wrote:

[#294491] Re: Thread#raise, Thread#kill, and timeout.rb are unsafe — Yukihiro Matsumoto <matz@...> 2008/03/13

Hi,

[#294551] Re: Thread#raise, Thread#kill, and timeout.rb are unsafe — Paul Brannan <pbrannan@...> 2008/03/14

On Fri, Mar 14, 2008 at 07:43:28AM +0900, Yukihiro Matsumoto wrote:

[#294559] Re: Thread#raise, Thread#kill, and timeout.rb are unsafe — Yukihiro Matsumoto <matz@...> 2008/03/14

Hi,

[#294591] Re: Thread#raise, Thread#kill, and timeout.rb are unsafe — Tanaka Akira <akr@...> 2008/03/14

In article <E1JaB7P-0000Zc-QP@x61.netlab.jp>,

[#294639] Re: Thread#raise, Thread#kill, and timeout.rb are unsafe — Yukihiro Matsumoto <matz@...> 2008/03/15

Hi,

[#294917] Re: Thread#raise, Thread#kill, and timeout.rb are unsafe — Tanaka Akira <akr@...> 2008/03/18

In article <E1JaM9H-0000jj-AB@x61.netlab.jp>,

[#295093] Re: Thread#raise, Thread#kill, and timeout.rb are unsafe — Paul Brannan <pbrannan@...> 2008/03/19

On Tue, Mar 18, 2008 at 02:04:40PM +0900, Tanaka Akira wrote:

[#292540] Math problem — grandmabeckie@...

I am try to help my daughter:

25 messages 2008/02/26

[#292704] Getting number of days in a month — Shandy Nantz <shandybleu@...>

This is probably an easy question but I am trying to get at the number

26 messages 2008/02/27

[#292781] MacRuby — "Laurent Sansonetti" <laurent.sansonetti@...>

Hi,

16 messages 2008/02/28

[#292795] Need a regex searching html code — Chirantan <chirantan.rajhans@...>

I have an html code into string. I want to retrieve the content (Can

18 messages 2008/02/28

[#292816] proc.new and return — S2 <email@...>

I am sure this is a really easy question for most of you, but i was not

15 messages 2008/02/28

[#292839] Proposed Solutions - Was [ Re: Monkeypatching is Destroying Ruby ] — hemant <gethemant@...>

On Tue, Feb 26, 2008 at 11:55 PM, James Britt <james.britt@gmail.com> wrote:

17 messages 2008/02/28

[#292860] Named sprintf parameters — Trans <transfire@...>

I have a question and perhaps a bit of challenge for those with mad

15 messages 2008/02/28

[#292865] constants defined in Kernel are also defined in Object? — Paul Brannan <pbrannan@...>

This seems peculiar to me:

15 messages 2008/02/28

[#293044] making a monthly calendar... — Mikkel Bruun <mikkel@...>

Hey

25 messages 2008/02/29
[#293088] Re: making a monthly calendar... — "Todd Benson" <caduceass@...> 2008/03/01

On Fri, Feb 29, 2008 at 4:30 PM, Mikkel Bruun <mikkel@helenius.dk> wrote:

[#293090] Re: making a monthly calendar... — Mikkel Bruun <mikkel@...> 2008/03/01

Todd Benson wrote:

[#293092] Re: making a monthly calendar... — "Todd Benson" <caduceass@...> 2008/03/01

On Sat, Mar 1, 2008 at 2:34 AM, Mikkel Bruun <mikkel@helenius.dk> wrote:

[#293223] Re: making a monthly calendar... — "Todd Benson" <caduceass@...> 2008/03/03

Oh my goodness! A thousand apologies. I gave you a rotating month. See below.

[#293264] Re: making a monthly calendar... — Mikkel Bruun <mikkel@...> 2008/03/03

So I ended up with:

Re: Avoiding memcpy() during String creation in a C extension

From: Wincent Colaiuta <win@...>
Date: 2008-02-08 10:00:00 UTC
List: ruby-talk #290359
On 6 feb, 20:43, Phlip <phlip2...@gmail.com> wrote:
> Wincent Colaiuta wrote:
> > I'm working on a fast wikitext-to-HTML translator written in C and am
> > trying to optimize it.
>
> > Profiling shows that a fair portion of the time is being spent
> > instantiating temporary strings and much of that time is spent in
> > memcpy.
>
> Shouldn't you just focus on streaming? I always figured that getting faster than
> fgetc() and fputc() would requiring reinventing all the memory-mapped files and
> DMA that back those up...

I'm not sure what you mean. Can you clarify a bit? The translator
consists of an extremely faster Ragel tokenizer/lexer/scanner that
emits tokens one at a time, and a parser that decides what to do with
them. The tokens themselves don't contain copies of the corresponding
substrings, but pointers into the input string. The parser is not a
recursive descent parser but an on-the-fly translator that decides
what to emit as it sees each token (thus avoiding function call
overhead; we don't need the same level of structured parsing that a
recursive descent parser would give us because we're only transforming
wikitext into HTML, not parsing a programming language; wikitext can
be imperfect and have syntax errors whereas a strictly defined
programming language must not).

But when it comes time to emit the output you generally have to
instantiate some strings. As an example, consider parsing the
wikitext, ''foo'', which should be translated into <em>foo</em>. At
the Ruby level you want a simple interface, where you pass in a
standard String object and get back a standard String object:

  parser.parse "''foo''"
  => "<em>foo</em>"

So under the covers in the C extension this is what happens:

  0. Initialize empty output buffer, currently just an empty Ruby
string
  1. Provide tokenizer with a pointer to the start of the input string
(no copies are made)
  2. Ask tokenizer for the next token
  3. Get an "EM" token (no copy of token text made, just a pointer
into the input string
  4. Parser appends "<em>" to output buffer using rb_str_cat (avoiding
instantiating of Ruby String)
  5. Ask tokenizer for next token
  6. Get a "PRINTABLE" token (no copy of token text made, just a
pointer into the input string)
  7. Parser appends "foo" to output buffer using rb_str_cat (again
avoiding instantiating a Ruby String)
  8. Ask tokenizer for next token
  7. Get an "EM" token
  9. Parser appends "</em> to output buffer using rb_str_cat
  10. Return finished String to caller

So in a general sense it is a "streaming" transformer (meaning that it
transforms the input on the fly without doing any lookahead except in
some special circumstances where it has to ask the lexer for another
token in order to decide what to emit), but I gather from your comment
that you're referring to something else.

So in looking at the code there are now very few String/Object
instantiations that I can avoid because I am already doing as much as
I can at the raw byte level (with rb_str_cat and memcpy itself).
Nevertheless it looks like those few sites are now the lowest-hanging-
fruit reported in profiling and in order to make it faster that's what
I have to attack. So I sent my original email in this thread because
there are still _some_ temporary instantiations that I could avoid on
occasions where the parser calls out to other functions (which are
actually mostly inlined), and being able to pass in a buffer without
having Ruby memcpy it would be a great help.

Cheers,
Wincent


In This Thread

Prev Next