Как сделать так, чтобы Matlab помог правильно отображать веб-ссылки для странных URL-адресов? - PullRequest
5 голосов
/ 14 декабря 2010

Обычно, если я включаю в файл foo.m комментарий в виде:

% See also: <a href="http://en.wikipedia.org/etc">link name</a>

ссылка появляется в окне просмотра справки, т.е. в Matlab, я выдаю

>> help foo

и я получаю что-то вроде

См. Также: имя ссылки

пока все хорошо.Однако есть некоторые веб-адреса с забавными символами, например:

% See also: <a href="http://en.wikipedia.org/wiki/Kernel_(statistics)">http://en.wikipedia.org/wiki/Kernel_(statistics)</a>

Matlab неправильно отображает это в браузере справки.Когда я просматриваю справку, она выглядит так:

См. Также: statistics ) "> http://en.wikipedia.org/wiki/Kernel_( статистика )

, где ссылка на локальный каталог с именем« статистика ». Я пробовал все виды экранирования и обратной косой черты, но не могузаставить браузер справки работать должным образом.

1 Ответ

4 голосов
/ 14 декабря 2010

Url-escape забавных персонажей с кодами персонажей.

function foo
%FOO Function with funny help links
%
% Link to <a href="http://en.wikipedia.org/wiki/Kernel_%28statistics%29">some page</a>.

Функция Matlab urlencode () покажет вам, какие коды использовать. Но сохраняйте двоеточие и косые черты как есть.

>> disp(urlencode('Kernel_(statistics)'))
Kernel_%28statistics%29

Вот функция, которая будет заключать в кавычки элементы URL-пути, сохраняя части, которые необходимо оставить без изменений.

function escapedUrl = escape_url_for_helptext(url)

ixColon = find(url == ':', 1);
if isempty(ixColon)
    [proto,rest] = deal('', url);
else
    [proto,rest] = deal(url(1:ixColon), url(ixColon+1:end));
end

parts = regexp(rest, '/', 'split');
encodedParts = cellfun(@urlencode, parts, 'UniformOutput', false);
escapedUrl = [proto join(encodedParts, '/')];

function out = join(strs, glue)

strs(1:end-1) = strcat(strs(1:end-1), {glue});
out = cat(2, strs{:});

Чтобы использовать его, просто введите весь URL.

>> escape_url_for_helptext('http://en.wikipedia.org/wiki/Kernel_(statistics)')
ans =
http://en.wikipedia.org/wiki/Kernel_%28statistics%29
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...