function wordWrap(subject) {
    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
    var subjectString = coerceToString(subject);

    var _determineOptions = determineOptions(options),
      width = _determineOptions.width,
      newLine = _determineOptions.newLine,
      indent = _determineOptions.indent,
      cut = _determineOptions.cut;

    if (subjectString === '' || width <= 0) {
      return indent;
    }

    var subjectLength = subjectString.length;
    var substring = subjectString.substring.bind(subjectString);
    var offset = 0;
    var wrappedLine = '';

    while (subjectLength - offset > width) {
      if (subjectString[offset] === ' ') {
        offset++;
        continue;
      }

      var spaceToWrapAt = subjectString.lastIndexOf(' ', width + offset);

      if (spaceToWrapAt >= offset) {
        wrappedLine += indent + substring(offset, spaceToWrapAt) + newLine;
        offset = spaceToWrapAt + 1;
      } else {
        if (cut) {
          wrappedLine += indent + substring(offset, width + offset) + newLine;
          offset += width;
        } else {
          spaceToWrapAt = subjectString.indexOf(' ', width + offset);

          if (spaceToWrapAt >= 0) {
            wrappedLine += indent + substring(offset, spaceToWrapAt) + newLine;
            offset = spaceToWrapAt + 1;
          } else {
            wrappedLine += indent + substring(offset);
            offset = subjectLength;
          }
        }
      }
    }

    if (offset < subjectLength) {
      wrappedLine += indent + substring(offset);
    }

    return wrappedLine;
  }
Wraps `subject` to a given number of characters using a string break character.

@function wordWrap
@static
@since 1.0.0
@memberOf Manipulate
@param  {string} [subject=''] The string to wrap.
@param  {Object} [options={}] The wrap options.
@param  {number} [options.width=75] The number of characters at which to wrap.
@param  {string} [options.newLine='\n'] The string to add at the end of line.
@param  {string} [options.indent='']  The string to intend the line.
@param  {boolean} [options.cut=false] When `false` (default) does not split the word even if word length is bigger than `width`. <br/>
                                      When `true` breaks the word that has length bigger than `width`.

@return {string} Returns wrapped string.
@example
v.wordWrap('Hello world', {
  width: 5
});
// => 'Hello\nworld'

v.wordWrap('Hello world', {
  width: 5,
  newLine: '<br/>',
  indent: '__'
});
// => '__Hello<br/>__world'

v.wordWrap('Wonderful world', {
  width: 5,
  cut: true
});
// => 'Wonde\nrful\nworld'