Skip to content

Instantly share code, notes, and snippets.

@razchiriac
Created March 2, 2017 16:46
Show Gist options
  • Save razchiriac/b2fb3db99aa8fd6ec0746083c233cbc1 to your computer and use it in GitHub Desktop.
Save razchiriac/b2fb3db99aa8fd6ec0746083c233cbc1 to your computer and use it in GitHub Desktop.
JS Bin // source https://jsbin.com/yoliwiq
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<script id="jsbin-javascript">
"use strict";
var words = ["Two", "words."];
var L = 9;
makeSpaces = function (n) {
var r = '';
for (var i = 0; i < n; i++) {
r += ' ';
}
return r;
};
textJustification = function (words, L) {
var rows = [];
var i = 0;
var w;
var cLen;
var rem;
// split into rows
while (typeof words !== 'undefined' && words.length > 0) {
w = words.shift();
rows[i] = [];
rows[i].push(w);
cLen = rows[i].join(' ').length;
rem = L - cLen;
while (typeof words[0] !== 'undefined' && words[0].length < rem) {
w = words.shift();
rows[i].push(w);
cLen = rows[i].join(' ').length;
rem = L - cLen;
}
i++;
}
// justify rows
for (var i = 0; i < rows.length; i++) {
// Left justify last row
if (i === rows.length - 1 || rows[i].length === 1) {
rows[i] = rows[i].join(' ');
rows[i] += makeSpaces(L - rows[i].length);
} else {
if (rows[i].length === 2) {
cLen = rows[i].join('').length;
var spaces = makeSpaces(L - cLen);
rows[i] = rows[i].join(spaces);
} else if (rows[i].length > 2) {
var spacesArr = [];
var numGaps = rows[i].length - 1;
cLen = rows[i].join('').length;
rem = L - cLen;
// create array of spaces
for (var x = 0; x <= numGaps; x++) {
var s = 0;
if (x === 0) {
s = Math.ceil(rem / numGaps);
} else {
s = Math.floor(rem / numGaps);
}
spaces = makeSpaces(s);
spacesArr.push(spaces);
}
for (var j = 0; j < rows[i].length - 1; j++) {
var s = spacesArr.shift();
rows[i][j] += s;
}
rows[i] = rows[i].join('');
}
}
}
return rows;
};
console.table(textJustification(words, L));
</script>
<script id="jsbin-source-javascript" type="text/javascript">var words = ["Two", "words."];
var L = 9;
makeSpaces = n => {
var r = '';
for (var i = 0; i < n; i++) {
r += ' ';
}
return r;
};
textJustification = (words, L) => {
var rows = [];
var i = 0;
var w;
var cLen;
var rem;
// split into rows
while (typeof words !== 'undefined' && words.length > 0) {
w = words.shift();
rows[i] = [];
rows[i].push(w);
cLen = rows[i].join(' ').length;
rem = L - cLen;
while (typeof words[0] !== 'undefined' && words[0].length < rem) {
w = words.shift();
rows[i].push(w);
cLen = rows[i].join(' ').length;
rem = L - cLen;
}
i++;
}
// justify rows
for (var i = 0; i < rows.length; i++) {
// Left justify last row
if (i === rows.length - 1 || rows[i].length === 1) {
rows[i] = rows[i].join(' ');
rows[i] += makeSpaces(L - rows[i].length);
}
else {
if (rows[i].length === 2) {
cLen = rows[i].join('').length;
var spaces = makeSpaces(L - cLen);
rows[i] = rows[i].join(spaces);
}
else if (rows[i].length > 2) {
var spacesArr = [];
var numGaps = rows[i].length - 1;
cLen = rows[i].join('').length;
rem = L - cLen;
// create array of spaces
for (var x = 0; x <= numGaps; x++) {
var s = 0;
if (x === 0) {
s = Math.ceil(rem / numGaps);
} else {
s = Math.floor(rem / numGaps);
}
spaces = makeSpaces(s);
spacesArr.push( spaces );
}
for (var j = 0; j < rows[i].length-1; j++) {
var s = spacesArr.shift();
rows[i][j] += s;
}
rows[i] = rows[i].join('');
}
}
}
return rows;
}
console.table(textJustification(words, L));
</script></body>
</html>
"use strict";
var words = ["Two", "words."];
var L = 9;
makeSpaces = function (n) {
var r = '';
for (var i = 0; i < n; i++) {
r += ' ';
}
return r;
};
textJustification = function (words, L) {
var rows = [];
var i = 0;
var w;
var cLen;
var rem;
// split into rows
while (typeof words !== 'undefined' && words.length > 0) {
w = words.shift();
rows[i] = [];
rows[i].push(w);
cLen = rows[i].join(' ').length;
rem = L - cLen;
while (typeof words[0] !== 'undefined' && words[0].length < rem) {
w = words.shift();
rows[i].push(w);
cLen = rows[i].join(' ').length;
rem = L - cLen;
}
i++;
}
// justify rows
for (var i = 0; i < rows.length; i++) {
// Left justify last row
if (i === rows.length - 1 || rows[i].length === 1) {
rows[i] = rows[i].join(' ');
rows[i] += makeSpaces(L - rows[i].length);
} else {
if (rows[i].length === 2) {
cLen = rows[i].join('').length;
var spaces = makeSpaces(L - cLen);
rows[i] = rows[i].join(spaces);
} else if (rows[i].length > 2) {
var spacesArr = [];
var numGaps = rows[i].length - 1;
cLen = rows[i].join('').length;
rem = L - cLen;
// create array of spaces
for (var x = 0; x <= numGaps; x++) {
var s = 0;
if (x === 0) {
s = Math.ceil(rem / numGaps);
} else {
s = Math.floor(rem / numGaps);
}
spaces = makeSpaces(s);
spacesArr.push(spaces);
}
for (var j = 0; j < rows[i].length - 1; j++) {
var s = spacesArr.shift();
rows[i][j] += s;
}
rows[i] = rows[i].join('');
}
}
}
return rows;
};
console.table(textJustification(words, L));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment