/groovy.utils

Реализация некоторых полезных функций из Groovy на Javascript

Primary LanguageJavaScript

groovy.utils

Реализация некоторых полезных функций из Groovy на Javascript

Установка

bower install groovy.utils

Все функции имеют два первых необязательных аргумента. Если:

  1. передано два аргумента, то это colletion и handler, в качестве контекста используется контекст функции.
  2. передан один аргумент, то это handler. Коллекция берется из контекста функции и она же используется как контекст.

Таким образом можно привязать коллекцию к функции в виде контекста

var myCollectionEach = each.bind([1, 2, 3]);
myCollectionEach(function(value, key, index){ /* ... */ });

Collection

В документации под коллекцией подразумевается Array, Object, FileList, HTMLCollection, jQuery или NodeList. С этими объектами функции работают правильно. Список будет дополняться.

each

Collection each([collection, context], handler)

Вызывает принятый обработчик в заданном или глобальном контексте, для каждого элемента коллекции и возвращает исходный объект

each([1,2,3], console, function(value, key, index){
  this.log(value, key, index);
});

grep

Array|Object grep([collection, context], handler)

Отфильтрует коллекцию и вернет новую в виде массива или объекта, в зависимости от того что было указано в качестве коллекции.

grep([1,2,3,4], function(value){ return value % 2 === 0; });

collect

Array|Object collect([collection, context], handler)

Вызывает принятый обработчик, в заданном или глобальном контексте, для каждого элемента коллекции и использует резутат вызова как новое значение для этих элементов. Вернет либо новый массив, либо новый объект, в зависимости от того что было указано в качестве коллекции.

collect([1,2,3], function(value, key, index){ return value * index; }); // [0, 2, 6]

collectEntries

Array|Object collectEntries([collection, context], handler)

Вызывает принятый обработчик, в заданном или глобальном контексте, для каждого элемента коллекции и использует резутат вызова как новые ключ и значение для этих элементов. Если обработчик вернул false, элемент не попадет в новую коллекцию. Вернет новую коллекцию в виде массива или объекта, в зависимости от того что было указано в качестве коллекции.

collectEntries({a: 10, b: 20}, function(value, key, index){ return [key.toUpperCase(), value * 10]; }); // {A: 100, B: 200}

fs

String fs(format, args[, cusomMods])

Выводит строку отформатированную в соответствии с указанным форматом. Принцип работы похож на функцию printf в PHP или System.out.format в Java, только адаптированный под требования javascript.

Синтаксис ключей

  • %s - без аргументов
  • ${su} - без агрументов
  • ${sr:foo,bar} - с аргументами

Строковые (интерпретируют аргумент как строку)

  • s - отобразить как есть
  • sU - привести к верхнему регистру
  • su - привести первый символ каждого слова к верхнему регистру
  • sL - привести к нижнему регистру
  • sl - привести первый символ каждого слова к нижнему регистру
  • seu - кодировать функцией encodeURIComponent
  • sdu - декодировать функцией decodeURIComponent
  • sr:from,to - заменить подстроку указанную в первом параметре на подстроку указанную во втором

Числовые (аргумент интерпретируется как число)

  • d - отобразить как есть
  • df:num - добавить дробную часть указанной длины (два, по умолчанию)
  • de:num - научная нотация в нижнем регистре (в параметре кол-во знаков после запятой)
  • dE:num - научная нотация в верхнем регистре (в параметре кол-во знаков после запятой)
  • dh - как шестнадцатиричное число в нижнем регистре
  • dH - как шестнадцатиричное число в верхнем регистре
  • db - как бинарное число
  • do - как восьмиричное число
  • dn:from,to - переводит в из указанной системы в указанную систему счисления (по умлочанию 10)

Массивы (аргумент будет привен к массиву, если не является таковым, и у него будет вызван метод join)

  • a - элементы через запятую + побел ', '
  • as:str - конкатенация элементов указаной подстрокой (по умолчанию запятая)

JSON (аргумент будет прведен к массиву, если не является массивом или объктом)

  • j - будет использована функция JSON.stringify
fs("Меня зовут %su и мне ${dn:16} лет", ["виктор", 19]) // Меня зовут Виктор и мне 25 лет