Grim Git Feed https://grimui.com A feed of recent commits. en-us Wed, 24 Sep 2025 16:56:37 -0600 Value parsing27e9805b71324a7f0fe6b676884272db5afa2defmason@lakefox.net (Mason Wright)2025-09-24T16:52:27-06:00Author: Mason Wright

Commit: 27e9805b71324a7f0fe6b676884272db5afa2def

]]>
Working on a method for compiling CSSb069ddad16a3806906845a747d32553385ccf6c1mason@lakefox.net (Mason Wright)2025-09-01T13:33:59-06:00Author: Mason Wright

Commit: b069ddad16a3806906845a747d32553385ccf6c1

]]>
Added & nestingca8775193963626ccb0e764d31f73168235c0661mason@lakefox.net (Mason Wright)2025-08-30T17:29:24-06:00Author: Mason Wright

Commit: ca8775193963626ccb0e764d31f73168235c0661

Added & nesting and started get styles A lot of the code for getStyles is commented out, that's going to be next alogn with building the testAtRule

]]>
Added IRC and RSSeaeda5acda0dcee77ed400c20e278697ebe3c4dcmason@lakefox.net (Mason Wright)2025-08-23T15:06:42-06:00Author: Mason Wright

Commit: eaeda5acda0dcee77ed400c20e278697ebe3c4dc

]]>
cleaningf007388b79982b2ea3842dd8676cc876853be242mason@lakefox.net (Mason Wright)2025-08-19T14:33:54-06:00Author: Mason Wright

Commit: f007388b79982b2ea3842dd8676cc876853be242

]]>
Adding support of parsing of at-rules5c7ab985d8fc32ca0a47252da49377f12377d3e0mason@lakefox.net (Mason Wright)2025-08-08T17:36:16-06:00Author: Mason Wright

Commit: 5c7ab985d8fc32ca0a47252da49377f12377d3e0

At rule & sheet type update

]]>
Media query structure set6db9a0fcb7a8414618065ae276b8beac83f516fcmason@lakefox.net (Mason Wright)2025-08-08T17:23:29-06:00Author: Mason Wright

Commit: 6db9a0fcb7a8414618065ae276b8beac83f516fc

Created the data sturcture for the media query TODO: Created parsing for the media query Make the media queries executable within the Window env

]]>
Starting media queries and at-rules1b6596168bd0697fe5615799a5e6e2dbc777bf1cmason@lakefox.net (Mason Wright)2025-08-03T15:34:04-06:00Author: Mason Wright

Commit: 1b6596168bd0697fe5615799a5e6e2dbc777bf1c

]]>
Docs update080f729e1c6cfc322235397ff7f0f058d6b5fd1bmason@lakefox.net (Mason Wright)2025-08-03T15:27:55-06:00Author: Mason Wright

Commit: 080f729e1c6cfc322235397ff7f0f058d6b5fd1b

Removed envoke Removed envoke as the creator has decided to no longer support. Instead I make a templating shell script "template" which can be downloaded and added to you path with: curl https://lakefox.net/build/template.sh Also added all of the media query supports to the supported css selectors file. Just to make this future proof below is the contents of template.sh:      usage() { echo "Usage: $0 [OPTIONS] ... [--stdin] ... " echo "This script populates a template file with content from other files and optionally standard input." echo "" echo "The position of the '--stdin' flags determines which placeholders will be filled." echo "The content from standard input is reused for each '--stdin' flag." echo "" echo "Arguments:" echo " , ... Input files whose content will be used to replace placeholders." echo " Placeholders are named %s (in the order they are provided)." echo " --stdin An optional flag. If present, the content from standard input" echo " will be used to replace the placeholder at its position." echo " The template file containing the placeholders to be replaced." echo "" echo "Options:" echo " -h, --help Show this help message and exit." echo "" echo "Example with multiple stdin placeholders:" echo " curl icanhazip.com | ./template.sh --stdin --stdin --stdin template.txt" echo " (The IP address from curl will be used for all three %s placeholders)" echo "" echo "Example with mixed files and stdin:" echo " echo \"body content\" | ./template.sh header.txt --stdin footer.txt template.txt" exit 0 } if [[ "$1" == "-h" || "$1" == "--help" ]]; then usage fi if [ "$#" -lt 2 ]; then echo "Error: Not enough arguments provided." usage fi template_file="${!#}" content_sources=("${@:1:$(($# - 1))}") if [ ! -f "$template_file" ]; then echo "Error: Template file '$template_file' not found." exit 1 fi read -r -d '' stdin_content printf_args=() for source in "${content_sources[@]}"; do if [[ "$source" == "--stdin" ]]; then # If the source is --stdin, add the content from standard input. # This reuses the same content for every --stdin flag. printf_args+=("$stdin_content") else # If the source is a file, read its content. if [ -f "$source" ]; then printf_args+=("$(cat "$source")") else echo "Warning: File '$source' not found." printf_args+=("") # Add an empty string to maintain placeholder count fi fi done template_content=$(<"$template_file") printf -- "$template_content" "${printf_args[@]}"

]]>
fix nested selector parsing066b887b8538733325cc07cbacfa698d05185490mason@lakefox.net (Mason Wright)2025-07-27T21:57:10-06:00Author: Mason Wright

Commit: 066b887b8538733325cc07cbacfa698d05185490

There were a lot of this wrong with the prevous implementation of the nesting handler. I broke out the logic into a recursive function to handle it. Prevously it wouldn't handle multiple selectors in the nested part like this: div, class { class, div { Also the & logic was wrong now it inserts the parent for the &

]]>
save16a07a463325bba0631eff4c54345502c4430c39mason@lakefox.net (Mason Wright)2025-07-27T13:41:22-06:00Author: Mason Wright

Commit: 16a07a463325bba0631eff4c54345502c4430c39

]]>
Save4bf8aafceb0253987e505d015ad967383f72c51emason@lakefox.net (Mason Wright)2025-07-19T15:52:19-06:00Author: Mason Wright

Commit: 4bf8aafceb0253987e505d015ad967383f72c51e

]]>
StyleList is tested5cf22848ea3b4e97961ad80f45f4a38f7a0a54abmason@lakefox.net (Mason Wright)2025-07-13T18:41:04-06:00Author: Mason Wright

Commit: 5cf22848ea3b4e97961ad80f45f4a38f7a0a54ab

]]>
Started StyleHandler0ac66915186c657ebd3b635167edeacc0448bec6mason@lakefox.net (Mason Wright)2025-07-13T16:22:08-06:00Author: Mason Wright

Commit: 0ac66915186c657ebd3b635167edeacc0448bec6

]]>
Made Attribute class with implisit type casting629756d7d038cfa24e7f72c196ac2b5022faa12cmason@lakefox.net (Mason Wright)2025-07-13T16:21:48-06:00Author: Mason Wright

Commit: 629756d7d038cfa24e7f72c196ac2b5022faa12c

]]>
Done testing parseCSS and parseCSSInline2b08fe91433aaeaab3ad87f3c47a82195e9d49dbmason@lakefox.net (Mason Wright)2025-07-11T14:49:41-06:00Author: Mason Wright

Commit: 2b08fe91433aaeaab3ad87f3c47a82195e9d49db

]]>
Added a CSS Parser and fixed the benchmarks for all parserse13ac692b67c41b78a06058d707f66b524fd3acemason@lakefox.net (Mason Wright)2025-07-11T09:55:02-06:00Author: Mason Wright

Commit: e13ac692b67c41b78a06058d707f66b524fd3ace

]]>
Docs and Testsfc556c26a73a47fe5a718a1cad4eead8c1873174mason@lakefox.net (Mason Wright)2025-07-09T16:29:59-06:00Author: Mason Wright

Commit: fc556c26a73a47fe5a718a1cad4eead8c1873174

]]>
Added has and nth-*6dfb96c72f966734322c80cd77576867f462dc77mason@lakefox.net (Mason Wright)2025-07-09T10:30:07-06:00Author: Mason Wright

Commit: 6dfb96c72f966734322c80cd77576867f462dc77

]]>
Project Structure Changes3482d6efe8f342715f9a6e190ee7e8b2d59ddf7fmason@lakefox.net (Mason Wright)2025-07-09T10:28:56-06:00Author: Mason Wright

Commit: 3482d6efe8f342715f9a6e190ee7e8b2d59ddf7f

]]>
Added 2 cases for has0bff1901284184c86da44aa48971c856d6d4fae3mason@lakefox.net (Mason Wright)2025-07-07T10:53:45-06:00Author: Mason Wright

Commit: 0bff1901284184c86da44aa48971c856d6d4fae3

]]>
Testing hookb966b2a517365074e5c381dbdea05b3221dc0198mason@lakefox.net (Mason Wright)2025-07-06T20:33:11-06:00Author: Mason Wright

Commit: b966b2a517365074e5c381dbdea05b3221dc0198

]]>
Testing hooke840f1eeb0ae26af69e1ae146ea9938e28e9f1afmason@lakefox.net (Mason Wright)2025-07-06T20:30:31-06:00Author: Mason Wright

Commit: e840f1eeb0ae26af69e1ae146ea9938e28e9f1af

]]>
Allowed parseSelectorParts to parse +pe4e05418a640eaed08cd1ec7cd8644eb1dbcca50mason@lakefox.net (Mason Wright)2025-07-06T16:46:32-06:00Author: Mason Wright

Commit: e4e05418a640eaed08cd1ec7cd8644eb1dbcca50

]]>
Performance update on parseSelectorParts and tests4e01ba8ad2c3361fa4be3d896288020948b58b5emason@lakefox.net (Mason Wright)2025-07-06T13:40:21-06:00Author: Mason Wright

Commit: 4e01ba8ad2c3361fa4be3d896288020948b58b5e

]]>
Fixed issue with parsing only pseudo-classesaae562ac1350480e4889aabb35899f776c5b59e9mason@lakefox.net (Mason Wright)2025-07-04T18:13:36-06:00Author: Mason Wright

Commit: aae562ac1350480e4889aabb35899f776c5b59e9

]]>
Random6c3ae0e31eb0893f20e3872117f92cc6b9a942afmason@lakefox.net (Mason Wright)2025-07-03T14:50:33-06:00Author: Mason Wright

Commit: 6c3ae0e31eb0893f20e3872117f92cc6b9a942af

]]>
ClassList350e7d88bb2feb9db00c6e032cc6623f215b7adfmason@lakefox.net (Mason Wright)2025-07-03T14:48:07-06:00Author: Mason Wright

Commit: 350e7d88bb2feb9db00c6e032cc6623f215b7adf

Changed how classlist works, now it uses a stored index of the attribute "class" as the truth data. The classList now will veryify the index everytime a action is taken then if it does match it will recompute. It is not case sensitive, however there is a issue when removing a class it does not reomve the white space. This will be fixed but not today.

]]>
Have a rough testSelector, starting testing95e6c70d23e99ffcf70e5bbe12503496e5d8f232mason@lakefox.net (Mason Wright)2025-06-29T20:21:34-06:00Author: Mason Wright

Commit: 95e6c70d23e99ffcf70e5bbe12503496e5d8f232

]]>
Fixed partSelectorParts matching on spacese188783659b9bc3b9993a647e93ed110e7f41db6mason@lakefox.net (Mason Wright)2025-06-29T16:50:58-06:00Author: Mason Wright

Commit: e188783659b9bc3b9993a647e93ed110e7f41db6

]]>
Reworked parseSelectorParts and tests5e4c38ff3c212cdd9881427ef3f8c2706539a190mason@lakefox.net (Mason Wright)2025-06-29T13:33:00-06:00Author: Mason Wright

Commit: 5e4c38ff3c212cdd9881427ef3f8c2706539a190

Changed how parse selector parts works, I noticed that it was taking longer than I wnated it to so I started with increasing the performance. However I couldn't really cut down that much so I decided that the best option would be to reduce the number of calls. So then I worked ok StyleHandler.add and testSelector worked. When a style is added parseSelectorParts is called and instead of storing the string version of the selector, the parsed one is stored. This will let testSelector have the information already computed. This will change how querySelector works, it will have to call parseSelector parts before running testSelector. Also one thing to note is this should really increase performance of testSelector because the parseSelector is passed once then it won't need parse another selector even when climbing the recursive tree.

]]>
Added tests to parsere50ea9e1356a74af18fdd171337ef9dc931e1f4emason@lakefox.net (Mason Wright)2025-06-24T20:44:14-06:00Author: Mason Wright

Commit: e50ea9e1356a74af18fdd171337ef9dc931e1f4e

]]>
Added direct node matching to testSelector8f2e83556d12aaebe8e8597ea6923804b0eb7a43mason@lakefox.net (Mason Wright)2025-06-24T20:39:35-06:00Author: Mason Wright

Commit: 8f2e83556d12aaebe8e8597ea6923804b0eb7a43

Also moved some things around and changed print to output a std::string instead of logging directly to the console. This is for the test suite

]]>
Added support for embedding tags in script/style/textarea tags1627c585128af263181053ab2cf1a4cdcd14ee21mason@lakefox.net (Mason Wright)2025-06-24T20:37:01-06:00Author: Mason Wright

Commit: 1627c585128af263181053ab2cf1a4cdcd14ee21

]]>
Fixed some of the logic parseSelectorPartsdef3513f75b325464ad88a33c741c4ca80572b77mason@lakefox.net (Mason Wright)2025-06-23T14:42:28-06:00Author: Mason Wright

Commit: def3513f75b325464ad88a33c741c4ca80572b77

I miss understood the logic of parseSelectorParts, the symbol closes the prevous one. So when I changed the logic to add brackets (for later processing) it caused the last class to have brackets

]]>
Updated parseSelectorParts to better handle bracketsa21501590980a905fa9b902897d700a42a08b7f0mason@lakefox.net (Mason Wright)2025-06-23T14:25:00-06:00Author: Mason Wright

Commit: a21501590980a905fa9b902897d700a42a08b7f0

parseSelectorParts would stop on a ':' if found, but urls contain ':' so I updated the logic to see if the char is inside of brackets before exiting

]]>
Working on testSelector56074a6bfe4498d092f3a227297c8c20e2bb962cmason@lakefox.net (Mason Wright)2025-06-22T19:42:58-06:00Author: Mason Wright

Commit: 56074a6bfe4498d092f3a227297c8c20e2bb962c

Simplified the testSelector process quite a bit. Instead of having for loops it just has a simple if chain. Just need to add the current element logic.

]]>
Made changes to the makefiled9cf1485b7ae0614130494f0e73237921323b9a1mason@lakefox.net (Mason Wright)2025-06-20T19:53:51-06:00Author: Mason Wright

Commit: d9cf1485b7ae0614130494f0e73237921323b9a1

]]>
Made a makefile80f04b134ae32ad8a9d526007b33dd02f6600f05mason@lakefox.net (Mason Wright)2025-06-20T19:09:22-06:00Author: Mason Wright

Commit: 80f04b134ae32ad8a9d526007b33dd02f6600f05

]]>
Base parts added23d6c65f9368d3c622a55a3068a6b2f1efa0c8d4mason@lakefox.net (Mason Wright)2025-06-19T20:40:16-06:00Author: Mason Wright

Commit: 23d6c65f9368d3c622a55a3068a6b2f1efa0c8d4

]]>
Moved things around and made .h files09c195df02536b6a796bd648fce9669397b96109mason@lakefox.net (Mason Wright)2025-06-18T16:42:10-06:00Author: Mason Wright

Commit: 09c195df02536b6a796bd648fce9669397b96109

]]>
Parser supports everything, may add some more grim specific stuff laterf2b5c8202fbc904e2ed78260e3fdbd55164799d2mason@lakefox.net (Mason Wright)2025-06-18T16:02:43-06:00Author: Mason Wright

Commit: f2b5c8202fbc904e2ed78260e3fdbd55164799d2

]]>
Off to a better start on the parser4bfba076120f389994fc46a98e8b7a2622314400mason@lakefox.net (Mason Wright)2025-06-16T20:44:42-06:00Author: Mason Wright

Commit: 4bfba076120f389994fc46a98e8b7a2622314400

]]>
About to rework the parsere36ac5417e10ee9b9f94f340e1ccf28afc5705eamason@lakefox.net (Mason Wright)2025-06-16T17:56:46-06:00Author: Mason Wright

Commit: e36ac5417e10ee9b9f94f340e1ccf28afc5705ea

]]>
Works for basic documents, does support: comments, self closing elementsd00dc89a86dd7e2fcfd4618bc3a1c8cfba9e3c3dmason@lakefox.net (Mason Wright)2025-06-15T19:21:43-06:00Author: Mason Wright

Commit: d00dc89a86dd7e2fcfd4618bc3a1c8cfba9e3c3d

]]>
Creates elements, figuring out how to implement attributesd9eef16adaf292f3748db5fb5aa98463de10d712mason@lakefox.net (Mason Wright)2025-06-15T16:07:44-06:00Author: Mason Wright

Commit: d9eef16adaf292f3748db5fb5aa98463de10d712

]]>
Parser started, can parse attributes but not closing tags18ff2ec1bfc1cf9fcd17c1acb05c3b41f8f0ed83mason@lakefox.net (Mason Wright)2025-06-15T11:50:36-06:00Author: Mason Wright

Commit: 18ff2ec1bfc1cf9fcd17c1acb05c3b41f8f0ed83

]]>
Init9e7fd2980d723437ea621b78d395fa72ca3f4922mason@lakefox.net (Mason Wright)2025-06-14T13:40:40-06:00Author: Mason Wright

Commit: 9e7fd2980d723437ea621b78d395fa72ca3f4922

]]>