Taeluf Devlog, Feb 20, 2021
It's Saturday! Which is my Friday, so I'm excited for the weekend! :D Not super feeling code today, but it's 10:15am & a good time to get started. My biggest concern today is the lack of motivation & boredom with what I'm working on.
- Write at least one passing test for Phad <- I've written NONE of the internals, so far.
- Finish DocBlocking Liaison's classes. I'd love to get through the components today, too, but I don't think I'll be that fast.
- Refine API Documentation Scraper in Code Scrawl. Not exactly sure what I want to accomplish here today, but it'd be nice to make some progress.
- Create a
Status.mdfile for my
Git Bent& describe the purpose of the branch
- Look up a thing about branch descriptions in git. Check twitter.
- Create a
0.1-candidatebranch of my PHP Testing lib & make some notes
Did a little on Phad. Took a breakfast break from roughly 10:52-11:50.
- Setup my first test (figuring out what I'm testing & how to do it)
- Need an
str_containsassertion, so I updated my testing lib with slightly better architecture & this feature.
- Doing work on internals & how to test
- Took a fairly long break (bathroom, walk, make coffee)
- This project is interesting, but I am REALLY not feeling it today.
Got some basic tests passing
<?php $Blog = (object)[ 'body'=>'# Is police funding a form of welfare?', 'bodyTarget'=>'<h1>Is police funding a form of welfare?</h1>', ]; $view = <<<HTML <section item="Blog"> <div prop="body" filter="commonmark:markdownToHtml"></div> </section> HTML; $compiler = new \Phad\Compiler($view); $output = $compiler->output(); $view = $output['view']; ob_start(); eval('?>'.$view); $viewEvaled = ob_get_clean(); $this->str_contains($viewEvaled, '<section>'); $this->str_contains($viewEvaled, $Blog->bodyTarget);
This inserts an object's properties into html & applies the given filter. This works.
Now I'm trying to add my custom node that should NOT output its tag (just the inner html)
<div> <x-item item="Blog"> <h1 prop="title"></h1> <p prop="description"></p> </x-item> </div>
So I inspect
DOMDocument. Note, I'm using
pHtml, so whatever features I need I can add in
pHtml... which is good, because
DOMDocument is freaking horrible.
pHtml already has custom handling of output, so doing additional pre-processing shouldn't be an issue. So I'll add something like
$node->tagHtmlIsHidden = true, that
pHtml will scan for before calling
saveHTML & do some fancy replacing.
foreach ($domNode->childNodes) is a nightmare because
childNodes is a
foreaching just doesn't work (but i think it does sometimes? Idk). So I added a magic getter for
$domNode->children that uses a
for ($i...) loop to return an array from
Once this was done, it was a sinch to
$xitem->removeChild($child); $xitem->parentNode->insertBefore($child,$xitem); in a loop, then
Another passing test!
That block above (that contains
x-item) is now successfully outputting:
<div> <h1>The test title</h1> <p>The test description</p> </div>
yes... There is extra whitespace. So what.
This was a good day for PHAD (which REALLY needs a new name). I think I worked slowly, but I was pretty focused & got a decent amount done.
I also wanted to work on the docs today, so I'm gonna commit & switch over to that. & use cannabis, because I much prefer writing docs while high.
Alright, nearly an hour of doc writing in & its 6:06pm, so time for me to quit.
I'm glad I didn't stay in line with my goals. I planned only a couple hours work on Phad because its a tough project with lots of decisions to make & after a couple hours, I get decision fatigue & need to switch. But I stayed in a good headspace for it almost all day. After my last walk (about 4:50), I switched to Liaison docs, knowing that's just as important as Phad (if not more so). I'd still really like to work on Code Scrawl, but that needs updates to serve Liaison & Phad... So its not really a priority until I'm needing those features in Liaison & Phad. Mainly, tag & custom display features
It was a good day. I'm happy its my weekend now. I've liked writing devlogs this week. I think it helps keep me focused & on track. Plus it helps me stay accountable to myself, I think. I don't really expect anyone to read them, and that's okay (& maybe a little preferable sometimes).
In case you did read, hope you enjoyed!
Things I thought of today
- I should write a little blog post about the error I got when doing
foreach ($domNode->childNodes). Granted, I didn't search for the error. I usually don't have any look searching up DOMDocument errors. Plus I like looking at the docs & troubleshooting anyway. I feel like I learn more that way... though it does sometimes take longer.
- I need a different code theme on my site. The StackOverflow theme doesn't mesh with my bright green/purple (& I <3 my green/purple)
- Several other things, but I started
Status.mddocuments for the relevant projects & put my thoughts in those.