Fossil SCM

Add the 'open' attribute to the list of allowed HTML attributes in markdown. This is to address [https://pikchr.org/home/forumpost/997861ea481833fb|pikchr forum post 997861ea48183], but (A) whether it _should_ be addressed is debatable and (B) it leaves is with only 1-2 bit slots for further attributes. This change was more invasive than desired because the OPEN attribute had to be inserted into the middle of a long list of sequential bitmasks.

stephan 2025-06-08 22:50 trunk
Commit 64eb534c0902c01f4ec8fef523fb316a8905ed9f2736d40ff1d3e68bb70f3fc9
1 file changed +33 -30
+33 -30
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -80,10 +80,11 @@
8080
ATTR_HREF,
8181
ATTR_HSPACE,
8282
ATTR_ID,
8383
ATTR_LINKS,
8484
ATTR_NAME,
85
+ ATTR_OPEN,
8586
ATTR_ROWSPAN,
8687
ATTR_SIZE,
8788
ATTR_SRC,
8889
ATTR_START,
8990
ATTR_STYLE,
@@ -95,40 +96,41 @@
9596
ATTR_VSPACE,
9697
ATTR_WIDTH
9798
};
9899
99100
enum amsk_t {
100
- AMSK_ALIGN = 0x00000001,
101
- AMSK_ALT = 0x00000002,
102
- AMSK_BGCOLOR = 0x00000004,
103
- AMSK_BORDER = 0x00000008,
104
- AMSK_CELLPADDING = 0x00000010,
105
- AMSK_CELLSPACING = 0x00000020,
106
- AMSK_CLASS = 0x00000040,
107
- AMSK_CLEAR = 0x00000080,
108
- AMSK_COLOR = 0x00000100,
109
- AMSK_COLSPAN = 0x00000200,
110
- AMSK_COMPACT = 0x00000400,
111
- AMSK_FACE = 0x00000800,
112
- AMSK_HEIGHT = 0x00001000,
113
- AMSK_HREF = 0x00002000,
114
- AMSK_HSPACE = 0x00004000,
115
- AMSK_ID = 0x00008000,
116
- AMSK_LINKS = 0x00010000,
117
- AMSK_NAME = 0x00020000,
118
- AMSK_ROWSPAN = 0x00040000,
119
- AMSK_SIZE = 0x00080000,
120
- AMSK_SRC = 0x00100000,
121
- AMSK_START = 0x00200000,
122
- AMSK_STYLE = 0x00400000,
123
- AMSK_TARGET = 0x00800000,
124
- AMSK_TITLE = 0x01000000,
125
- AMSK_TYPE = 0x02000000,
126
- AMSK_VALIGN = 0x04000000,
127
- AMSK_VALUE = 0x08000000,
128
- AMSK_VSPACE = 0x10000000,
129
- AMSK_WIDTH = 0x20000000
101
+ AMSK_ALIGN = 1 << 0,
102
+ AMSK_ALT = 1 << 1,
103
+ AMSK_BGCOLOR = 1 << 2,
104
+ AMSK_BORDER = 1 << 3,
105
+ AMSK_CELLPADDING = 1 << 4,
106
+ AMSK_CELLSPACING = 1 << 5,
107
+ AMSK_CLASS = 1 << 6,
108
+ AMSK_CLEAR = 1 << 7,
109
+ AMSK_COLOR = 1 << 8,
110
+ AMSK_COLSPAN = 1 << 9,
111
+ AMSK_COMPACT = 1 << 10,
112
+ AMSK_FACE = 1 << 11,
113
+ AMSK_HEIGHT = 1 << 12,
114
+ AMSK_HREF = 1 << 13,
115
+ AMSK_HSPACE = 1 << 14,
116
+ AMSK_ID = 1 << 15,
117
+ AMSK_LINKS = 1 << 16,
118
+ AMSK_NAME = 1 << 17,
119
+ AMSK_OPEN = 1 << 18,
120
+ AMSK_ROWSPAN = 1 << 19,
121
+ AMSK_SIZE = 1 << 20,
122
+ AMSK_SRC = 1 << 21,
123
+ AMSK_START = 1 << 22,
124
+ AMSK_STYLE = 1 << 23,
125
+ AMSK_TARGET = 1 << 24,
126
+ AMSK_TITLE = 1 << 25,
127
+ AMSK_TYPE = 1 << 26,
128
+ AMSK_VALIGN = 1 << 27,
129
+ AMSK_VALUE = 1 << 28,
130
+ AMSK_VSPACE = 1 << 29,
131
+ AMSK_WIDTH = 1 << 30
130132
};
131133
132134
static const struct AllowedAttribute {
133135
const char *zName;
134136
unsigned int iMask;
@@ -153,10 +155,11 @@
153155
{ "href", AMSK_HREF },
154156
{ "hspace", AMSK_HSPACE },
155157
{ "id", AMSK_ID },
156158
{ "links", AMSK_LINKS },
157159
{ "name", AMSK_NAME },
160
+ { "open", AMSK_OPEN },
158161
{ "rowspan", AMSK_ROWSPAN },
159162
{ "size", AMSK_SIZE },
160163
{ "src", AMSK_SRC },
161164
{ "start", AMSK_START },
162165
{ "style", AMSK_STYLE },
163166
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -80,10 +80,11 @@
80 ATTR_HREF,
81 ATTR_HSPACE,
82 ATTR_ID,
83 ATTR_LINKS,
84 ATTR_NAME,
 
85 ATTR_ROWSPAN,
86 ATTR_SIZE,
87 ATTR_SRC,
88 ATTR_START,
89 ATTR_STYLE,
@@ -95,40 +96,41 @@
95 ATTR_VSPACE,
96 ATTR_WIDTH
97 };
98
99 enum amsk_t {
100 AMSK_ALIGN = 0x00000001,
101 AMSK_ALT = 0x00000002,
102 AMSK_BGCOLOR = 0x00000004,
103 AMSK_BORDER = 0x00000008,
104 AMSK_CELLPADDING = 0x00000010,
105 AMSK_CELLSPACING = 0x00000020,
106 AMSK_CLASS = 0x00000040,
107 AMSK_CLEAR = 0x00000080,
108 AMSK_COLOR = 0x00000100,
109 AMSK_COLSPAN = 0x00000200,
110 AMSK_COMPACT = 0x00000400,
111 AMSK_FACE = 0x00000800,
112 AMSK_HEIGHT = 0x00001000,
113 AMSK_HREF = 0x00002000,
114 AMSK_HSPACE = 0x00004000,
115 AMSK_ID = 0x00008000,
116 AMSK_LINKS = 0x00010000,
117 AMSK_NAME = 0x00020000,
118 AMSK_ROWSPAN = 0x00040000,
119 AMSK_SIZE = 0x00080000,
120 AMSK_SRC = 0x00100000,
121 AMSK_START = 0x00200000,
122 AMSK_STYLE = 0x00400000,
123 AMSK_TARGET = 0x00800000,
124 AMSK_TITLE = 0x01000000,
125 AMSK_TYPE = 0x02000000,
126 AMSK_VALIGN = 0x04000000,
127 AMSK_VALUE = 0x08000000,
128 AMSK_VSPACE = 0x10000000,
129 AMSK_WIDTH = 0x20000000
 
130 };
131
132 static const struct AllowedAttribute {
133 const char *zName;
134 unsigned int iMask;
@@ -153,10 +155,11 @@
153 { "href", AMSK_HREF },
154 { "hspace", AMSK_HSPACE },
155 { "id", AMSK_ID },
156 { "links", AMSK_LINKS },
157 { "name", AMSK_NAME },
 
158 { "rowspan", AMSK_ROWSPAN },
159 { "size", AMSK_SIZE },
160 { "src", AMSK_SRC },
161 { "start", AMSK_START },
162 { "style", AMSK_STYLE },
163
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -80,10 +80,11 @@
80 ATTR_HREF,
81 ATTR_HSPACE,
82 ATTR_ID,
83 ATTR_LINKS,
84 ATTR_NAME,
85 ATTR_OPEN,
86 ATTR_ROWSPAN,
87 ATTR_SIZE,
88 ATTR_SRC,
89 ATTR_START,
90 ATTR_STYLE,
@@ -95,40 +96,41 @@
96 ATTR_VSPACE,
97 ATTR_WIDTH
98 };
99
100 enum amsk_t {
101 AMSK_ALIGN = 1 << 0,
102 AMSK_ALT = 1 << 1,
103 AMSK_BGCOLOR = 1 << 2,
104 AMSK_BORDER = 1 << 3,
105 AMSK_CELLPADDING = 1 << 4,
106 AMSK_CELLSPACING = 1 << 5,
107 AMSK_CLASS = 1 << 6,
108 AMSK_CLEAR = 1 << 7,
109 AMSK_COLOR = 1 << 8,
110 AMSK_COLSPAN = 1 << 9,
111 AMSK_COMPACT = 1 << 10,
112 AMSK_FACE = 1 << 11,
113 AMSK_HEIGHT = 1 << 12,
114 AMSK_HREF = 1 << 13,
115 AMSK_HSPACE = 1 << 14,
116 AMSK_ID = 1 << 15,
117 AMSK_LINKS = 1 << 16,
118 AMSK_NAME = 1 << 17,
119 AMSK_OPEN = 1 << 18,
120 AMSK_ROWSPAN = 1 << 19,
121 AMSK_SIZE = 1 << 20,
122 AMSK_SRC = 1 << 21,
123 AMSK_START = 1 << 22,
124 AMSK_STYLE = 1 << 23,
125 AMSK_TARGET = 1 << 24,
126 AMSK_TITLE = 1 << 25,
127 AMSK_TYPE = 1 << 26,
128 AMSK_VALIGN = 1 << 27,
129 AMSK_VALUE = 1 << 28,
130 AMSK_VSPACE = 1 << 29,
131 AMSK_WIDTH = 1 << 30
132 };
133
134 static const struct AllowedAttribute {
135 const char *zName;
136 unsigned int iMask;
@@ -153,10 +155,11 @@
155 { "href", AMSK_HREF },
156 { "hspace", AMSK_HSPACE },
157 { "id", AMSK_ID },
158 { "links", AMSK_LINKS },
159 { "name", AMSK_NAME },
160 { "open", AMSK_OPEN },
161 { "rowspan", AMSK_ROWSPAN },
162 { "size", AMSK_SIZE },
163 { "src", AMSK_SRC },
164 { "start", AMSK_START },
165 { "style", AMSK_STYLE },
166

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button