From e21ed3a6967b064a499ab398fd7130b6200ca33d Mon Sep 17 00:00:00 2001 From: nightwing Date: Sat, 29 Apr 2017 19:27:55 +0400 Subject: [PATCH] include classes in javascript outline --- plugins/c9.ide.language.javascript/outline.js | 12 +++++++++++- plugins/c9.ide.language.javascript/outline_test.js | 4 ++++ plugins/c9.ide.language.javascript/test/test1.js | 8 +++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/plugins/c9.ide.language.javascript/outline.js b/plugins/c9.ide.language.javascript/outline.js index 1341bdeb..044e1db4 100644 --- a/plugins/c9.ide.language.javascript/outline.js +++ b/plugins/c9.ide.language.javascript/outline.js @@ -86,7 +86,7 @@ var outlineSync = outlineHandler.outlineSync = function(doc, node, includeProps) return this; }, // x : function(...) { ... } -> name is x - 'PropertyInit(x, Function(name, fargs, body))', function(b) { + 'PropertyInit(x, Function(name, fargs, body))', 'Method(x, Function(name, fargs, body))', function(b) { results.push({ icon: 'method', name: b.x.value + fargsToString(b.fargs), @@ -153,6 +153,16 @@ var outlineSync = outlineHandler.outlineSync = function(doc, node, includeProps) }); return this; }, + 'Class(x, y, body)', function(b) { + results.push({ + icon: 'event', + name: b.x.value + (b.y.value ? " extends " + b.y.value : ""), + pos: this.getPos(), + displayPos: b.x.getPos(), + items: b.body && outlineSync(doc, b.body, includeProps) + }); + return this; + }, /* UNDONE: callbacks in outline // intelligently name callback functions for method calls // setTimeout(function() { ... }, 200) -> name is setTimeout [callback] diff --git a/plugins/c9.ide.language.javascript/outline_test.js b/plugins/c9.ide.language.javascript/outline_test.js index 705cbccf..e64055d6 100644 --- a/plugins/c9.ide.language.javascript/outline_test.js +++ b/plugins/c9.ide.language.javascript/outline_test.js @@ -5,6 +5,7 @@ if (typeof define === "undefined") { require("amd-loader"); require("../../test/setup_paths"); + require("c9/inline-mocha")(module); } function outlineSync(handler, document, node) { @@ -35,6 +36,9 @@ define(function(require, exports, module) { assert.equal(outline[1].items[0].name, 'nested(c)'); assert.equal(outline[2].name, 'someFunction(a, b)'); assert.equal(outline[3].name, 'someFunction.bla()'); + assert.equal(outline[4].name, 'SomeClass'); + assert.equal(outline[4].items[0].name, 'method(x)'); + assert.equal(outline.length, 5); done(); }); diff --git a/plugins/c9.ide.language.javascript/test/test1.js b/plugins/c9.ide.language.javascript/test/test1.js index 074e94a5..ca948fc9 100644 --- a/plugins/c9.ide.language.javascript/test/test1.js +++ b/plugins/c9.ide.language.javascript/test/test1.js @@ -12,4 +12,10 @@ function simpleFunctionNested(a, b) { someFunction.bla = function() { }; -})(); \ No newline at end of file +})(); + +class SomeClass { + method(x) { + + } +} \ No newline at end of file