Up to Main Index Up to Journal for January, 2013
JOURNAL FOR WEDNESDAY 9TH JANUARY, 2013
______________________________________________________________________________
SUBJECT: Parsing data files
DATE: Wed Jan 9 23:21:06 GMT 2013
First entry of 2013 and it's late - I should have written it yesterday :(
So what happened yesterday? I've been hacking away on WolfMUD's record jar
file format[1]. This is the first step to storing configuration data, player
data and 'world' data in easily manageable text files. After two late nights
coding I can actually read and parse my format which looks like:
#
# The Dragon's Breath tavern. L1 to L4
#
Ref: L1
Type: Start
Name: Fireplace
Aliases: TAVERN,FIREPLACE
Exits: E→L3 SE→L4 S→L2
You are in the corner of a common room in the Dragon's Breath tavern.
There is a fire burning away merrily in an ornate fireplace giving comfort
to weary travellers. Shadows flicker around the room, changing light to
darkness and back again. To the south the common room extends and east the
common room leads to the tavern entrance.
%%
Ref: L2
Type: Start
Name: Common Room
Aliases: TAVERN, COMMON
Exits: N→L1 NE→L3 E→L4
Inventory: I1, L5
You are in a small, cosy common room in the Dragon's Breath tavern.
Looking around you see a few chairs and tables for patrons. To the east
there is a bar and to the north you can see a merry fireplace burning
away.
%%
Ref: L3
Type: Start
Name: Tavern entrance
Aliases: TAVERN, ENTRANCE
Exits: E→L5 S→L4 SW→L2 W→L1
You are in the entryway to the Dragon's Breath tavern. To the west you can
see an inviting fireplace, while south an even more inviting bar. Eastward
a door leads out into the street.
%%
Ref: L4
Type: Start
Name: Tavern Bar
Aliases: TAVERN, BAR
Exits: N→L3 NW→L1 W→L2
You standing at the bar. Behind which you can see various sized and shaped
bottles. Looking at the contents you decide an abstract painter would get
lots of colourful inspirations after a long night here.
%%
Ref: I1
Type: Item
Name: A curious brass lattice
Aliases: LATTICE
Weight: 2
This is a finely crafted, intricate lattice of fine brass wires forming a
roughly ball shaped curiosity.
I can load and create the locations, link up the exits and create the lattice
and put it into the right location, then TELNET in and wander around. The code
is currently a right old mess but it is working. As soon as it's cleaned up
and I've got configuration settings working I think I'll have to make a
PROTOTYPE2 release.
One interesting thing to note is that even using reflection you can't create a
variable on the fly from a string representing the type's name. That is given
the string "Basic" you can't instantiate a struct of type Basic. So I
currently have a switch structure creating instances of things based on their
'Type' from the record jar entry - not an interface{} in sight. This does mean
everything is type checked properly and sane ;)
--
Diddymus
[1] Actually it's based on a combination of RFC822 and the Cookie Jar
format as described by Eric Raymond in "The Art of Unix Programming",
chapter 5: http://www.catb.org/esr/writings/taoup/html/ch05s02.html
Up to Main Index Up to Journal for January, 2013