2009-05-28 2 views
6

Прогулка по этой строке здесь, я знаю, но ... Как StackOverflow показывает изменения в формате, подобном разным типам.Как показать историю изменений, например Редакции

Я не забочусь о SO per-se, это просто удобный способ описать мое требование. У меня есть история изменений изменений в текстовом поле. Я хотел бы показать изменения так же, как SO показывает изменения истории изменений. Я вспоминаю SO-подкаст, где Джефф обсуждал его, но не может найти его в транскриптах и ​​не знаю, что такое подкаст. IIRC, это не основано на .net, может быть, Python?

Это для потребления конечным пользователем, поэтому все, что похоже на unix-подобный diff, отсутствует. Соблазн показать два блока и текст, старый и новый, и позволить им понять это, но история пересмотра SO настолько приятна.

Thx.

+0

Для чего это стоит, Википедия имеет довольно хороший пользовательский интерфейс истории ревизий. Вы можете попробовать посмотреть в исходном коде MediaWiki. –

ответ

1

Поскольку вы на самом деле не указали язык: я сделал это с помощью пакета PHP PEAR Text_Diff.

+0

Кажется, есть некоторые обещания. Нужно выяснить, как обслуживать это из приложения asp.net. Возможно, php-сервер на задней стороне, с которым я могу получить доступ с серверного кода. –

+0

@WaldenL вы можете сделать мыльную услугу в PHP. В прошлый раз, когда я это делал, вам пришлось вручную создавать WSDL, но somone, наконец, сделал объект мыла, который вы можете наследовать, и все ваши публичные функции будут автоматически открываться в WSDL. –

2

Питон difflib Стандартная библиотека предоставляет такую ​​возможность:

Этот модуль предоставляет классы и функции для сравнения последовательностей. Его можно использовать, например, для сравнения файлов и может создавать разностную информацию в различных форматах, включая HTML, контекст и унифицированные различия. Для сравнения каталогов и файлов см. Также модуль filecmp.

+0

difflib похоже line только за раз отличается. Я ищу встроенное отличие, которое использует SO. Может быть, я могу использовать его. –

+0

difflib может сравнивать любые две последовательности; будь то последовательности строк, символов, слов, предложений или изображений, зависит от вас. Я использовал difflib для сравнения текста на уровне слова, и он хорошо работает для этого. –

-1

Использованы Beyond Compare. Насколько я могу судить, это не родная программа .NET, но вы можете использовать ее как инструмент командной строки.

+0

Я не уверен, что это правильно. Я верю, что это то, что используется на стороне разработки (разные версии исходного кода, сценарии db и т. Д.), А не то, что они используют для отображения версий онлайн. –