# Namespace: helpers

## core.utils. helpers

Набор вспомогательных методов общего назначения.

Source:
  - utils/utilsApi.js, line 45

### Methods

#### <static> applyBehavior(target, arguments)

  Последовательно применяет переданные в аргументах Behavior классы на заданный экземпляр объекта. Никак не связан с применением объектов Marionette.Behavior.

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `target` | Object |  | Объект, на который будут применены behaviors.
  `arguments` | function | <repeatable> | 1 или более функций-конструкторов объектов Behavior.

  Source:
    - utils/helpers.js, line 165

  ##### Example

      core.utils.helpers.applyBehavior(this, core.models.behaviors.SelectableBehavior);

#### <static> assertArgumentNotFalsy(argumentValue, argumentName)

  Позволяет осуществить предварительную валидацию, что значение не равно `undefined, null, 0, '', false`. Кидает исключение `ArgumentFalsyError` в случае ошибки.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `argumentValue` | * | Проверяемое значение.
  `argumentName` | String | Имя проверяемой переменной. Указывается тексте исключения.

  Source:
    - utils/helpers.js, line 257

  ##### Example

      core.utils.helpers.assertArgumentNotFalsy(argument1, 'argument1');

#### <static> comparatorFor(comparatorFn, propertyName) → {function}

  Оборачивает переданную функцию-компаратор применяя ее на заданный атрибут объекта Backbone.Model.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `comparatorFn` | function | Функция, которая должна быть вызвана по окончанию обработки активного события.
  `propertyName` | String | Функция, которая должна быть вызвана по окончанию обработки активного события.

  Source:
    - utils/helpers.js, line 63

  ##### Returns:

  Обернутая функция.

  Type
    function

  ##### Example

      var referenceComparator = core.utils.helpers.comparatorFor(core.utils.comparators.stringComparator2Asc, 'text');
      var a = new Backbone.Model({ id: 1, text: '1' });
      var b = new Backbone.Model({ id: 2, text: '2' });
      // returns -1
      var result = referenceComparator(a, b);

#### <static> createLocalizedText(defaultText) → {Object}

  Принимает строку и создает объект LocalizedText `{ en: 'foo', de: 'foo', ru: 'foo' }`.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `defaultText` | String | Текст, который будет установлен в каждое из свойств результирующего объекта.

  Source:
    - utils/helpers.js, line 82

  ##### Returns:

  Объект `{ en, de, ru }`.

  Type
    Object

#### <static> enqueueOperation(operation, queueId)

  Создает очередь из асинхронных операций. Поступающие операции выполняются последовательно.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `operation` | function | функция, запускающая асинхронную операцию и возвращающая объект Promise.
  `queueId` | String | Строковый идентификатор цепочки операций.

  Source:
    - utils/helpers.js, line 146

  ##### Example

      var save = form.save.bind(form);
      // Three sequential calls
      var promise1 = core.utils.helpers.enqueueOperation(save, 42);
      var promise2 = core.utils.helpers.enqueueOperation(save, 42);
      var promise3 = core.utils.helpers.enqueueOperation(save, 42);
      promise3.then(function () {
          // Will be called only when all the 'save' operations has been fired and returned success.
      });

#### <static> ensureOption(options, optionName)

  Позволяет осуществить предварительную валидацию входных опций. Обычно применяется к конструкторе/инициалайзере объекта. Поддерживает проверку свойств подобъектов. Кидает исключение `MissingOptionError` в случае ошибки.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `options` | Object | Проверяемый объект опций.
  `optionName` | String | Имя проверяемого свойства или разделенный точками путь к нему.

  Source:
    - utils/helpers.js, line 183

  ##### Example

      // Checks that property options.model exists.
      core.utils.helpers.ensureOption(options, 'model');
      // Checks that property options.property1.subProperty exists.
      core.utils.helpers.ensureOption(options, 'property1.subProperty');

#### <static> ensureProperty(object, propertyName)

  Позволяет осуществить предварительную валидацию свойств объекта. Поддерживает проверку свойств подобъектов. Кидает исключение `MissingPropertyError` в случае ошибки.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `object` | Object | Проверяемый объект.
  `propertyName` | String | Имя проверяемого свойства или разделенный точками путь к нему.

  Source:
    - utils/helpers.js, line 213

  ##### Example

      // Checks that property this.view.moduleRegion exists.
      core.utils.helpers.ensureOption(this.view, 'moduleRegion');

#### <static> format(text, arguments) → {String}

  Javascript версия .NET метода `string.Format`.

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `text` | String |  | Форматируемая строка, содержащая плейсхолдеры в формате `{i}`. Где `i` - индекс подставляемого аргумента (начиная с нуля).
  `arguments` | * | <repeatable> | Агрументы, которые будут подставлены в плейсхолдеры.

  Source:
    - utils/helpers.js, line 100

  ##### Returns:

  Результирующая строка.

  Type
    String

  ##### Example

      // returns 'Hello, Javascript!'
      core.utils.helpers.format('Hello, {0}!', 'Javascript');

#### <static> getPluralForm(n, texts) → {String}

  Taking a number and array of strings, returns a valid plural form. Works with complex cases and valid for all supported languages (en, de, ru).

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `n` | Number | Число, для которого необходимо подобрать склонение.
  `texts` | String | Разделенные запятыми варианты фразы (для английского и немецкого - 2 фразы разделенные запятыми, для русского - 3 фразы разделенные запятыми).

  Source:
    - utils/helpers.js, line 125

  ##### Returns:

  Результирующая строка.

  Type
    String

  ##### Example

      // returns 'car'
      core.utils.helpers.getPluralForm(1, 'car,cars');
      // returns 'cars'
      core.utils.helpers.getPluralForm(10, 'car,cars');

#### <static> getPropertyOrDefault(propertyPath, obj)

  Позволяет получить свойство объекта (или подобъекта) без ошибок в случае, если сам объект или его подобъекты не заданы.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `propertyPath` | String | Имя получаемого свойства или разделенный точками путь к нему.
  `obj` | Object | Объект, на который применяется путь.

  Source:
    - utils/helpers.js, line 243

  ##### Example

      var foo = { a: {} };
      // returns undefined (doesn't throw an error)
      core.utils.helpers.getPropertyOrDefault(foo, 'a.b.c.d');

#### <static> nextTick(callback)

  Метод вызывает функцию `callback()` по окончанию обработки активного события (аналогично setTimeout(fn, 10)).

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `callback` | function | Функция, которая должна быть вызвана по окончанию обработки активного события.

  Source:
    - utils/helpers.js, line 46

#### <static> setUniqueTimeout(someUniqueId, callback, delay)

  Метод вызывает функцию `callback()` по прошествии `delay` миллисекунд с момента последнего вызова этого метода с заданным `someUniqueId`.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `someUniqueId` | String | Идентификатор вызова.
  `callback` | function | Функция, которая должна быть вызвана по прошествии заданного интервала времени.
  `delay` | Number | Задержка вызова функции в миллисекундах.

  Source:
    - utils/helpers.js, line 27

#### <static> throwArgumentError(message)

  Throws ArgumentError. The exception should be thrown when one of the arguments provided to a method is not valid. Should be thrown only when one particular argument is invalid. If a combination of arguments is invalid use `FormatError`.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `message` | String | <optional> | 'Invalid argument' | Сообщение об ошибке.

  Source:
    - utils/helpers.js, line 323

  ##### Example

      function (url, parameterNames, parameters, callback) {
          // Some code here ...
          if (parameterNames.Length !== 2) {
              utilsApi.helpers.throwArgumentError('The array `parameterNames` should contain exactly 2 elements.');
          }
          // Some code here ...

#### <static> throwError(message, name)

  Упрощенный способ бросить объект-исключение.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `message` | String |  |  | Сообщение об ошибке.
  `name` | String | <optional> | 'Error' | Имя исключения (поле Name объекта Error).

  Source:
    - utils/helpers.js, line 270

  ##### Example

      core.utils.helpers.throwError('Request is invalid.');

#### <static> throwFormatError(message)

  Throws FormatError. The exception should be thrown when the format of an argument is invalid, or when a is not well formed.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `message` | String | <optional> | 'Invalid format' | Сообщение об ошибке.

  Source:
    - utils/helpers.js, line 307

  ##### Example

      function (url, parameterNames, parameters, callback) {
          // Some code here ...
          if (parameters.Length !== parameterNames.length) {
              utilsApi.helpers.throwFormatError('The arrays `parameters` and `parameterNames` should have identical length.');
          }
          // Some code here ...

#### <static> throwInvalidOperationError(message)

  Бросает InvalidOperationError. Возникает внутри метода класса, когда объект находится в некорректном состоянии.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `message` | String | <optional> | 'Invalid operation' | Сообщение об ошибке.

  Source:
    - utils/helpers.js, line 292

  ##### Example

      // Inside of implementation of some Marionette.View.
      addKeyboardListener: function (key, callback) {
          if (!this.keyListener) {
              utilsApi.helpers.throwInvalidOperationError('You must apply keyboard listener after \'render\' event has happened.');
          }
          var keys = key.split(',');
          _.each(keys, function (k) {
              this.keyListener.simple_combo(k, callback);
          }, this);
      },
      // ...

#### <static> throwNotFoundError(message)

  Throws NotFoundError. The exception should be thrown when a requested object could not be found. For example: we looked up in the database and could find a person with requested id.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `message` | String | <optional> | 'Object not found' | Сообщение об ошибке.

  Source:
    - utils/helpers.js, line 362

#### <static> throwNotImplementedError(message)

  Throws NotImplementedError. The exception should be thrown when a requested method or operation is not implemented. For example: a base class could have abstract methods that throws such error.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `message` | String | <optional> | 'The operation is not implemented' | Сообщение об ошибке.

  Source:
    - utils/helpers.js, line 353

  ##### Example

      // Inside of implementation of some base controller class.
      navigate() {
          utilsApi.helpers.throwNotImplementedError();
      }

#### <static> throwNotSupportedError(message)

  Throws NotSupportedError. The exception should be thrown when an invoked method is not supported. For example: some class doesn't support all the methods of the interface it implements.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `message` | String | <optional> | 'The operation is not supported' | Сообщение об ошибке.

  Source:
    - utils/helpers.js, line 339

  ##### Example

      // Inside of implementation of some Stream class
      seek() {
          // Some code here ...
          utilsApi.helpers.throwNotSupportedError('The network stream doesn't support `seek`.');
          // Some code here ...
      }