Skip to content

Commit

Permalink
TypeScript language support
Browse files Browse the repository at this point in the history
  • Loading branch information
remy committed Oct 7, 2012
1 parent 5139dd6 commit 3533237
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 1 deletion.
2 changes: 1 addition & 1 deletion package.json
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"name": "jsbin", "name": "jsbin",
"description": "Collaborative JavaScript Debugging App", "description": "Collaborative JavaScript Debugging App",
"main": "./lib/app", "main": "./lib/app",
"version": "3.0.11", "version": "3.0.12",
"preferGlobal": "true", "preferGlobal": "true",
"homepage": "http://jsbin.com", "homepage": "http://jsbin.com",
"bin": "./bin/jsbin", "bin": "./bin/jsbin",
Expand Down
1 change: 1 addition & 0 deletions public/js/editors/panel.js
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ var editorModes = {
html: 'htmlmixed', html: 'htmlmixed',
javascript: 'javascript', javascript: 'javascript',
css: 'css', css: 'css',
typescript: 'javascript',
markdown: 'markdown', markdown: 'markdown',
coffeescript: 'coffeescript', coffeescript: 'coffeescript',
less: 'css', less: 'css',
Expand Down
43 changes: 43 additions & 0 deletions public/js/processors/processor.js
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -81,6 +81,49 @@ var processors = jsbin.processors = {
return renderedCode; return renderedCode;
}); });
}, },
typescript: function (ready) {
return new Processor(jsbin.root + '/js/vendor/typescript.min.js', ready, function (source) {
var noop = function () {};
var outfile = {
source: "",
Write: function (s) {
this.source += s;
},
WriteLine: function (s) {
this.source += s + "\n";
},
Close: noop
};

var outerr = {
Write: noop,
WriteLine: noop,
Close: noop
};

var parseErrors = [];

var compiler = new TypeScript.TypeScriptCompiler(outfile, outerr);

compiler.setErrorCallback(function (start, len, message) {
parseErrors.push({ start: start, len: len, message: message });
});
compiler.parser.errorRecovery = true;

compiler.addUnit(source, 'jsbin.ts');
compiler.typeCheck();
compiler.reTypeCheck();
compiler.emit();

for (var i = 0, len = parseErrors.length; i < len; i++) {
console.log('Error Message: ' + parseErrors[i].message);
console.log('Error Start: ' + parseErrors[i].start);
console.log('Error Length: ' + parseErrors[i].len);
}

return outfile.source;
});
},
markdown: function (ready) { markdown: function (ready) {
return new Processor(jsbin.root + '/js/vendor/markdown.js', function () { return new Processor(jsbin.root + '/js/vendor/markdown.js', function () {
$.getScript(jsbin.root + '/js/vendor/codemirror2/markdown.js', ready); $.getScript(jsbin.root + '/js/vendor/codemirror2/markdown.js', ready);
Expand Down
27 changes: 27 additions & 0 deletions public/js/vendor/typescript.min.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions views/index.html
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -215,6 +215,7 @@
<a href="#coffeescript">CoffeeScript</a> <a href="#coffeescript">CoffeeScript</a>
<a href="#processing">Processing</a> <a href="#processing">Processing</a>
<a href="#traceur">Traceur</a> <a href="#traceur">Traceur</a>
<a href="#typescript">TypeScript</a>
<a href="#convert">Convert to JavaScript</a> <a href="#convert">Convert to JavaScript</a>
</div> </div>
</div> </div>
Expand Down

0 comments on commit 3533237

Please sign in to comment.