sstephenson/eco — Issue #37: stdin rendering incorrect
Author: hcliff
Created: 2012-01-22 23:07:12+00:00
State: open

version 1.1.0-rc-3

eco -p spling.eco gives this:

```javascript
(function() {
this.ecoTemplates || (this.ecoTemplates = {});
this.ecoTemplates["spling"] = function(__obj) {
if (!__obj) __obj = {};
var __out = [], __capture = function(callback) {
var out = __out, result;
__out = [];
callback.call(this);
result = __out.join('');
__out = out;
return __safe(result);
}, __sanitize = function(value) {
if (value && value.ecoSafe) {
return value;
} else if (typeof value !== 'undefined' && value != null) {
return __escape(value);
} else {
return '';
}
}, __safe, __objSafe = __obj.safe, __escape = __obj.escape;
__safe = __obj.safe = function(value) {
if (value && value.ecoSafe) {
return value;
} else {
if (!(typeof value !== 'undefined' && value != null)) value = '';
var result = new String(value);
result.ecoSafe = true;
return result;
}
};
if (!__escape) {
__escape = __obj.escape = function(value) {
return ('' + value)
.replace(/&/g, '&')
.replace(//g, '>')
.replace(/"/g, '"');
};
}
(function() {
(function() {

if (model.get("resizeMode")) {
__out.push('\n

\n');
}

__out.push('\n

\n

\n');

__out.push(__sanitize(model.get("Title")));

__out.push('\n');

}).call(this);

}).call(__obj);
__obj.safe = __objSafe, __obj.escape = __escape;
return __out.join('');
};
}).call(this);
```

however:

eco -s, and then giving the file contents with the stdin gives this:

```javascript
function(__obj) {
if (!__obj) __obj = {};
var __out = [], __capture = function(callback) {
var out = __out, result;
__out = [];
callback.call(this);
result = __out.join('');
__out = out;
return __safe(result);
}, __sanitize = function(value) {
if (value && value.ecoSafe) {
return value;
} else if (typeof value !== 'undefined' && value != null) {
return __escape(value);
} else {
return '';
}
}, __safe, __objSafe = __obj.safe, __escape = __obj.escape;
__safe = __obj.safe = function(value) {
if (value && value.ecoSafe) {
return value;
} else {
if (!(typeof value !== 'undefined' && value != null)) value = '';
var result = new String(value);
result.ecoSafe = true;
return result;
}
};
if (!__escape) {
__escape = __obj.escape = function(value) {
return ('' + value)
.replace(/&/g, '&')
.replace(//g, '>')
.replace(/"/g, '"');
};
}
(function() {
(function() {

if (model.get("resizeMode")) {
__out.push('\n

\n');
}

__out.push('\n

\n

\n');

__out.push(__sanitize(model.get("Title")));

__out.push('\n\n');

}).call(this);

}).call(__obj);
__obj.safe = __objSafe, __obj.escape = __escape;
return __out.join('');
}
```

(the overall call() is missing)

Not being a node person I have no idea what's causing this. But it stops the latter working in the browser.

Thanks!