Мы используем Trac и оба из двух плагинов Мерзавца - GitPlugin, а также GitWebPlugin. Посмотрите, у нас на самом деле есть три репозитория (длинная история), и Trac все еще ограничен единым репозиторием. Так, я записал свой собственный плагин, который определяет синтаксис Wiki (Макросы на самом деле) для ссылки на репозиторий, ответвление или фиксацию, и они связываются со ссылками GitWebPlugin. Я также смог записать некоторые сценарии рычага мерзавца так, чтобы мы могли сослаться, закрыть или изменить билеты Trac в сообщениях о фиксации - это - измененная версия рычага фиксации SVN, который идет с Trac.
основная проблема с GitPlugin состоит в том, что это медленно из-за отсутствия "libgit" библиотеки. Это не плохо для проектов маленьких среднего размера, но крупные проекты являются болью. При реальной необходимости в быстром веб-интерфейсе, необходимо действительно проверить Cgit. Cgit делает свой собственный libgit, таким образом, он связывается с конкретной версией Мерзавца.
истина , однако, то, что веб-представления Мерзавца не настолько полезны кроме тех случаев, когда Вы хотите отправить кому-то ссылку (как в электронном письме или IRC). Поскольку с Мерзавцем у Вас есть весь репозиторий в каждом клоне, Вы - очень более обеспеченные инструменты использования как gitk
или даже простой git log
. Запросы и захват возможностей действительно удивительны и (очевидно) быстры. Я нахожу, что Cgit и GitWeb действительно только полезны для отправления ссылок к фиксациям, и это довольно редко.
This is much easier than you're making it. The text node will not have the literal string " "
in it, it'll have have the corresponding character with code 160.
function replaceNbsps(str) {
var re = new RegExp(String.fromCharCode(160), "g");
return str.replace(re, " ");
}
textNode.nodeValue = replaceNbsps(textNode.nodeValue);
UPDATE
Even easier:
textNode.nodeValue = textNode.nodeValue.replace(/\u00a0/g, " ");
If you only need to replace
then you can use a far simpler regex:
var textWithNBSpaceReplaced = originalText.replace(/ /g, ' ');
Also, there is a typo in your div example, it says &nnbsp;
instead of
.
I think when you define a function with "var foo = function() {...};
", the function is only defined after that line. In other words, try this:
var replaceHtmlEntites = (function() {
var translate_re = /&(nbsp|amp|quot|lt|gt);/g;
var translate = {
"nbsp": " ",
"amp" : "&",
"quot": "\"",
"lt" : "<",
"gt" : ">"
};
return function(s) {
return ( s.replace(translate_re, function(match, entity) {
return translate[entity];
}) );
}
})();
var cleanText = text.replace(/^\xa0*([^\xa0]*)\xa0*$/g,"");
cleanText = replaceHtmlEntities(text);
Edit: Also, only use "var
" the first time you declare a variable (you're using it twice on the cleanText
variable).
Edit 2: The problem is the spelling of the function name. You have "var replaceHtmlEntites =". It should be "var replaceHtmlEntities ="
That first line is pretty messed up. It only needs to be:
var cleanText = text.replace(/\xA0/g,' ');
That should be all you need.
Я использовал это, и это сработало:
var cleanText = text.replace(/&nbsp;/g,"");