This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.2 KiB
52 lines
1.2 KiB
/*! |
|
* align-text <https://github.com/jonschlinkert/align-text> |
|
* |
|
* Copyright (c) 2015, Jon Schlinkert. |
|
* Licensed under the MIT License. |
|
*/ |
|
|
|
'use strict'; |
|
|
|
var typeOf = require('kind-of'); |
|
var repeat = require('repeat-string'); |
|
var longest = require('longest'); |
|
|
|
module.exports = function alignText(val, fn) { |
|
var lines, type = typeOf(val); |
|
|
|
if (type === 'array') { |
|
lines = val; |
|
} else if (type === 'string') { |
|
lines = val.split(/(?:\r\n|\n)/); |
|
} else { |
|
throw new TypeError('align-text expects a string or array.'); |
|
} |
|
|
|
var fnType = typeOf(fn); |
|
var len = lines.length; |
|
var max = longest(lines); |
|
var res = [], i = 0; |
|
|
|
while (len--) { |
|
var line = String(lines[i++]); |
|
var diff; |
|
|
|
if (fnType === 'function') { |
|
diff = fn(line.length, max.length, line, lines, i); |
|
} else if (fnType === 'number') { |
|
diff = fn; |
|
} else { |
|
diff = max.length - line.length; |
|
} |
|
|
|
if (typeOf(diff) === 'number') { |
|
res.push(repeat(' ', diff) + line); |
|
} else if (typeOf(diff) === 'object') { |
|
var result = repeat(diff.character || ' ', diff.indent || 0); |
|
res.push((diff.prefix || '') + result + line); |
|
} |
|
} |
|
|
|
if (type === 'array') return res; |
|
return res.join('\n'); |
|
};
|
|
|