@Ajshma Это больше проблема с виндой. Если скопировать действие и перенести в другой скрипт - тоже сломается. Я как это у себя исправил это, попробую найти инструкцию
Aurora v1.1.0 - новая версия библиотеки.
-
По многочисленным просьбам трудящихся выкладываю новую версию Авроры. Описание первого релиза библиотеки здесь: https://community.bablosoft.com/topic/6681/библиотека-aurora
Актуальную версию можно скачать вот здесь: https://github.com/Pragmatikc/Aurora/tree/current
Изменения коснулись в первую очередь способа подключения библиотеки. В силу двух причин: необходимости добавления кода библиотеки в проект перед компиляцией и отсутствия необходимости её загрузки в фоне при работе с проектами, её не использующими, сделал отдельно действие для подключения библиотеки.
Теперь чтобы всё заработало, нужно клацнуть первую кнопку "Библиотека Аврора 1.1.0" и добавить библиотеку в проект:

Если вы используете функции библиотеки в OnApplicationStart, там придётся сделать то же самое. Минус будет в том, что это несколько утяжелит сам xml файл проекта, там будет дважды повторяться код библиотеки. Однако не нужно будет никуда лезть при компиллировании.Далее, добавил в библиотеку все функции для обработки json из этого модуля: https://community.bablosoft.com/topic/6192/модуль-парсинга-json
Даже несколько расширил функционал за счёт введения разделителей между несколькими объектами json.
Пример работы в коде:var obj_1 = '{"person": [{"name":"Вася","surname":"Пупкин"}]}' var obj_2 = '{"person1": [{"name":"Вася","surname":"Пупкин"}],"person2": [{"name":"Петя","surname":"Горохов"}]}' var obj_3 = '"person": [{"name":"Вася","surname":"Пупкин"}]' // Неправильный json var obj_4 = '{"person1": [{"name":"Вася","surname":"Пупкин"}]}*{"person2": [{"name":"Петя","surname":"Горохов"}]}' [[CHECK1]] = ajn.check(obj_1) // true [[CHECK2]] = ajn.check(obj_2) // true [[CHECK3]] = ajn.check(obj_3) // false [[COUNT1]] = ajn.count(obj_1, "") // 1 [[COUNT2]] = ajn.count(obj_2, "") // 2 [[KEY1]] = ajn.key(obj_1, "") // ['person'] [[KEY2]] = ajn.key(obj_2, "") // ['person1','person2'] [[KEYS]] = ajn.keys(obj_4, "person1*person2", "*") // [[person1],[person2]] [[PARSE]] = ajn.parse(obj_1, 'person.[name]') // ['Вася'] [[PARSE2]] = ajn.multyparse(obj_4, 'person1.[name]*person2.[name]', '*') // [['Вася'],['Петя']]Результат:

Понятно, что правильнее будет парсить json встроенными функциями js, однако мои функции могут существенно облегчить парсинг множества однотипных json-объектов (да и не однотипных тоже, пути можно задавать отдельно каждому).Так же добавил функции для работы с CSV-файлами, пока только две:
asv.check(resource, string) - проверяет, нужный ли csv файл находится в ресурсе и выдаёт true или false если да и если нет соответственно. Так же выводит в лог информацию:

Можно использовать в OnApplicationStart для проверки файла перед записью, чтобы случайно не записать в другой файл. Для проверки нужно передать в строке или массиве значения, которые должны быть в шапке csv-файла (верхнюю строчку файла), в моём, описанном ниже случае, либо строкуvar string = 'Номер,Цена,Количество,Наименование,Где ёжик?'Либо массив
var string = ['Номер','Цена','Количество','Наименование','Где ёжик?']asv.add(resource, string) - добавляет строку в csv-файл.
Особенности функций объекта asv: в качестве аргумента resource указывается имя ресурса в кавычках либо переменная с именем ресурса. Это должен быть ресурс "из файла", где должен быть указан ваш csv файл.
В качестве аргумента string можно указать переменную, содержащую как строку с данными, так и массив данных. Массив даже предпочтительнее, так как функция сама обрабатывает его и все элементы, не соответствующие типу записи csv приводит к нужному виду.Пример работы:
var block = '776661215' [[TEST]] = asv.check('csv', ['Номер','Цена','Количество','Наименование','Где ёжик?']) // true var string1 = [1,200,3,'Товар первый','Под деревом'] var string2 = [1,600,3,'Товар странный','Под деревом'] var string3 = [1,300,3,'Товар на полке','Под деревом'] var string4 = [1,800,3,'Товар, пролежавший год','Под деревом'] var string5 = [1,1400,3,'Товар, который никто не покупает :-(','Пока таблицу заполнял, в лес убежал!'] asv.add('csv',string1) asv.add('csv',string2) asv.add('csv',string3) asv.add('csv',string4) asv.add('csv',string5)Это только пример, правильнее будет выполнять функцию в цикле, меняя каждый раз переменные. Такой пример запишет в файл:

Далее нужно будет открыть файл любым opensource csv редактором (например, из пакетов open office, libre office), забудьте про excelибо microsoft is shitтак как он некорректно работает с чистым csv.

Настройки должны быть как у меня, насколько помню, это и есть стандартные умолчания формата csv. Как видите, даже Open Office поначалу выдаёт нам неправильную таблицу, однако после открытия перестаёт тупить:

Таким образом передав все нужные ячейки строки csv в массиве, мы легко публикуем данные в файл, не запариваясь о запятых и кавычках.
Думаю, в следующий релиз авроры включу возможность отправлять данные в csv сразу списком, либо каждый элемент - новая строка, либо вообще возможность публикации строк через многомерный массив, где каждый подмассив - строка.Благодарности: @URAABK - за идею публикации на github, @OYASUMI PUNPUN - за его модуль парсинга json, @DRPRIME - за подсказки по оптимизации и замене костылей на нормальные функции, @GAMID - за идею добавить функции для работы с csv.
-
@pragmatik Библиотека огонь. Спасибо, но есть одно замечание). Но это так просто мне лень править, меня устраивает и так. Если ее тянуть с github current-version то не отображается в панели экшенов картинко. Текст ссылки
-
@pragmatik Заметил еще одну забавность. Если использовать что то такое
als.del(list, element_number) //****************** она же als.del = function(array, index){ return array.splice(index,1)то рез все равно надо одевать в стринги. Получается как и с JSON резулт массив. Даже если ее обозвать VAR_ЧТО_ТО в окне переменных норм, все равно в конструкциях на подобии indexOf не отработает без принудительно String() в этом же блоке кода. Но это кмк связанно уже не с библиотекой, а с интерпретатором.
upd/ Только не подумайте что я недоволен. Я наоборот доволен как слон). Этого я просто не встречал в описании, а может невнимательно читал.
И да если ее использовать дальше даже не обрабатывая то нормально. Например если это ссылка и ее использовать в следующем блоке для http запроса. Запрос не в коде. А встроенным. -
Спасибо за библиотеку.
Не подскажите, как добавить символ окончания строки в ячейку?