Played with Kaylee. Sun came out, and I walked on my feet and heard with my ears. I ate the bits, the bits stayed down, and I work. I function like I'm a girl. I hate it because I know it'll go away. The sun goes dark and chaos has come again. Bits. Fluids. What am I?!

River ,'War Stories'


Buffistas Building a Better Board  

Do you have problems, concerns or recommendations about the technical side of the Phoenix? Air them here. Compliments also welcome.

To-do list


Rebecca Lizard - Nov 19, 2002 9:38:17 pm PST #1657 of 10000
You sip / say it's your crazy / straw say it's you're crazy / as you bicycle your soul / with beauty in your basket

You are all so goddam cool.


John H - Nov 19, 2002 9:46:50 pm PST #1658 of 10000

When are you going to learn PHP, Rebecca, and be like all the cool kids? t /peergrouppressure

OK, I've hit a snag.

I used Rob's model, which is:

each time you find an open tag, push it into the array. Each time you find a closing tag, search your array from the end going backwards until you find a matching open. Delete the matching open from the array.
At the end, walk the array backwards and emit one closing tag for each opening tag still in the array.

which works, but it works too well.

I've got two "for" loops:

for(all of our closing tags){
  for(all of our opening tags, in reverse order){
    if (closing tag matches opening tag){
      delete the opening tag;
    }
  }
}

so what happens when we're checking a close-font tag against a list which has two or more opening tags in it? It kills them both because we're iterating through the list.

What I need is to do this:

for(all of our closing tags){
  for(all of our opening tags, in reverse order){
    if (closing tag matches opening tag){
      delete the opening tag;
      next, but not in this loop, in the outer loop;
    }
  }
}

or, as usual, I'm missing something obvious and you're all laughing at me.

Can I do a "next in outer loop" in PHP? Or have I got a fundamentally silly structure?


§ ita § - Nov 19, 2002 9:48:01 pm PST #1659 of 10000
Well not canonically, no, but this is transformative fiction.

break should pop you out one loop.


John H - Nov 19, 2002 9:55:54 pm PST #1660 of 10000

Aha, ita, you rock.

Do the dance of break.

Or not, because ... breakdancing.

[Edit: not only may I do a break, break in PHP has an optional number, so I can break out of the loop I'm in or any number of enclosing loops.]


Rob - Nov 19, 2002 10:18:14 pm PST #1661 of 10000

I had imagined searching and removing the tags from the open list immediately after finding a close tag, as opposed to collecting all the opens and closes and doing it after. I don't think it makes a difference, except it might be slightly more efficient doing it immediately, since in most cases the list of open tags will never get very long.

Break with a number scares the hell out of me.


John H - Nov 19, 2002 10:21:23 pm PST #1662 of 10000

I had imagined searching and removing the tags from the open list immediately after finding a close tag, as opposed to collecting all the opens and closes and doing it after.

That's in the list of "Things I Know How To Do In Perl, But Not In PHP" I'm afraid.

I'm using a regex function to grab all the openers and put them in an array, and the same function to grab all the closers, but I don't see a way to do "while(still finding tags){code}" in PHP.


John H - Nov 19, 2002 10:46:01 pm PST #1663 of 10000

OK have a look at [link] and see what you think.


Rob - Nov 19, 2002 10:49:05 pm PST #1664 of 10000

Looks great. Only thing I see is the tag comparison needs to be case-insensitive.


John H - Nov 19, 2002 10:56:01 pm PST #1665 of 10000

the tag comparison needs to be case-insensitive

Ahem. Adding a couple of lowercasing functions...


§ ita § - Nov 20, 2002 11:38:49 am PST #1666 of 10000
Well not canonically, no, but this is transformative fiction.

Hokay.

Know what we need, as more people dive into the coding pool? CVS¹ or something like. It was bad enough managing versions when it was just me, but as the holdup with me rolling out Jon's changes attests, n is larger than one, and it's going to get messy.

Can anyone run a CVS server?

¹ No, not the pharmacy chain.