|
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