Preparation to bower release
diff --git a/src/services/helpers/ui/label_formatter.service.js b/src/services/helpers/ui/label_formatter.service.js
new file mode 100644
index 0000000..f23fea4
--- /dev/null
+++ b/src/services/helpers/ui/label_formatter.service.js
@@ -0,0 +1,90 @@
+(function() {
+ 'use strict';
+
+ /**
+ * @ngdoc service
+ * @name xos.uiComponents.LabelFormatter
+ * @description This factory define a set of helper function to format label started from an object property
+ **/
+
+ angular
+ .module('xos.uiComponents')
+ .factory('LabelFormatter', labelFormatter);
+
+ function labelFormatter() {
+
+ /**
+ * @ngdoc method
+ * @name xos.uiComponents.LabelFormatter#_formatByUnderscore
+ * @methodOf xos.uiComponents.LabelFormatter
+ * @description
+ * Convert a `snake_case` string to readable string.<br/>
+ * Eg: `this_string` will became `this string`
+ * @param {string} string The string to be converted
+ * @returns {string} The converten string
+ **/
+
+ const _formatByUnderscore = string => string.split('_').join(' ').trim();
+
+ /**
+ * @ngdoc method
+ * @name xos.uiComponents.LabelFormatter#_formatByUppercase
+ * @methodOf xos.uiComponents.LabelFormatter
+ * @description
+ * Convert a `camelCase` string to readable string.<br/>
+ * Eg: `thisString` will became `this string`
+ * @param {string} string The string to be converted
+ * @returns {string} The converten string
+ **/
+
+ const _formatByUppercase = string => string.split(/(?=[A-Z])/).map(w => w.toLowerCase()).join(' ');
+
+ /**
+ * @ngdoc method
+ * @name xos.uiComponents.LabelFormatter#_capitalize
+ * @methodOf xos.uiComponents.LabelFormatter
+ * @description
+ * Capitalize the first letter of a string.<br/>
+ * Eg: `this string` will became `This string`
+ * @param {string} string The string to be converted
+ * @returns {string} The converten string
+ **/
+
+ const _capitalize = string => string.slice(0, 1).toUpperCase() + string.slice(1);
+
+ /**
+ * @ngdoc method
+ * @name xos.uiComponents.LabelFormatter#format
+ * @methodOf xos.uiComponents.LabelFormatter
+ * @description
+ * Apply in order:
+ * - _formatByUnderscore
+ * - _formatByUppercase
+ * - _capitalize
+ * - replace multiple space with a single one
+ * - append `:` at the end
+ * <br/>
+ * Eg: `this_string` will became `This string:`<br/>
+ * Eg: `thisString` will became `This string:`
+ * @param {string} string The string to be converted
+ * @returns {string} The converten string
+ **/
+
+ const format = (string) => {
+ string = _formatByUnderscore(string);
+ string = _formatByUppercase(string);
+
+ string = _capitalize(string).replace(/\s\s+/g, ' ') + ':';
+ return string.replace('::', ':');
+ };
+
+ return {
+ // test export
+ _formatByUnderscore: _formatByUnderscore,
+ _formatByUppercase: _formatByUppercase,
+ _capitalize: _capitalize,
+ // export to use
+ format: format
+ };
+ }
+})();