home readme diff tree note docs

0commit def3513f75b325464ad88a33c741c4ca80572b77
1Author: Mason Wright <mason@lakefox.net>
2Date:   Mon Jun 23 14:42:28 2025 -0600
3
4    Fixed some of the logic parseSelectorParts
5
6diff --git a/src/grim.cc b/src/grim.cc
7index 301e78f..7f8677d 100755
8--- a/src/grim.cc
9+++ b/src/grim.cc
10@@ -244,7 +244,7 @@ class StyleHandler {
11 						if (w == ':' && !inbracket) {
12 							break;
13 						}
14-						// We don't care if the thing we are splitting is a id or class we just 
15+						// We don't care if the thing we are splitting is a id or class we just
16 						// need them split up so we can use them as map keys
17 
18 						if (w == '#' && !inbracket) {
19@@ -259,15 +259,19 @@ class StyleHandler {
20 								part = "";
21 							}
22 						} else if (w == '[' || w == ']') {
23+							if (part != "" && inbracket) {
24+								parts.push_back('['+part+']');
25+								part = "";
26+							} else if (!inbracket) {
27+								parts.push_back(part);
28+								part = "";
29+							}
30+
31 							if (w=='[') {
32 								inbracket = true;
33 							} else if (w == ']'){
34 								inbracket = false;
35 							}
36-							if (part != "") {
37-								parts.push_back(part);
38-								part = "";
39-							}
40 							continue;
41 						}
42 
43@@ -285,6 +289,10 @@ class StyleHandler {
44 			for (size_t p1 = 0; p1 < parts.size(); p1++) {
45 				bool matches = false;
46 
47+				if (parts[p1] == "") {
48+					continue;
49+				}
50+
51 				for (size_t p2 = p1+1; p2 < parts.size(); p2++) {
52 					if (parts[p1] == parts[p2]) {
53 						matches = true;
54@@ -317,7 +325,7 @@ class StyleHandler {
55 							v = "=\""+av+"\"";
56 
57 					}
58-					parts.push_back(k+v);
59+					parts.push_back('['+k+v+']');
60 				}
61 			}
62