@bestplace/ljsp v0.1.58
LJSP
Lua rocks requirements
- lua-zlib (+ zlib-dev)
- lbase64
Точка сбора Lua JavaScript Python
Репозиторий для кросплатформенных функций.
check(obj, path, default)
Аналог _.get для словарей с правами
Возвращает '*' для всех дочерних путей, если всё поддерево разрешено через '*'
При этом список [42, "spam"] интерпретируется как {42: '*', "spam": '*'}
Пример:
check({1: 'foo'}, 'bar.foo') == None
check({1: '*'}, '1.all.you.need.is.love') == '*'
check({1: 2}, '1.foo.bar.3', 42) == 42
check({1: 'foo'}, '.') == {1: 'foo'}
:param obj: dict или '*' прав
:param path: точечный путь в словаре
:param default: значение, которое будет возвращено, если прав для заданной путем ветви нет
:return: значение, по заданному пути
fillna(value, fill = '-')
Возвращает fill, если value - неопределенное значение (1), иначе value.
chunk(value, size = 3, separator = ' ')
Возвращает строку с числом, где разряды разбиты по 3, начиная от первого, в обе стороны. Например: 1234567.8987 -> 1 234 567.898 7. Ожидается, что value либо число, либо строка (2). В противном случае возвращается неопределенное значение (3).
nbsp(value)
Возвращает строку, где все пробелы заменены HTML-символом неразрывного пробела ' '. value должен быть строкой, иначе возвращается неопределенное значение (3).
trunc(value, length = 255)
Возвращает часть строки, ограниченной length первых символов. value должен быть либо числом, либо строкой (2). В противном случае возвращается неопределенное значение (3).
JavaScript: round(value, precision)
Python 3: round_(value, precision)
Возвращает округленное значение с точностью precision знаков после запятой. value должен быть числом (4), в противном случае возвращается исходный value. Если точность не указана, она определяется в зависимости от
значения value: чем меньше число, тем выше точность.
Python 3: hash_(value)
Основана на встроенной функции hash. Для value типа int, float или str возвращается hash(value), во всех остальных случаях возвращается 0.
href(value, length)
Возвращает ссылку в виде HTML-тэга a, если value начинается с 'http://' или 'https://', в противном случае
возвращается value. Атрибут href принимает значение value, внутри тэга первые length значений value c '...' или целиком
value, если его длина не превышает length + 3.
Арифметические функции
m(value, number = 1)
d(value, number = 1)
a(value, number = 1)
s(value, number = 1)
Возвращают результат соответствующей арифметической операции над двумя
аргументами (m - умножение, d - деление, a - сложение, s - вычитание). value
должен быть числом (5), или строкой, содержащей число. В противном случае
возвращается неопределенное значение (3).
Примечание: для целых чисел рекомендуется дополнительно использовать `round(val, 0)`.
neg(value)
Возвращает противоположное число. value должен быть числом (5), или строкой,
содержащей число. В противном случае возвращается неопределенное значение (3).
Следующие функции возвращают даты, представленные в определённых форматах. В python вывод старается
сохранить часовые пояса входящих данных, в js результат всегда в часовом поясе '+0000'.
date(value, format = 'lr-')
Форматы (* - по умолчанию):
- * 'lr-', 0: Год справа; день, месяц и год разделены символом '-'
- 'lr.', 1: Год справа; день, месяц и год разделены символом '.'
- 'rl-', 2: Год слева; год, месяц и день разделены символом '-'
- 'rl.', 3: Год слева; год, месяц и день разделены символом '.'
datetime(value, format = 'iso8601')
Форматы (* - по умолчанию):
- * 'iso8601', 0: Дата в формате ISO-8601 с разделителем ' '
- 'iso8601t', 1: Дата в формате ISO-8601 с разделителем 'T'
- 'iso8601-', 2: Дата в формате ISO-8601 без часового пояса
- 'simple', 3: Дата в формате ISO-8601 без часового пояса и миллисекунд
fmt(value, processStr = '')
Преобразует value по цепочке, заданной строкой processStr. Строка имеет вид 'функция1.функция2<целое число>.функция3....'. Когда после функции идет целое число, оно передается в нее вторым аргументом. Поддерживаемые функции:<br />
- без аргументов: fillna, chunk3, nbsp, str, hash (только python);<br />
- с целочисленным аргументом: trunc, round, m, d, a, s.<br />
Пример: 'm7.d15.a10.chunk3.nbsp.fillna'.<br />
Когда в строке обнаруживается неподдерживаемая функция, промежуточный результат неопределен (3).
makeResolver(config)
Возвращает три метода для работы с данными:
- resolveAll(obj, ignore=null, cache=null)
- resolveByPath(obj, path, ignore=null, cache=null)
- resolveByPaths(obj, paths, ignore=null, cache=null)
Эти методы принимают и возвращают рецепты. "Рецепт" - это объект (список, объект, значение), который может быть или включать в себя "источники". "Источники" - это объекты, которые описывают как и от куда надо достать данные и подставить их вместо себя. Т.е. в рецептах нет данных как таковых.
Методы `resolve*` стараются разрешить все источники в данные. Если передан аргумент 'cache' - сетевые запросы и т.д не будут повторяться в процессе. Аргумент 'ignore' позволяет не разрешать источники определённых типов (или все).
format(string, ...values)
Форматирует строку в соответствии с переданным шаблоном и подставляет данные из аргументов.
Поддерживаются позиционные и именованные подстановки. Позиционные ('{}') заменяются на
соответствующие позиционны аргументы (со сдвигом +1, если первый аргумент - объект [для JavaScript]).
Именованные подставноки ('{<key>}') заменяются на соответсвующие значения именованных аргументов (Python)
или на значения по ключу из первого аргумента (JavaScript). Каждая подстановка может содержать
часть ('|<цепочка преобразований>'). В этом случае значение обрабатывается с помощью fmt (см. выше).
Примеры:
- 'format("{key1} {key2}", {key1: "a", key2: "b"})' -> "a b" [JavaScript]
- 'format("{key1} {key2}", key1="a", key2="b"})' -> "a b" [Python]
- 'format("{} {key} {}", {key: "hey"}, "a", "b")' -> "a hey b" [JavaScript]
- 'format("{} {key} {}", "a", "b", key="hey")' -> "a hey b" [Python]
- 'format("{||}", {"|": "hey"})' -> "hey" [JavaScript]
- 'format("{||}", **{"|": "hey"})' -> "hey" [Python]
- 'format("{|a2.round0}", 2)' -> "4" [JavaScript/Python]
Примечания:
- Только последний "|" считается разделителем фильтров от ключа.
- В случае, если после "|" пустая строка - обработки не происходит.
(1) Функция считает следующие значения аргументов неопределенными: JavaScript: undefined или null Python 3: None или nan (2) В данном случае проводятся следующие проверки value: JavaScript: Number или String Python 3: не bool и не None (3) Функция возвращает как неопределенное значение: JavaScript: null Python 3: None (4) В данном случае проводятся следующие проверки value: JavaScript: Number Python 3: не bool, не None и не str (5) В данном случае проводятся следующие проверки value: JavaScript: не null Python 3: не None
10 months ago
8 months ago
8 months ago
8 months ago
8 months ago
7 months ago
1 year ago
2 years ago
2 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago