LINUX.ORG.RU

Однострочный конфиг по типу json'a

 ,


0

1

А вот хочу я, допустим, в командной строке ядра одному кастомному параметру передать однострочную структурированную простыню, которую потом в юзерспейсе буду парсить на Сишечке.

Хочется что-то типа json'а, но без двойных кавычек. Желательно, чтобы кавычек и скобок вообще поменьше было. И чтобы можно было в одну строку всё написать. И ещё чтобы парсер на Си был без внешних зависимостей.

Ну например:

{ foo: [ bar1, 0.0 ], ololo: { boom: [ 1, 2, qwerty ] } }

Есть такое?

Ответ на: комментарий от Rastafarra

С кучей скобочек который? Наверное, тогда нет.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Очень похоже на правду. А ещё хотелось бы, чтобы оно было в виде двух файлов — хедера и сишного, и собиралось с musl'ями ☺.

post-factum ★★★★★
() автор топика

CSON (CoffeeScript object notation). Вот эта программа валидна на CoffeeScript:

a = { foo: [ "bar1", 0.0 ], ololo: { boom: [ 1, 2, "qwerty" ] } }
console.log a.ololo.boom[2]
rupert ★★★★★
()
Ответ на: комментарий от DonkeyHot

/me, наверное, плохо посмотрел спеки ямля. Если он это умеет, то просто замечательно.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от post-factum

Есть для всяких js/пыхтонов, гошлангов, скимов, но вот для плоско-си не видел. Может и есть.

nihirash ★★★
()
Ответ на: комментарий от post-factum

Там парсеры и лексеры уже в сгенерированном виде, так что это просто несколько сишных файлов. Если надо линковать в много мест, оборачиваешь в статическую библиотеку, и линкуешь её.

Или есть какие-то другие причины, по которым нужно именно 1+1 файл?

И ещё — у библиотеки есть небольшой минус. У неё ABI менялся, поэтому могут быть сюрпризы, если нужно уметь собираться и работать с дистрибутивными версиями. Где-то после Ubuntu 12.04 смена была. Кажется, ещё где-то по дороге убрали требования точек с запятой. И парсинг чисел с плавающей точкой/запятой зависит от локали.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Не, статическая либа ОК, и на ABI пофигу.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от post-factum

да нет. как есть качнула. там сорцы для сишки и плюсов. я собрала либы, собрались обе, но я юзаю только сишную. никаких дополнений при сборке я не делала, я даже проверила: git status без изменений в конфигах или сорцах.

я его линкую просто статически.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)

YAML. Собственно только он из общих форматов для конфигов и подходит. Можно писать как хочешь - с кавычками и без, в одну строку или несколько.

slovazap ★★★★★
()
Ответ на: комментарий от Iron_Bug

ОК. Импортнул, оставил минимум + свой мейкфайл, и, вроде, в статическую либу собирается. Посмотрим, как работать будет в таком виде.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от slovazap

На сях ничего вменяемого быть не может.

Аааааа, понятно.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от post-factum

а вот это я рекомендую закопать. сталкивалась с этим гнилым ямлом по работе. это чудовищно неудобный формат. нечитабельный, уродливый и мерзкий во всех смыслах. и да, у него нет ни одного редактора вменяемого. в общем, эту каку руками трогать я лично не рекомендую.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

Мне тоже не нравится, потому и спрашиваю, что ещё есть ☺.

post-factum ★★★★★
() автор топика

Работает libconfig. Вопрос закрыт, всем спасибо.

post-factum ★★★★★
() автор топика

Закодировать содержимое упакованной сишной структуры, допустим в little-endian, в base64

annulen ★★★★★
()
Ответ на: комментарий от annulen

Такое себе решение, читабельности нет никакой для человека.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от Iron_Bug

это чудовищно неудобный формат. нечитабельный, уродливый и мерзкий во всех смыслах

4.2 по всем пунктам

anonymous
()
Ответ на: комментарий от anonymous

я это говорю из опыта использования. в реальной работе. конечно, не я это уродливое поделие выбирала. но заверяю, что это так и есть. и не надо его никуда тащить. его надо закопать.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

а я это говорю из моей опыта использования :-) в реальной работе :-)

за счёт легкого для глаза синтаксиса и минимальной необходимости что-либо экранировать yaml легко писать, читать, копипастить туда-сюда и так далее.

anonymous
()
Ответ на: комментарий от anonymous

дадада. теперь напиши на этом говне конфиг строк так в 20-30 тыщ. со ссылками на другие 10-15 других таких же конфигов (да, там есть извращение со ссылками). и потом поглядим, как ты запоёшь.

студенческие проектики, где файлик в полтора байта, не считаются.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

Если тебе нужны конфиги на 20-30 тысяч строк, ты явно что-то делаешь не так :-)

студенческие проектики, где файлик в полтора байта, не считаются.

для придания солидности надо обязательно добавить этот аргумент, ахаха

anonymous
()
Ответ на: комментарий от anonymous

нет. это к 4.2 про «легко писать, читать, копипастить туда-сюда». не надо вводить людей в заблуждение.

добавим сюда отсутствие каких-либо вменяемых опенсорцных редакторов этого УГ - и можно закапывать.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 2)
Ответ на: комментарий от anonymous

при этом они в несколько раз более легко читабельны и имеют адекватные редакторы в ассортименте.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Deleted

нет. это реальные конфиги, с которыми мне приходилось работать. внезапно, на таких конфигах сразу видно, что ямл нифига не читабелен и не приспособлен к использованию в больших проектах.

выше анонимус привёл пример. и это ещё небольшой файл с примитивной структурой небольшой вложенности и кучей текста. и он не напичкан ссылками на определения в других таких же монстрозных файлах.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.