[#35036] Intentional Programming — "John" <nojgoalbyspam@...>

Hi all

17 messages 2002/03/01

[#35112] RDoc question — Michael Davis <mdavis@...>

I have a question about RDoc. I would like to reference an external

17 messages 2002/03/02

[#35162] string to array and back — Ron Jeffries <ronjeffries@...>

I am needing to convert strings to arrays of bytes and back. I see pack and

19 messages 2002/03/03

[#35364] file reading impossibly slow? — Ron Jeffries <ronjeffries@...>

So I'm doing this benchmark to work with my set program. Part of the problem is

18 messages 2002/03/07

[#35429] Interesting link on static/dynamic typing... — Robert Feldt <feldt@...>

...relevant to Ruby compared to other languages discussion:

25 messages 2002/03/08
[#35441] Re: Interesting link on static/dynamic typing... — Paul Brannan <paul@...> 2002/03/08

On Fri, Mar 08, 2002 at 05:34:43PM +0900, Robert Feldt wrote:

[#35460] Spam, ruby-talk, and me — Dave Thomas <Dave@...>

14 messages 2002/03/08

[#35537] Confusion — David Corbin <dcorbin@...>

The following is from my debugging through xmlc.rb

16 messages 2002/03/10

[#35579] RE: WIN32OLE and LDAP — "Morris, Chris" <chris.morris@...>

> The new version 0.4.2 of Win32OLE has WIN32OLE.bind method.

16 messages 2002/03/11

[#35652] Method type 'abstract' — Peter Hickman <peter@...>

The one thing I miss in Ruby is the abstract class method to go along

15 messages 2002/03/12

[#35653] Some potential RCRs — "Bob Alexander" <bobalex@...>

Here are a few thing I am considering submitting as RCRs. I'm looking =

50 messages 2002/03/12
[#35672] Re: Some potential RCRs — matz@... (Yukihiro Matsumoto) 2002/03/12

Hi,

[#35683] Re: Some potential RCRs — Massimiliano Mirra <list@...> 2002/03/12

On Wed, Mar 13, 2002 at 03:58:01AM +0900, Yukihiro Matsumoto wrote:

[#35697] Re: Some potential RCRs — David Alan Black <dblack@...> 2002/03/13

Hello --

[#35694] rpkg 0.3 — Massimiliano Mirra <list@...>

14 messages 2002/03/13
[#35699] RE: [ANN] rpkg 0.3 — <james@...> 2002/03/13

>

[#35787] testunit - setup -> set_up ? — "Morris, Chris" <chris.morris@...>

I'm just starting to use testunit instead of rubyunit ... I noticed with an

21 messages 2002/03/13
[#35793] RE: testunit - setup -> set_up ? — "Nathaniel Talbott" <nathaniel@...> 2002/03/13

Morris, Chris [mailto:chris.morris@snelling.com] wrote:

[#35796] Re: testunit - setup -> set_up ? — Dave Thomas <Dave@...> 2002/03/13

"Nathaniel Talbott" <nathaniel@talbott.ws> writes:

[#35797] RE: testunit - setup -> set_up ? — "Nathaniel Talbott" <nathaniel@...> 2002/03/13

dave@thomases.com [mailto:dave@thomases.com] wrote:

[#35898] camelCase and underscore_style — "Morris, Chris" <chris.morris@...>

First, a question. If underscore_style is the Ruby norm for methods and the

20 messages 2002/03/15
[#35924] Re: camelCase and underscore_style — "Guy N. Hurst" <gnhurst@...> 2002/03/15

Phil Tomson wrote:

[#35930] RE: camelCase and underscore_style — "Nathaniel Talbott" <nathaniel@...> 2002/03/16

Guy N. Hurst [mailto:gnhurst@hurstlinks.com] wrote:

[#35989] ANN: Locana GUI and GUI Builder version 0.81 — Michael Davis <mdavis@...>

I am pleased to announce release 0.81 of Locana. Locana is a GUI

16 messages 2002/03/16

[#35992] XPath — Michael Schuerig <schuerig@...>

27 messages 2002/03/16

[#36034] Mini Rant: Indenting — Thomas Hurst <tom.hurst@...>

Why is it that I see *so* much code like:

14 messages 2002/03/17

[#36049] web templating for static sites? — Massimiliano Mirra <list@...>

I'm using the Template Toolkit for generating static web sites and I

42 messages 2002/03/17
[#36426] web standars (was: web templating for static sites?) — Tobias Reif <tobiasreif@...> 2002/03/20

Albert Wagner wrote:

[#36052] Xml Serialization for Ruby — "Chris Morris" <chrismo@...>

=Xml Serialization for Ruby

20 messages 2002/03/17
[#36059] Re: [ANN] Xml Serialization for Ruby — Massimiliano Mirra <list@...> 2002/03/17

On Mon, Mar 18, 2002 at 05:20:56AM +0900, Chris Morris wrote:

[#36067] eval/Module question — David Corbin <dcorbin@...>

If I have a String src that is similar to the following:

13 messages 2002/03/18

[#36157] Development of Windows version of Ruby — ptkwt@...1.aracnet.com (Phil Tomson)

Now that we've dumped the cygwin requirement for the Windows version of

63 messages 2002/03/18
[#36330] Re: Development of Windows version of Ruby — Ron Jeffries <ronjeffries@...> 2002/03/19

On Tue, 19 Mar 2002 14:05:27 GMT, "Albert L. Wagner" <alwagner@uark.edu> wrote:

[#36431] Re: Development of Windows version of Ruby — Dennis Newbold <dennisn@...> 2002/03/20

[#36458] Windows version of Ruby (proposals) — ptkwt@... (Phil Tomson) 2002/03/21

Dennis Newbold <dennisn@pe.net> wrote in message news:<Pine.GSO.3.96.1020320113603.22242B-100000@shell2>...

[#36482] RE: Windows version of Ruby (proposals) — "Christian Boos" <cboos@...> 2002/03/21

Some thoughts on the 2 first Windows issues, plus a 4th one...

[#36496] Re: Windows version of Ruby (proposals) — Dave Thomas <Dave@...> 2002/03/21

"Christian Boos" <cboos@bct-technology.com> writes:

[#36510] Re: Windows version of Ruby (proposals) — nobu.nokada@... 2002/03/21

Hi,

[#36514] Re: Windows version of Ruby (proposals) — Dave Thomas <Dave@...> 2002/03/21

nobu.nokada@softhome.net writes:

[#36518] Re: Windows version of Ruby (proposals) — nobu.nokada@... 2002/03/21

Hi,

[#36211] dots in Dir.entries — matz@... (Yukihiro Matsumoto)

Hi,

22 messages 2002/03/19

[#36231] style choice — Ron Jeffries <ronjeffries@...>

A style question for the community ... which of the following do you prefer, and

18 messages 2002/03/19

[#36345] ANN: REXML 2.0 — Sean Russell <ser@...>

I have a feeling there will only be three major revisions of REXML. Version

19 messages 2002/03/20

[#36610] Re: Windows version of Ruby (proposals) — Ron Jeffries <ronjeffries@...>

On Thu, 21 Mar 2002 14:11:55 GMT, Dave Thomas <Dave@PragmaticProgrammer.com> wrote:

16 messages 2002/03/22

[#36645] Ruby for Mac OS 10.1 — Jim Freeze <jim@...>

Hi:

28 messages 2002/03/23

[#36768] Re: Difference between 'do' and 'begin' — Clemens Hintze <c.hintze@...>

In <slrna9ulvi.f2h.mwg@fluffy.isd.dp.ua> Wladimir Mutel <mwg@fluffy.isd.dp.ua> writes:

23 messages 2002/03/26
[#36783] RE: Difference between 'do' and 'begin' — <james@...> 2002/03/26

[#36792] Re: Difference between 'do' and 'begin' — Kent Dahl <kentda@...> 2002/03/26

james@rubyxml.com wrote:

[#36808] Error calling Tk in a loop — <james@...>

I'm trying to write some code that pops up a Tk window when for certain

15 messages 2002/03/26

[#36841] RE: Windows version of Ruby (proposals) — "Andres Hidalgo" <sol123@...>

I believe that Ruby has a place in windows (Office), I happened to have

14 messages 2002/03/27

[#36863] Hash.new(Hash.new) doesn't use Hash.new as default value — "Jonas Delfs" <jonas@...>

Hi -

18 messages 2002/03/27

[#37080] Why isn't Math object-oriented? — Bil Kleb <W.L.Kleb@...>

So I'm reading along in the Pixaxe book (yet again), and I am told

15 messages 2002/03/30

[#37121] String#begins?(s) — timsuth@... (Tim Sutherland)

class String

24 messages 2002/03/31

Re: [ANN] Xml Serialization for Ruby

From: Massimiliano Mirra <list@...>
Date: 2002-03-19 12:22:42 UTC
List: ruby-talk #36225
On Tue, Mar 19, 2002 at 09:27:55AM +0900, Chris Morris wrote:
> > These two are mostly equivalent.  The main reasons I prefer the first
> > are 1) since the element name is the class name, you can always
> > extrapolate an element and easily marshal it into an object
> 
> I'm not sure I follow you here. Are you saying that with class name as an
> element it's required to be there, therefore you can "always" read it in --
> whereas with an optional type attribute, you might get stuck?

Exactly.  Consider this:

<AddressBook>
  <Entry>
    <String name="firstname">John</String>
    <String name="lastname">Doe</String>
    <Address name="address">
      <String name="street">Red Road, 6</String>
      <Integer name="ZIP">98765</Integer>
    </Address>
  </Entry>
  <Entry>
    ...
  </Entry>
</AddressBook>

If you want to get all the addresses (and only them) from a file like
this, you just have to wait for an <Address> element while parsing the
XML source and marshal it.  If you relied on the top element, you'd
have to marshal all the address book.  Depending on your application,
this can be negligible as well as important.

The application for which I hacked XMarshal involved tuples, which
were represented by arrays.  In that case, I had something like:

["John", /^G/, 12345]

It translated to:

<Array>
  <String>John</String>
  <Regexp>^G</Regexp>
  <Integer>12345</Integer>
</Array>

...which you couldn't really express in this form:

<Array>
  <attrname>
   ...
  </attrname>
</Array> 

because ``attributes'' (not really class attributes---they were just
array's content) had no name.  Again, it depends on what the end
application is going to be, and whether arrays, hashes and other
containers are going to get in the way.

> > 2)
> > available classes are a finite number while attribute names are
> > virtually infinite, so it might be easier to validate a document in
> > the first case.
> 
> Hmmm ... again not following exactly. If the root node was required to be
> class name (which I'm leaning towards), then you'd still have that to match
> against the finite set of classes, then assume the rest of the element names
> matched existing instance vars.

Hmmm, yes, you're right.

> Yes, but I'd like the option to not force type info in there. If I'm just
> doing a simple thing and all the type info is getting in the way, I want to
> be able to turn it off. I plan on supporting full type info if you want
> it -- but your formatting requires me to have it, right?

Yes, it does, and I get your point about not forcing it.

> I agree that that smells ... the inconsistency of "root element is class
> name, all other nodes are instance var names" ... but I'm almost positive
> this is how C# does it, and when I was working with it felt quite natural
> from a 'user' standpoint. The inconsistency never occurred to me until now.
> Of course, I need to double check -- work has detoured me from my C#
> lately.

Well, let us know about that, but if you find what feels a better
approach than C#'s, then by all means go for it. :-)

> Thanks for sending that on. One thing I don't like about the xconv approach
> is all the if/case-like statements,

Yes, that is not pretty at all, but some classes require special
handling (arrays and the likes) and some other can be optimized (true,
nil, false) so that is not too high a price to pay.

> and everything being contained in a
> standalone processing class. My approach actually adds to_xml/from_xml
> methods to the standard classes and classes with the module include, so it
> feels more OOPy to me.

I agree, that feels more OOP to me too.  My application had some
requirements that prevented that:

- I did not know in advance what classes had to be marshallable;
- even if I did, I could not create a marshaller object for each of
  them because there were going to be a lot and performance would have
  decreased;
- I could not use a global object either, as the stuff needed to be
  thread safe, and I could not use a mutex for the same performance reasons.

> Can you summarize your tweaks? And did you fix things like the Hash key
> limitation (had to be a string, IIRC)?

I added Class, Regexp and Symbol, and yes, hashes containing other
types can be marshaled.  The tests pretty much cover all the types it
handles.


Massimiliano

In This Thread