Этот вопрос выглядит глупым, но я не нашел прямого решения.Elm: Как довольно печатать модель в браузере?
Предполагая, что у меня есть модель, которая напоминает это: - по крайней мере, эта большая.
initModel =
{ selectedCategory = "Vacantion"
, context = "root/Work"
, abstractSyntaxTree =
[ { categoryName = "Work"
, categoryContent =
[]
}
, { categoryName = "Vacation"
, categoryContent =
[ { folderName = "Hawaii"
, folderContent =
FolderContent
([ { folderName = "Booking"
, folderContent = FolderContent ([], [])
}
]
, [ "flightTicket.jpg" ]
)
}
]
}
]
}
Вопрос: Как я могу отобразить его в браузере, так что он хорошо выглядит? - Ничего особенного - просто чтобы посмотреть, что происходит, как быстрый отладчик ..
Что я пытался до сих пор:
view =
div []
[ pre [style [("width", "300") ] ] [ text (toString model)]
]
Прекрасно работает на небольших моделях, но на этом я получаю эта длинная -Single линия - отформатированный JSON, как структура:
Я думаю, что это проблема: предварительно Расширение ttify i, установленное в Google Chrome, не знает, как бороться со строками, которые не содержат \n
. Чтобы проверить это, я вручную добавил \n
- и эта строка была разделена на вторую строку, как и ожидалось.
Выходная форма text (toSting model)
- это строка, которая не имеет в нем нет \n
- так , поэтому все отображается на одной строке в браузере - независимо от лимита 300 рх по ширине.
Разделение строки - путем добавления \n
самостоятельно - работает, кроме как я не знаю, где именно добавить \n
. Чтобы сделать его динамичным, для этого требуется полноразмерный синтаксический анализатор для модели. Способ узнать, где начинается выражение, где следующая совпадающая скобка ... и т. Д. Я недостаточно хорош, чтобы построить этот синтаксический анализатор. Я чувствую, что я слишком усложняю этот материал. Должно быть лучшим решением.
Как вы это делаете?
спасибо, человек! Вау! Из этого вы можете сделать пакет :). В слабине никто не знал, как это сделать, и я предполагаю, что другие могли бы также выиграть. У меня еще вопрос: что именно означает yo: '' Elm не позволяет вам перечислить элементы в записи . "? У вас не может быть что-то вроде Object.keys из javascript? – AIon
Рад помочь :) Я не очень хорошо разбираюсь в создании пакетов, но буду изучать его. – wintvelt
Что касается вашего вопроса: ваша интуиция верна. У Elm нет 'Object.keys'.Я предполагаю, что это связано с безопасностью типа: каждый элемент объекта может быть любого типа, и Elm должен знать, какой тип вы используете. Что-то вроде JavaScript 'myObject [someString]' динамических типов, это нарушит эту гарантию. Если каждый элемент имеет тот же тип, вы также можете использовать 'Dict'. – wintvelt