# __String__ operations

[![+Professional Support](https://www.totaljs.com/img/badge-support.svg)](https://www.totaljs.com/support/) [![+Chat with contributors](https://www.totaljs.com/img/badge-chat.svg)](https://messenger.totaljs.com)

Here is the list of all registered `string` prototypes in jComponent library:

- [`String.arg(obj, [encode], [def])`](#method-string-arg-)
- [`String.COMPILABLE()`](#method-string-COMPILABLE-)
- [`String.encode()`](#method-string-encode-)
- [`String.env([search])`](#method-string-env-)
- [`String.format([a], [b], [n])`](#method-string-format-)
- [`String.isEmail()`](#method-string-isemail-)
- [`String.isPhone()`](#method-string-isphone-)
- [`String.isURL()`](#method-string-isurl-)
- [`String.padLeft(count, [char])`](#method-string-padleft-)
- [`String.padRight(count, [char])`](#method-string-padright-)
- [`String.params(obj)`](#method-string-params-)
- [`String.parseConfig([callback])`](#method-string-parseconfig-)
- [`String.parseDate()`](#method-string-parsedate-)
- [`String.parseFloat([def])`](#method-string-parsefloat-)
- [`String.parseInt([def])`](#method-string-parseint-)
- [`String.removeDiacritics()`](#method-string-removediacritics-)
- [`String.render(model, [repository])`](#method-string-render-)
- [`String.SCOPE(element)`](#method-string-scope-)
- [`String.slug([max])`](#method-string-slug-)
- [`String.toSearch()`](#method-string-tosearch-)

---

### Method: `String.arg()`

`+v17` Method replaces `{key}` for a `obj[key]`.

```javascript
String.arg(obj, [encode], [def]);
// @obj {Object} A model
// @encode {String/Boolean} performs URL encode for values (optional, can be "json", "escape" or "encode"/true)
// @def {String} optional, a default value (default: undefined)
// return {String}

console.log(('Hello {name}!').arg({ name: 'world' }));
// Hello world!

console.log(('Hello {missing}!').arg({ name: 'world' }));
// Hello {missing}!

console.log(('Hello {missing}!').arg({ name: 'world' }, 'MISSING'));
// Hello MISSING!
```

### Method: `String.COMPILABLE()`

`+v17` Method determines if the string contains some components, `data-bind` or something else for compilation. It's targeted for Tangular templates.

```javascript
String.COMPILABLE();
// return {Boolean}
```

### Method: `String.encode()`

`+v18` Method encodes string to HTML safe characters. Internally it uses `Thelpers.encode()`.

```javascript
String.encode();
// return {String}
```

### Method: `String.env()`

Method reads a value from environments.

```javascript
String.env([search]);
// @search {Boolean} enables searching of values in the string
// return {String}

('[key]').env();                  // value 
('[.key]').env();                 // +v17 performs GET('key')
('Lorem [key] ipsum').env();      // Lorem [key] ipsum 
('Lorem [key] ipsum').env(true);  // Lorem value ipsum 
```

### Method: `String.format()`

Method formats the string.

```javascript
String.format([a], [b], [n]);
// return {String}

('My name is {0}.').format('Peter');   // My name is Peter.
('{0} {1}').format('Hello', 'World');  // Hello World
```

### Method: `String.isEmail()`

Method checks if the value is valid email address. Regullar expression for email validation is stored in: `M.validators.email` property.

```javascript
String.isEmail();
// return {Boolean}

('your@domain.com').isEmail();  // true
('peter').isEmail();            // false
```

### Method: `String.isPhone()`

Method checks if the value is valid phone (international) number. Regullar expression for phone validation is stored in: `M.validators.phone` property.

```javascript
String.isPhone();
// return {Boolean}

('+421903163302').isPhone();  // true
('1234').isPhone();           // false
```

### Method: `String.isURL()`

Method checks if the value is valid URL address. Regullar expression for URL validation is stored in: `M.validators.url` property.

```javascript
String.isURL();
// return {Boolean}

('https://www.totaljs.com').isURL();  // true
('www.totaljs.com').isURL();          // false
```

### Method: `String.padLeft()`

Method performs padding.

```javascript
String.padLeft(count, [char]);
// @count {Number}
// @char {String} optional, default " "
// return {String}
```

### Method: `String.padRight()`

Method performs padding.

```javascript
String.padRight(count, [char]);
// @count {Number}
// @char {String} optional, default " "
// return {String}
```

### Method: `String.params()`

Method peforms a simple formatting.

```javascript
String.params(obj);
// @obj {Object}
// return {String}

('My name is {name}.').params({ name: 'Peter' });   // My name is Peter.
```

### Method: `String.parseConfig()`

Method parses configuration from `String`.

```javascript
String.parseConfig([def]. [callback]);
// @def {String/Object} Optional, default values
// @callback {Function(key, value)} Optional
// return {Object}

console.log('name:Peter;age:33;required:true'.parseConfig('length:30'));
// Output: { length: 30, name: "Peter", age: 33, required: true }
```

### Method: `String.parseDate()`

Method parses date from `String`. It can parses `time` too.

```javascript
String.parseDate();
// return {Date}

('1984-12-06').parseDate();            // Thu Dec 06 1984 00:00:00 GMT+0100 (CET)
('06.12.1984').parseDate();            // Thu Dec 06 1984 00:00:00 GMT+0100 (CET)
('06.12.1984 12:00:50').parseDate();   // Thu Dec 06 1984 12:00:50 GMT+0100 (CET)
('12:00').parseDate();                 // Current date 12:00:00 GMT+0100 (CET)
('10:00 PM').parseDate();              // +v17 Current date 22:00:00 GMT+0100 (CET)
```

### Method: `String.parseInt()`

Method finds and parses the whole `Number`.

```javascript
String.parseInt([def]);
// @def {Number} optional, default "0"
// return {Number}

('1984').parseInt();    // 1984
('19.84').parseInt();   // 19
('-1984').parseInt();   // -1984
('ABC').parseInt();     // 0
('ABC').parseInt(1);    // 1
```

### Method: `String.parseFloat()`

Method finds and parses `Float`.

```javascript
String.parseFloat([def]);
// @def {Number} optional, default "0"
// return {Number}

('19.84').parseFloat();   // 19.84
```

### Method: `String.removeDiacritics()`

Method removes diacritics, basic latin + cyrillic.

```javascript
String.removeDiacritics();
// return {String}

('ľščťžýáí').removeDiacritics();   // lsctzyai
```

### Method: `String.render()`

Method performs `Tangular.render()`.

```javascript
String.render(model, [repository]);
// @model {Object}
// @repository {Object} optional
// return {String}

('My name is {{ name }}.').render({ name: 'Peter' });   // My name is Peter.
```

### Method: `String.SCOPE()`

`v17` Method returns a path according to the element scope.

```javascript
String.SCOPE(element);
// @element {Component/Scope/jQuery/Element/Plugin} Important!!!
// return {String}

('?.name').SCOPE($('[data---]'));   // user.name

// self === jComponent
('?.name').SCOPE(self);   // user.name
```


### Method: `String.slug()`

Method performs slugify.

```javascript
String.slug(max);
// @max {Number} optional, default 60
// return {String}

('Peter Širka').slug();   // peter-sirka
```

### Method: `String.toSearch()`

Method creates a search phrase.

```javascript
String.toSearch();
// return {String}

('Banská Bystrica').toSearch();   // banska bistrica
```