@@ -983,27 +983,48 @@
983 983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
984 984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
985 985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
986 986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This is a helper function for search_stext(). Writing into pOut
987 987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the search text obtained from pIn according to zMimetype.
988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The title of the document is the first line of text. All subsequent
990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** lines are the body. If the document has no title, the first line
991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** is blank.
988 992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
989 993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void get_stext_by_mimetype(
990 994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob *pIn,
991 995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zMimetype,
992 996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob *pOut
993 997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Blob html, title;
998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob html, title, tail;
995 999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_init(&html, 0, 0);
996 1000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_init(&title, 0, 0);
997 1001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zMimetype==0 ) zMimetype = "text/plain";
998 1002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fossil_strcmp(zMimetype,"text/x-fossil-wiki")==0 ){
999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wiki_convert(pIn, &html, 0);
1003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob tail;
1004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_init(&tail, 0, 0);
1005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( wiki_find_title(pIn, &title, &tail) ){
1006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut, "%s\n", blob_str(&title));
1007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_convert(&tail, &html, 0);
1008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&tail);
1009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pOut, "\n", 1);
1011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wiki_convert(pIn, &html, 0);
1012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1000 1013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
html_to_plaintext(blob_str(&html), pOut);
1001 1014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( fossil_strcmp(zMimetype,"text/x-markdown")==0 ){
1002 1015 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
markdown_to_html(pIn, &title, &html);
1016 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( blob_size(&title) ){
1017 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut, "%s\n", blob_str(&title));
1018 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1019 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(pOut, "\n", 1);
1020 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1003 1021 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
html_to_plaintext(blob_str(&html), pOut);
1004 1022 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( fossil_strcmp(zMimetype,"text/html")==0 ){
1023 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( doc_is_embedded_html(pIn, &title) ){
1024 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(pOut, "%s\n", blob_str(&title));
1025 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1005 1026 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
html_to_plaintext(blob_str(pIn), pOut);
1006 1027 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1007 1028 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pOut = *pIn;
1008 1029 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_init(pIn, 0, 0);
1009 1030 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -1054,11 +1075,11 @@
1054 1075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
1055 1076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_init(pOut, 0, 0);
1056 1077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( cType ){
1057 1078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'd': { /* Documents */
1058 1079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob doc;
1059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- content_get(rid, &doc);
1080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ content_get(rid, &doc);
1060 1081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_to_utf8_no_bom(&doc, 0);
1061 1082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
get_stext_by_mimetype(&doc, mimetype_from_name(zName), pOut);
1062 1083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&doc);
1063 1084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
1064 1085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -1073,10 +1094,11 @@
1073 1094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
manifest_destroy(pWiki);
1074 1095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
1075 1096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1076 1097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 'c': { /* Check-in Comments */
1077 1098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static Stmt q;
1099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int isPlainText = -1;
1078 1100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_static_prepare(&q,
1079 1101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"SELECT coalesce(ecomment,comment)"
1080 1102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" ||' (user: '||coalesce(euser,user,'?')"
1081 1103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" ||', tags: '||"
1082 1104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" (SELECT group_concat(substr(tag.tagname,5),',')"
@@ -1083,14 +1105,25 @@
1083 1105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" FROM tag, tagxref"
1084 1106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" WHERE tagname GLOB 'sym-*' AND tag.tagid=tagxref.tagid"
1085 1107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" AND tagxref.rid=event.objid AND tagxref.tagtype>0)"
1086 1108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" ||')'"
1087 1109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" FROM event WHERE objid=:x AND type='ci'");
1110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( isPlainText<0 ){
1111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ isPlainText = db_get_boolean("timeline-plaintext",0);
1112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1088 1113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_bind_int(&q, ":x", rid);
1089 1114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db_step(&q)==SQLITE_ROW ){
1090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_column_blob(&q, 0, pOut);
1091 1115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_append(pOut, "\n", 1);
1116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( isPlainText ){
1117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_column_blob(&q, 0, pOut);
1118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob x;
1120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_init(&x,0,0);
1121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_column_blob(&q, 0, &x);
1122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ get_stext_by_mimetype(&x, "text/x-fossil-wiki", pOut);
1123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&x);
1124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1092 1125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1093 1126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_reset(&q);
1094 1127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
1095 1128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1096 1129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case 't': { /* Tickets */
@@ -1131,10 +1164,30 @@
1131 1164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.argc!=5 ) usage("TYPE RID NAME");
1132 1165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
search_stext(g.argv[2][0], atoi(g.argv[3]), g.argv[4], &out);
1133 1166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_print("%s\n",blob_str(&out));
1134 1167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&out);
1135 1168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** COMMAND: test-convert-stext
1172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Usage: fossil test-convert-stext FILE MIMETYPE
1174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Read the content of FILE and convert it to stext according to MIMETYPE.
1176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Send the result to standard output.
1177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void test_convert_stext(void){
1179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob in, out;
1180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_find_and_open_repository(0,0);
1181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( g.argc!=4 ) usage("FILENAME MIMETYPE");
1182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_read_from_file(&in, g.argv[2]);
1183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_init(&out, 0, 0);
1184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ get_stext_by_mimetype(&in, g.argv[3], &out);
1185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("%s\n",blob_str(&out));
1186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&in);
1187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&out);
1188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1136 1189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1137 1190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* The schema for the full-text index
1138 1191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1139 1192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const char zFtsSchema[] =
1140 1193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ -- One entry for each possible search result
1141 1194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!