Skip to content

Instantly share code, notes, and snippets.

@tdewin
Last active July 18, 2025 10:52
Show Gist options
  • Save tdewin/8133efb2806e3e2c5bb188d0d95d2602 to your computer and use it in GitHub Desktop.
Save tdewin/8133efb2806e3e2c5bb188d0d95d2602 to your computer and use it in GitHub Desktop.
Patch for pikchr adding "data-orig-name" and "data-orig" to box and text for easier post parsing; patch pikchr.y ../data-orig.patch
--- /pikchr/pikchr.y
+++ pikchr.y
@@ -433,6 +433,7 @@
/* Forward declarations */
static void pik_append(Pik*, const char*,int);
+static void pik_append_data_orig(Pik*,PObj*);
static void pik_append_text(Pik*,const char*,int,int);
static void pik_append_num(Pik*,const char*,PNum);
static void pik_append_point(Pik*,const char*,PPoint*);
@@ -1221,7 +1222,9 @@
pik_append(p,"Z\" ",-1);
}
pik_append_style(p,pObj,3);
- pik_append(p,"\" />\n", -1);
+ pik_append(p,"\"", -1);
+ pik_append_data_orig(p,pObj);
+ pik_append(p," />\n", -1);
}
pik_append_txt(p, pObj, 0);
}
@@ -1284,7 +1287,9 @@
pik_append_y(p," cy=\"", pt.y, "\"");
pik_append_dis(p," r=\"", r, "\" ");
pik_append_style(p,pObj,3);
- pik_append(p,"\" />\n", -1);
+ pik_append(p,"\"", -1);
+ pik_append_data_orig(p,pObj);
+ pik_append(p," />\n", -1);
}
pik_append_txt(p, pObj, 0);
}
@@ -1319,7 +1324,9 @@
pik_append_arc(p,w2,rad,pt.x+w2,pt.y+h2-rad);
pik_append(p,"\" ",-1);
pik_append_style(p,pObj,3);
- pik_append(p,"\" />\n", -1);
+ pik_append(p,"\"", -1);
+ pik_append_data_orig(p,pObj);
+ pik_append(p," />\n", -1);
}
pik_append_txt(p, pObj, 0);
}
@@ -1381,7 +1388,9 @@
pik_append_y(p," cy=\"", pt.y, "\"");
pik_append_dis(p," r=\"", r, "\"");
pik_append_style(p,pObj,2);
- pik_append(p,"\" />\n", -1);
+ pik_append(p,"\"", -1);
+ pik_append_data_orig(p,pObj);
+ pik_append(p," />\n", -1);
}
pik_append_txt(p, pObj, 0);
}
@@ -1437,7 +1446,9 @@
pik_append_xy(p,"L", pt.x,pt.y+h2);
pik_append(p,"Z\" ",-1);
pik_append_style(p,pObj,3);
- pik_append(p,"\" />\n", -1);
+ pik_append(p,"\"", -1);
+ pik_append_data_orig(p,pObj);
+ pik_append(p," />\n", -1);
}
pik_append_txt(p, pObj, 0);
}
@@ -1495,7 +1506,9 @@
pik_append_dis(p," rx=\"", w/2.0, "\"");
pik_append_dis(p," ry=\"", h/2.0, "\" ");
pik_append_style(p,pObj,3);
- pik_append(p,"\" />\n", -1);
+ pik_append(p,"\"", -1);
+ pik_append_data_orig(p,pObj);
+ pik_append(p," />\n", -1);
}
pik_append_txt(p, pObj, 0);
}
@@ -1560,7 +1573,9 @@
pik_append_xy(p,"L", pt.x+w2, pt.y+(h2-rad));
pik_append(p,"\" ",-1);
pik_append_style(p,pObj,0);
- pik_append(p,"\" />\n",-1);
+ pik_append(p,"\"", -1);
+ pik_append_data_orig(p,pObj);
+ pik_append(p," />\n",-1);
}
pik_append_txt(p, pObj, 0);
}
@@ -1607,7 +1622,9 @@
}
pik_append(p,"\" ",-1);
pik_append_style(p,pObj,pObj->bClose?3:0);
- pik_append(p,"\" />\n", -1);
+ pik_append(p,"\"", -1);
+ pik_append_data_orig(p,pObj);
+ pik_append(p," />\n", -1);
}
pik_append_txt(p, pObj, 0);
}
@@ -1707,7 +1724,9 @@
}
pik_append(p,"\" ",-1);
pik_append_style(p,pObj,pObj->bClose?3:0);
- pik_append(p,"\" />\n", -1);
+ pik_append(p,"\"", -1);
+ pik_append_data_orig(p,pObj);
+ pik_append(p," />\n", -1);
}
static void splineRender(Pik *p, PObj *pObj){
if( pObj->sw>0.0 ){
@@ -2032,6 +2051,17 @@
p->zOut[p->nOut] = 0;
}
+static void pik_append_data_orig(Pik* p,PObj *pObj) {
+ if (pObj->zName != NULL) {
+ pik_append(p," data-orig-name=\"",-1);
+ pik_append(p,pObj->zName,-1);
+ pik_append(p,"\"",-1);
+ }
+ pik_append(p," data-orig=\"", -1);
+ pik_append(p,pObj->type->zName,-1);
+ pik_append(p,"\"", -1);
+}
+
/*
** Given a string and its length, returns true if the string begins
** with a construct which syntactically matches an HTML entity escape
@@ -2567,7 +2597,9 @@
pik_append(p,")\"",2);
}
}
- pik_append(p," dominant-baseline=\"central\">",-1);
+ pik_append(p," dominant-baseline=\"central\"",-1);
+ pik_append_data_orig(p,pObj);
+ pik_append(p," >",-1);
if( t->n>=2 && t->z[0]=='"' ){
z = t->z+1;
nz = t->n-2;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment