Однажды я записал основной синтаксический анализатор SQL, который проанализирует операторы CREATE TABLE и разделит особенно отформатированные комментарии. Они были тогда выполнены последующую обработку в ЛАТЕКСНЫЙ источник и представлены к PDF. Это было вдохновлено Javadoc и использовалось для создания документации для Этот продукт . Впоследствии функция словаря данных была встроена в менеджера склада, и измененная версия ЛАТЕКСНОГО генератора использовалась для рендеринга словаря данных от менеджера склада.
На другом проекте я использовал Visio - версия, которая идет с Архитектором Visual Studio Enterprise, передаст инженеру базу данных. SQL, так сгенерированный, имел таблицу и комментарии столбца, представленные в строках комментария, которые были довольно просты для парсинга. Инструмент, который я записал сгенерированным файлам MIF, которые были быть включенными в документ спецификации, созданный с FrameMaker.
, Если у Вас есть инструмент репозитория такой как Powerdesigner, можно поддержать модели данных в нем и получить отчеты о репозитории, которые включают документацию, которую Вы ввели. При необходимости в глубокой интеграции словаря данных с функциональными спецификациями (Довольно полезный для систем хранилища данных, где ETL сложен и включает значительное вычисление полученных значений), можно все еще извлечь метаданные и записать утилиту для генерации чего-то, что интегрирует словарь данных в документ спецификации. Это также позволяет перекрестно ссылаться между объектами словаря данных и другими документами спецификации и поколением индексов, которые покрывают словарные определения данных и связанную документацию, такие как спецификация того, как что-то вычисляется с примерами.
Версия с компактным объектом - для чисел от нуля до 999.
function wordify(n) {
var word = [],
numbers = { 1: 'One', 2: 'Two', 3: 'Three', 4: 'Four', 5: 'Five', 6: 'Six', 7: 'Seven', 8: 'Eight', 9: 'Nine', 10: 'Ten', 11: 'Eleven', 12: 'Twelve', t3: 'Thir', t5: 'Fif', t8: 'Eigh', 20: 'Twenty' },
hundreds = 0 | (n % 1000) / 100,
tens = 0 | (n % 100) / 10,
ones = n % 10,
part;
if (n === 0) return 'Zero';
if (hundreds) word.push(numbers[hundreds] + ' Hundred');
if (tens === 0) {
word.push(numbers[ones]);
} else if (tens === 1) {
word.push(numbers['1' + ones] || (numbers['t' + ones] || numbers[ones]) + 'teen');
} else {
part = numbers[tens + '0'] || (numbers['t' + tens] || numbers[tens]) + 'ty';
word.push(numbers[ones] ? part + '-' + numbers[ones] : part);
}
return word.join(' ');
}
var i,
output = document.getElementById('out');
for (i = 0; i < 1e3; i++) output.innerHTML += wordify(i) + '\n';
<pre id="out"></pre>