0.1.58 • Published 7 months ago

@bestplace/ljsp v0.1.58

Weekly downloads
3
License
ISC
Repository
-
Last release
7 months ago

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

0.1.53

10 months ago

0.1.54

8 months ago

0.1.55

8 months ago

0.1.56

8 months ago

0.1.57

8 months ago

0.1.58

7 months ago

0.1.52

1 year ago

0.1.51

2 years ago

0.1.50

2 years ago

0.1.49

3 years ago

0.1.48

3 years ago

0.1.47

4 years ago

0.1.46

4 years ago

0.1.45

4 years ago

0.1.44

4 years ago

0.1.41

4 years ago

0.1.42

4 years ago

0.1.43

4 years ago

0.1.40

4 years ago

0.1.39

4 years ago

0.1.38

4 years ago

0.1.37

4 years ago

0.1.36

4 years ago

0.1.35

4 years ago

0.1.34

4 years ago

0.1.33

4 years ago

0.1.32

4 years ago

0.1.30

4 years ago

0.1.31

4 years ago

0.1.29

4 years ago

0.1.28

4 years ago

0.1.27

4 years ago

0.1.26

4 years ago

0.1.25

4 years ago

0.1.24

4 years ago

0.1.20

4 years ago

0.1.21

4 years ago

0.1.22

4 years ago

0.1.23

4 years ago

0.1.19

4 years ago

0.1.18

4 years ago

0.1.17

4 years ago

0.1.16

4 years ago

0.1.15

4 years ago

0.1.14

4 years ago

0.1.13

4 years ago

0.1.12

4 years ago

0.1.11

5 years ago

0.1.10

5 years ago

0.0.1

5 years ago

0.0.0

5 years ago