Re[2]: В защиту циклов
От: MAMOHT  
Дата: 16.03.17 14:48
Оценка: 76 (2) +1
Здравствуйте, IT, Вы писали:
IT>Как насчёт циклов?

В прошлом году делали систему для СИКН(система измерения качества нефти).
Там очень нехилая система отчетности. Данные отчетов хранились в БД в json-строках (не мы так решили, так "исторически сложилось")
И мы ее делали на WPF.

В WPF есть такая штука, называется FlowDocument — тот же XAML, но для разметки документов. Проблема в том, что она декларативная и не гибкая.
К тому же, в нашем случае, форма отчетов и исходных данных постоянно менялись и надо было менять их чуть ли не на лету.

Так вот, нам пришлось строить препроцессор XAML чтобы впихнуть туда циклы и парсер jsona. В итоге он разворачивал все это в нативный XAML для дальнейшей печати.

Примеры использования:

<Paragraph Text="<!--{d.f}-->" /> //этот кусок формировал параграф, куда вставлял из jsonа значение узла d.f

А если надо было нарисовать список параграфов, то синтаксис был такой:
<!--arr{ //arr — это путь к массиву объектов в json
<Paragraph Text="<!--{Name}-->" /> //Name — это поле в объекте
}->

Paragraph дан для примера. В основном в цикле строились таблицы.

Потом туда добавилась простенькая логика, макросы и прочее. В итоге получился сплошной костыль. Но работал.

Позже я преобразовал это в лиспо-подобный язык, где можно было наращивать функционал из коробки.
И все это транслировалось в тот-же XAML.
  Пример
http://i.imgur.com/xhv9zXi.png
  А вот и цикл
http://i.imgur.com/ksxTpi4.png

P.S. Написал исключительно ради справедливости. Отчеты — штука специфическая. Но циклы все-таки иногда нужны, даже в разметке.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.