diff options
author | Sam Potts <sam@potts.es> | 2018-06-17 01:26:24 +1000 |
---|---|---|
committer | Sam Potts <sam@potts.es> | 2018-06-17 01:26:24 +1000 |
commit | f1b4db4f3665ea824ad75d7b68df1efc9f1a0524 (patch) | |
tree | d3fd6d76a15a94f8a5889b3d0033c65b35420c4f /src/js/utils/strings.js | |
parent | 6a6f3914c0943c72a85c290a8175d759e7f70809 (diff) | |
parent | d4abb4b1438cb316aacae480e7b7e9b055a60b24 (diff) | |
download | plyr-f1b4db4f3665ea824ad75d7b68df1efc9f1a0524.tar.lz plyr-f1b4db4f3665ea824ad75d7b68df1efc9f1a0524.tar.xz plyr-f1b4db4f3665ea824ad75d7b68df1efc9f1a0524.zip |
Merge branch 'develop' into a11y-improvements
# Conflicts:
# dist/plyr.js
# dist/plyr.js.map
# dist/plyr.min.js
# dist/plyr.min.js.map
# dist/plyr.polyfilled.js
# dist/plyr.polyfilled.js.map
# dist/plyr.polyfilled.min.js
# dist/plyr.polyfilled.min.js.map
# src/js/controls.js
# src/js/fullscreen.js
# src/js/plyr.js
# src/js/ui.js
# src/js/utils.js
Diffstat (limited to 'src/js/utils/strings.js')
-rw-r--r-- | src/js/utils/strings.js | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/src/js/utils/strings.js b/src/js/utils/strings.js new file mode 100644 index 00000000..c872498c --- /dev/null +++ b/src/js/utils/strings.js @@ -0,0 +1,85 @@ +// ========================================================================== +// String utils +// ========================================================================== + +import is from './is'; + +// Generate a random ID +export function generateId(prefix) { + return `${prefix}-${Math.floor(Math.random() * 10000)}`; +} + +// Format string +export function format(input, ...args) { + if (is.empty(input)) { + return input; + } + + return input.toString().replace(/{(\d+)}/g, (match, i) => args[i].toString()); +} + +// Get percentage +export function getPercentage(current, max) { + if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) { + return 0; + } + + return (current / max * 100).toFixed(2); +} + +// Replace all occurances of a string in a string +export function replaceAll(input = '', find = '', replace = '') { + return input.replace( + new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\]/\\])/g, '\\$1'), 'g'), + replace.toString(), + ); +} + +// Convert to title case +export function toTitleCase(input = '') { + return input.toString().replace(/\w\S*/g, text => text.charAt(0).toUpperCase() + text.substr(1).toLowerCase()); +} + +// Convert string to pascalCase +export function toPascalCase(input = '') { + let string = input.toString(); + + // Convert kebab case + string = replaceAll(string, '-', ' '); + + // Convert snake case + string = replaceAll(string, '_', ' '); + + // Convert to title case + string = toTitleCase(string); + + // Convert to pascal case + return replaceAll(string, ' ', ''); +} + +// Convert string to pascalCase +export function toCamelCase(input = '') { + let string = input.toString(); + + // Convert to pascal case + string = toPascalCase(string); + + // Convert first character to lowercase + return string.charAt(0).toLowerCase() + string.slice(1); +} + +// Remove HTML from a string +export function stripHTML(source) { + const fragment = document.createDocumentFragment(); + const element = document.createElement('div'); + fragment.appendChild(element); + element.innerHTML = source; + return fragment.firstChild.innerText; +} + +// Like outerHTML, but also works for DocumentFragment +export function getHTML(element) { + const wrapper = document.createElement('div'); + wrapper.appendChild(element); + return wrapper.innerHTML; +} |