Insert spaces such that line breaks still happen. Fix string displaying in buttons.

This commit is contained in:
evancz 2012-08-14 20:38:48 +02:00
parent c402dce192
commit 3584556ccd
2 changed files with 36 additions and 9 deletions

View file

@ -32,14 +32,41 @@ var Value = function(){
return arr;
};
var properEscape = function(str) {
return str.replace(/&/g, "&")
.replace(/"/g, /*"*/ """)
.replace(/'/g, /*'*/ "'")
.replace(/</g, "&#60;")
.replace(/>/g, "&#62;")
.replace(/\n/g, "<br/>");
};
function makeSpaces(s) {
var arr = s.split('');
if (arr[0] == ' ') { arr[0] = "&nbsp;" }
for (var i = arr.length; --i; ) {
if (arr[i][0] == ' ' && arr[i-1] == ' ') {
arr[i-1] = arr[i-1] + arr[i];
arr[i] = '';
}
}
for (var i = arr.length; i--; ) {
if (arr[i].length > 1 && arr[i][0] == ' ') {
var spaces = arr[i].split('');
for (var j = spaces.length - 2; j >= 0; j -= 2) {
spaces[j] = '&nbsp;';
}
arr[i] = spaces.join('');
}
}
return arr.join('');
}
function properEscape(str) {
if (str.length == 0) return str;
str = str //.replace(/&/g, "&#38;")
.replace(/"/g, /*"*/ "&#34;")
.replace(/'/g, /*'*/ "&#39;")
.replace(/</g, "&#60;")
.replace(/>/g, "&#62;")
.replace(/\n/g, "<br/>");
var arr = str.split('<br/>');
for (var i = arr.length; i--; ) {
arr[i] = makeSpaces(arr[i]);
}
return arr.join('<br/>');
}
var toText = function(elmList) {
if (typeof elmList === "string") return properEscape(elmList);

View file

@ -274,7 +274,7 @@ var Signal = function() {
var button = function(name) {
var b = newElement('input');
b.type = "button";
b.value = Text.toText(name);
b.value = Foreign.JavaScript.castStringToJSString(name);
var press = Elm.Input(false);
addListener(b, 'click', function(e) {
Dispatcher.notify(press.id, true);