|
88 | 88 | function request = updateRequestFromVersion1(request, code) |
89 | 89 | request.sectionBoundaries = []; |
90 | 90 | request.startLine = 1; |
91 | | -request.endLine = numel(splitlines(code)); |
| 91 | +request.endLine = builtin('count', code, newline) + 1; |
92 | 92 |
|
93 | 93 | % Allow figures to be used across Notebook cells. Cleanup needs to be |
94 | 94 | % done explicitly when the kernel shutsdown. |
|
175 | 175 |
|
176 | 176 | function result = processVariableString(output) |
177 | 177 | indentation = ''; |
178 | | -useSingleLineDisplay = ~contains(output.value, sprintf(newline)); |
| 178 | +useSingleLineDisplay = ~(builtin('contains', output.value, newline)); |
179 | 179 | if useSingleLineDisplay |
180 | 180 | if ~isempty(output.header) |
181 | 181 | indentation = sprintf(newline); |
|
242 | 242 | result.content.text = text; |
243 | 243 |
|
244 | 244 | % Helper function for processing figure outputs. |
245 | | -% base64Data will be "data:image/png;base64,<base64_value>" |
| 245 | +% base64Data will be 'data:image/png;base64,<base64_value>' |
246 | 246 | function result = processFigure(base64Data) |
| 247 | +pattern = "data:(?<mimetype>.*);base64,(?<value>.*)"; |
| 248 | +result = builtin('regexp', base64Data, pattern, 'names'); |
| 249 | +assert(builtin('startsWith', result.mimetype, 'image'), 'Error in processFigure. ''mimetype'' is not an image'); |
| 250 | +assert(~isempty(result.value), 'Error in processFigure. ''value'' is empty'); |
| 251 | +result.mimetype = {result.mimetype}; |
| 252 | +result.value = {result.value}; |
247 | 253 | result.type = 'execute_result'; |
248 | | -base64DataSplit = split(base64Data,";"); |
249 | | -result.mimetype = {extractAfter(base64DataSplit{1},5)}; |
250 | | -result.value = {extractAfter(base64DataSplit{2},7)}; |
251 | 254 |
|
252 | 255 | % Helper function to notify browser page load finished |
253 | 256 | function pageLoadCallback(~,~,idler) |
|
0 commit comments