Fossil SCM
Moved pikchr_process() nonce so that it also applies for error output. Added missing 'error' CSS class to the error-report PRE tag. Added mention of Ctrl-Enter in pikchshow intro text.
Commit
11e7960e51efc3d47edf37c51ca5f0950e5b5cc377552edfa662de90b680c89e
Parent
79499fc4742376f…
2 files changed
+2
-1
+11
-11
+2
-1
| --- src/markdown_html.c | ||
| +++ src/markdown_html.c | ||
| @@ -344,11 +344,12 @@ | ||
| 344 | 344 | const char *zSrc, int nSrc, /* The Pikchr source text */ |
| 345 | 345 | const char *zArg, int nArg /* Addition arguments */ |
| 346 | 346 | ){ |
| 347 | 347 | int pikFlags = PIKCHR_PROCESS_NONCE |
| 348 | 348 | | PIKCHR_PROCESS_DIV |
| 349 | - | PIKCHR_PROCESS_SRC; | |
| 349 | + | PIKCHR_PROCESS_SRC | |
| 350 | + | PIKCHR_PROCESS_ERR_PRE; | |
| 350 | 351 | Blob bSrc = empty_blob; |
| 351 | 352 | |
| 352 | 353 | while( nArg>0 ){ |
| 353 | 354 | int i; |
| 354 | 355 | for(i=0; i<nArg && !fossil_isspace(zArg[i]); i++){} |
| 355 | 356 |
| --- src/markdown_html.c | |
| +++ src/markdown_html.c | |
| @@ -344,11 +344,12 @@ | |
| 344 | const char *zSrc, int nSrc, /* The Pikchr source text */ |
| 345 | const char *zArg, int nArg /* Addition arguments */ |
| 346 | ){ |
| 347 | int pikFlags = PIKCHR_PROCESS_NONCE |
| 348 | | PIKCHR_PROCESS_DIV |
| 349 | | PIKCHR_PROCESS_SRC; |
| 350 | Blob bSrc = empty_blob; |
| 351 | |
| 352 | while( nArg>0 ){ |
| 353 | int i; |
| 354 | for(i=0; i<nArg && !fossil_isspace(zArg[i]); i++){} |
| 355 |
| --- src/markdown_html.c | |
| +++ src/markdown_html.c | |
| @@ -344,11 +344,12 @@ | |
| 344 | const char *zSrc, int nSrc, /* The Pikchr source text */ |
| 345 | const char *zArg, int nArg /* Addition arguments */ |
| 346 | ){ |
| 347 | int pikFlags = PIKCHR_PROCESS_NONCE |
| 348 | | PIKCHR_PROCESS_DIV |
| 349 | | PIKCHR_PROCESS_SRC |
| 350 | | PIKCHR_PROCESS_ERR_PRE; |
| 351 | Blob bSrc = empty_blob; |
| 352 | |
| 353 | while( nArg>0 ){ |
| 354 | int i; |
| 355 | for(i=0; i<nArg && !fossil_isspace(zArg[i]); i++){} |
| 356 |
+11
-11
| --- src/pikchrshow.c | ||
| +++ src/pikchrshow.c | ||
| @@ -115,10 +115,12 @@ | ||
| 115 | 115 | */ |
| 116 | 116 | int pikchr_process(const char * zIn, int pikFlags, int thFlags, |
| 117 | 117 | Blob * pOut){ |
| 118 | 118 | Blob bIn = empty_blob; |
| 119 | 119 | int isErr = 0; |
| 120 | + const char *zNonce = (PIKCHR_PROCESS_NONCE & pikFlags) | |
| 121 | + ? safe_html_nonce(1) : 0; | |
| 120 | 122 | |
| 121 | 123 | if(!(PIKCHR_PROCESS_DIV & pikFlags) |
| 122 | 124 | /* If any DIV_xxx flags are set, set DIV */ |
| 123 | 125 | && (PIKCHR_PROCESS_DIV_INDENT |
| 124 | 126 | | PIKCHR_PROCESS_DIV_CENTER |
| @@ -133,10 +135,13 @@ | ||
| 133 | 135 | if(!(PIKCHR_PROCESS_TH1 & pikFlags) |
| 134 | 136 | /* If any TH1_xxx flags are set, set TH1 */ |
| 135 | 137 | && (PIKCHR_PROCESS_TH1_NOSVG & pikFlags || thFlags!=0)){ |
| 136 | 138 | pikFlags |= PIKCHR_PROCESS_TH1; |
| 137 | 139 | } |
| 140 | + if(zNonce){ | |
| 141 | + blob_appendf(pOut, "%s\n", zNonce); | |
| 142 | + } | |
| 138 | 143 | if(PIKCHR_PROCESS_TH1 & pikFlags){ |
| 139 | 144 | Blob out = empty_blob; |
| 140 | 145 | isErr = Th_RenderToBlob(zIn, &out, thFlags) |
| 141 | 146 | ? 1 : 0; |
| 142 | 147 | if(isErr){ |
| @@ -153,21 +158,15 @@ | ||
| 153 | 158 | blob_append(pOut, blob_str(&bIn), blob_size(&bIn)); |
| 154 | 159 | }else{ |
| 155 | 160 | int w = 0, h = 0; |
| 156 | 161 | const char * zContent = blob_str(&bIn); |
| 157 | 162 | char *zOut; |
| 158 | - | |
| 159 | 163 | zOut = pikchr(zContent, "pikchr", 0, &w, &h); |
| 160 | 164 | if( w>0 && h>0 ){ |
| 161 | 165 | const char * zClassToggle = ""; |
| 162 | 166 | const char * zClassSource = ""; |
| 163 | 167 | const char * zWrapperClass = ""; |
| 164 | - const char *zNonce = (PIKCHR_PROCESS_NONCE & pikFlags) | |
| 165 | - ? safe_html_nonce(1) : 0; | |
| 166 | - if(zNonce){ | |
| 167 | - blob_appendf(pOut, "%s\n", zNonce); | |
| 168 | - } | |
| 169 | 168 | if(PIKCHR_PROCESS_DIV & pikFlags){ |
| 170 | 169 | if(PIKCHR_PROCESS_DIV_CENTER & pikFlags){ |
| 171 | 170 | zWrapperClass = " center"; |
| 172 | 171 | }else if(PIKCHR_PROCESS_DIV_INDENT & pikFlags){ |
| 173 | 172 | zWrapperClass = " indent"; |
| @@ -207,26 +206,26 @@ | ||
| 207 | 206 | blob_str(&bIn)); |
| 208 | 207 | } |
| 209 | 208 | if(PIKCHR_PROCESS_DIV & pikFlags){ |
| 210 | 209 | blob_append(pOut, "</div>\n", 7); |
| 211 | 210 | } |
| 212 | - if(zNonce){ | |
| 213 | - blob_append(pOut, zNonce, -1); | |
| 214 | - } | |
| 215 | 211 | }else{ |
| 216 | 212 | isErr = 2; |
| 217 | 213 | if(PIKCHR_PROCESS_ERR_PRE & pikFlags){ |
| 218 | - blob_append(pOut, "<pre>\n", 6); | |
| 214 | + blob_append(pOut, "<pre class='error'>\n", 20); | |
| 219 | 215 | } |
| 220 | 216 | blob_append(pOut, zOut, -1); |
| 221 | 217 | if(PIKCHR_PROCESS_ERR_PRE & pikFlags){ |
| 222 | 218 | blob_append(pOut, "\n</pre>\n", 8); |
| 223 | 219 | } |
| 224 | 220 | } |
| 225 | 221 | fossil_free(zOut); |
| 226 | 222 | } |
| 227 | 223 | } |
| 224 | + if(zNonce){ | |
| 225 | + blob_appendf(pOut, "%s\n", zNonce); | |
| 226 | + } | |
| 228 | 227 | blob_reset(&bIn); |
| 229 | 228 | return isErr; |
| 230 | 229 | } |
| 231 | 230 | |
| 232 | 231 | /* |
| @@ -332,11 +331,12 @@ | ||
| 332 | 331 | CX("body.pikchrshow .v-align-middle{" |
| 333 | 332 | "vertical-align: middle" |
| 334 | 333 | "}\n"); |
| 335 | 334 | CX(".dragover {border: 3px dotted rgba(0,255,0,0.6)}\n"); |
| 336 | 335 | } CX("</style>"); |
| 337 | - CX("<div>Input pikchr code and tap Preview to render it:</div>"); | |
| 336 | + CX("<div>Input pikchr code and tap Preview or Ctrl-Enter) to render " | |
| 337 | + "it:</div>"); | |
| 338 | 338 | CX("<div id='sbs-wrapper'>"); { |
| 339 | 339 | CX("<div id='pikchrshow-form'>"); { |
| 340 | 340 | CX("<textarea id='content' name='content' rows='15'>" |
| 341 | 341 | "%s</textarea>",zContent/*safe-for-%s*/); |
| 342 | 342 | CX("<div id='pikchrshow-controls'>"); { |
| 343 | 343 |
| --- src/pikchrshow.c | |
| +++ src/pikchrshow.c | |
| @@ -115,10 +115,12 @@ | |
| 115 | */ |
| 116 | int pikchr_process(const char * zIn, int pikFlags, int thFlags, |
| 117 | Blob * pOut){ |
| 118 | Blob bIn = empty_blob; |
| 119 | int isErr = 0; |
| 120 | |
| 121 | if(!(PIKCHR_PROCESS_DIV & pikFlags) |
| 122 | /* If any DIV_xxx flags are set, set DIV */ |
| 123 | && (PIKCHR_PROCESS_DIV_INDENT |
| 124 | | PIKCHR_PROCESS_DIV_CENTER |
| @@ -133,10 +135,13 @@ | |
| 133 | if(!(PIKCHR_PROCESS_TH1 & pikFlags) |
| 134 | /* If any TH1_xxx flags are set, set TH1 */ |
| 135 | && (PIKCHR_PROCESS_TH1_NOSVG & pikFlags || thFlags!=0)){ |
| 136 | pikFlags |= PIKCHR_PROCESS_TH1; |
| 137 | } |
| 138 | if(PIKCHR_PROCESS_TH1 & pikFlags){ |
| 139 | Blob out = empty_blob; |
| 140 | isErr = Th_RenderToBlob(zIn, &out, thFlags) |
| 141 | ? 1 : 0; |
| 142 | if(isErr){ |
| @@ -153,21 +158,15 @@ | |
| 153 | blob_append(pOut, blob_str(&bIn), blob_size(&bIn)); |
| 154 | }else{ |
| 155 | int w = 0, h = 0; |
| 156 | const char * zContent = blob_str(&bIn); |
| 157 | char *zOut; |
| 158 | |
| 159 | zOut = pikchr(zContent, "pikchr", 0, &w, &h); |
| 160 | if( w>0 && h>0 ){ |
| 161 | const char * zClassToggle = ""; |
| 162 | const char * zClassSource = ""; |
| 163 | const char * zWrapperClass = ""; |
| 164 | const char *zNonce = (PIKCHR_PROCESS_NONCE & pikFlags) |
| 165 | ? safe_html_nonce(1) : 0; |
| 166 | if(zNonce){ |
| 167 | blob_appendf(pOut, "%s\n", zNonce); |
| 168 | } |
| 169 | if(PIKCHR_PROCESS_DIV & pikFlags){ |
| 170 | if(PIKCHR_PROCESS_DIV_CENTER & pikFlags){ |
| 171 | zWrapperClass = " center"; |
| 172 | }else if(PIKCHR_PROCESS_DIV_INDENT & pikFlags){ |
| 173 | zWrapperClass = " indent"; |
| @@ -207,26 +206,26 @@ | |
| 207 | blob_str(&bIn)); |
| 208 | } |
| 209 | if(PIKCHR_PROCESS_DIV & pikFlags){ |
| 210 | blob_append(pOut, "</div>\n", 7); |
| 211 | } |
| 212 | if(zNonce){ |
| 213 | blob_append(pOut, zNonce, -1); |
| 214 | } |
| 215 | }else{ |
| 216 | isErr = 2; |
| 217 | if(PIKCHR_PROCESS_ERR_PRE & pikFlags){ |
| 218 | blob_append(pOut, "<pre>\n", 6); |
| 219 | } |
| 220 | blob_append(pOut, zOut, -1); |
| 221 | if(PIKCHR_PROCESS_ERR_PRE & pikFlags){ |
| 222 | blob_append(pOut, "\n</pre>\n", 8); |
| 223 | } |
| 224 | } |
| 225 | fossil_free(zOut); |
| 226 | } |
| 227 | } |
| 228 | blob_reset(&bIn); |
| 229 | return isErr; |
| 230 | } |
| 231 | |
| 232 | /* |
| @@ -332,11 +331,12 @@ | |
| 332 | CX("body.pikchrshow .v-align-middle{" |
| 333 | "vertical-align: middle" |
| 334 | "}\n"); |
| 335 | CX(".dragover {border: 3px dotted rgba(0,255,0,0.6)}\n"); |
| 336 | } CX("</style>"); |
| 337 | CX("<div>Input pikchr code and tap Preview to render it:</div>"); |
| 338 | CX("<div id='sbs-wrapper'>"); { |
| 339 | CX("<div id='pikchrshow-form'>"); { |
| 340 | CX("<textarea id='content' name='content' rows='15'>" |
| 341 | "%s</textarea>",zContent/*safe-for-%s*/); |
| 342 | CX("<div id='pikchrshow-controls'>"); { |
| 343 |
| --- src/pikchrshow.c | |
| +++ src/pikchrshow.c | |
| @@ -115,10 +115,12 @@ | |
| 115 | */ |
| 116 | int pikchr_process(const char * zIn, int pikFlags, int thFlags, |
| 117 | Blob * pOut){ |
| 118 | Blob bIn = empty_blob; |
| 119 | int isErr = 0; |
| 120 | const char *zNonce = (PIKCHR_PROCESS_NONCE & pikFlags) |
| 121 | ? safe_html_nonce(1) : 0; |
| 122 | |
| 123 | if(!(PIKCHR_PROCESS_DIV & pikFlags) |
| 124 | /* If any DIV_xxx flags are set, set DIV */ |
| 125 | && (PIKCHR_PROCESS_DIV_INDENT |
| 126 | | PIKCHR_PROCESS_DIV_CENTER |
| @@ -133,10 +135,13 @@ | |
| 135 | if(!(PIKCHR_PROCESS_TH1 & pikFlags) |
| 136 | /* If any TH1_xxx flags are set, set TH1 */ |
| 137 | && (PIKCHR_PROCESS_TH1_NOSVG & pikFlags || thFlags!=0)){ |
| 138 | pikFlags |= PIKCHR_PROCESS_TH1; |
| 139 | } |
| 140 | if(zNonce){ |
| 141 | blob_appendf(pOut, "%s\n", zNonce); |
| 142 | } |
| 143 | if(PIKCHR_PROCESS_TH1 & pikFlags){ |
| 144 | Blob out = empty_blob; |
| 145 | isErr = Th_RenderToBlob(zIn, &out, thFlags) |
| 146 | ? 1 : 0; |
| 147 | if(isErr){ |
| @@ -153,21 +158,15 @@ | |
| 158 | blob_append(pOut, blob_str(&bIn), blob_size(&bIn)); |
| 159 | }else{ |
| 160 | int w = 0, h = 0; |
| 161 | const char * zContent = blob_str(&bIn); |
| 162 | char *zOut; |
| 163 | zOut = pikchr(zContent, "pikchr", 0, &w, &h); |
| 164 | if( w>0 && h>0 ){ |
| 165 | const char * zClassToggle = ""; |
| 166 | const char * zClassSource = ""; |
| 167 | const char * zWrapperClass = ""; |
| 168 | if(PIKCHR_PROCESS_DIV & pikFlags){ |
| 169 | if(PIKCHR_PROCESS_DIV_CENTER & pikFlags){ |
| 170 | zWrapperClass = " center"; |
| 171 | }else if(PIKCHR_PROCESS_DIV_INDENT & pikFlags){ |
| 172 | zWrapperClass = " indent"; |
| @@ -207,26 +206,26 @@ | |
| 206 | blob_str(&bIn)); |
| 207 | } |
| 208 | if(PIKCHR_PROCESS_DIV & pikFlags){ |
| 209 | blob_append(pOut, "</div>\n", 7); |
| 210 | } |
| 211 | }else{ |
| 212 | isErr = 2; |
| 213 | if(PIKCHR_PROCESS_ERR_PRE & pikFlags){ |
| 214 | blob_append(pOut, "<pre class='error'>\n", 20); |
| 215 | } |
| 216 | blob_append(pOut, zOut, -1); |
| 217 | if(PIKCHR_PROCESS_ERR_PRE & pikFlags){ |
| 218 | blob_append(pOut, "\n</pre>\n", 8); |
| 219 | } |
| 220 | } |
| 221 | fossil_free(zOut); |
| 222 | } |
| 223 | } |
| 224 | if(zNonce){ |
| 225 | blob_appendf(pOut, "%s\n", zNonce); |
| 226 | } |
| 227 | blob_reset(&bIn); |
| 228 | return isErr; |
| 229 | } |
| 230 | |
| 231 | /* |
| @@ -332,11 +331,12 @@ | |
| 331 | CX("body.pikchrshow .v-align-middle{" |
| 332 | "vertical-align: middle" |
| 333 | "}\n"); |
| 334 | CX(".dragover {border: 3px dotted rgba(0,255,0,0.6)}\n"); |
| 335 | } CX("</style>"); |
| 336 | CX("<div>Input pikchr code and tap Preview or Ctrl-Enter) to render " |
| 337 | "it:</div>"); |
| 338 | CX("<div id='sbs-wrapper'>"); { |
| 339 | CX("<div id='pikchrshow-form'>"); { |
| 340 | CX("<textarea id='content' name='content' rows='15'>" |
| 341 | "%s</textarea>",zContent/*safe-for-%s*/); |
| 342 | CX("<div id='pikchrshow-controls'>"); { |
| 343 |