Actualizacion maquina principal
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / ansi-align / index.js
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/ansi-align/index.js b/.config/coc/extensions/node_modules/coc-prettier/node_modules/ansi-align/index.js
new file mode 100644 (file)
index 0000000..67fa826
--- /dev/null
@@ -0,0 +1,61 @@
+'use strict'
+
+const stringWidth = require('string-width')
+
+function ansiAlign (text, opts) {
+  if (!text) return text
+
+  opts = opts || {}
+  const align = opts.align || 'center'
+
+  // short-circuit `align: 'left'` as no-op
+  if (align === 'left') return text
+
+  const split = opts.split || '\n'
+  const pad = opts.pad || ' '
+  const widthDiffFn = align !== 'right' ? halfDiff : fullDiff
+
+  let returnString = false
+  if (!Array.isArray(text)) {
+    returnString = true
+    text = String(text).split(split)
+  }
+
+  let width
+  let maxWidth = 0
+  text = text.map(function (str) {
+    str = String(str)
+    width = stringWidth(str)
+    maxWidth = Math.max(width, maxWidth)
+    return {
+      str,
+      width
+    }
+  }).map(function (obj) {
+    return new Array(widthDiffFn(maxWidth, obj.width) + 1).join(pad) + obj.str
+  })
+
+  return returnString ? text.join(split) : text
+}
+
+ansiAlign.left = function left (text) {
+  return ansiAlign(text, { align: 'left' })
+}
+
+ansiAlign.center = function center (text) {
+  return ansiAlign(text, { align: 'center' })
+}
+
+ansiAlign.right = function right (text) {
+  return ansiAlign(text, { align: 'right' })
+}
+
+module.exports = ansiAlign
+
+function halfDiff (maxWidth, curWidth) {
+  return Math.floor((maxWidth - curWidth) / 2)
+}
+
+function fullDiff (maxWidth, curWidth) {
+  return maxWidth - curWidth
+}