Skip to content
This repository has been archived by the owner on Oct 10, 2018. It is now read-only.

Commit

Permalink
feat(document-outline): show getters and setters in outline (#314)
Browse files Browse the repository at this point in the history
Closes #257.
  • Loading branch information
buehler committed Oct 4, 2017
1 parent 14d1af3 commit 4748204
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 17 deletions.
Expand Up @@ -2,9 +2,11 @@ import {
ClassDeclaration,
Declaration,
FunctionDeclaration,
GetterDeclaration,
InterfaceDeclaration,
MethodDeclaration,
PropertyDeclaration,
SetterDeclaration,
VariableDeclaration,
} from 'typescript-parser';
import { stringTemplate } from 'typescript-parser/utilities/StringTemplate';
Expand All @@ -17,9 +19,9 @@ const fileTemplate = stringTemplate`./src/extension/assets/icons/declarations/${

/**
* Function to calculate the displayed name of the declaration structure item.
*
* @param {Declaration} declaration
* @returns {string}
*
* @param {Declaration} declaration
* @returns {string}
*/
function getDeclarationLabel(declaration: Declaration): string {
if (
Expand All @@ -41,12 +43,20 @@ function getDeclarationLabel(declaration: Declaration): string {
return declaration.name + (declaration.typeParameters ? `<${declaration.typeParameters.join(', ')}>` : '');
}

if (
declaration instanceof GetterDeclaration ||
declaration instanceof SetterDeclaration
) {
return `${declaration instanceof GetterDeclaration ? 'get' : 'set'}() ${declaration.name}` +
`${declaration.type ? `: ${declaration.type}` : ''}`;
}

return declaration.name;
}

/**
* Structure item that represents a typescript declaration of any way.
*
*
* @export
* @class DeclarationStructureTreeItem
* @extends {BaseStructureTreeItem}
Expand Down Expand Up @@ -100,6 +110,7 @@ export class DeclarationStructureTreeItem extends BaseStructureTreeItem {
this.declaration instanceof InterfaceDeclaration
) {
return [
...this.declaration.accessors.map(p => new DeclarationStructureTreeItem(p, this.context)),
...this.declaration.properties.map(p => new DeclarationStructureTreeItem(p, this.context)),
...this.declaration.methods.map(m => new DeclarationStructureTreeItem(m, this.context)),
];
Expand Down
31 changes: 18 additions & 13 deletions src/extension/utilities/utilityFunctions.ts
Expand Up @@ -5,12 +5,14 @@ import {
DefaultDeclaration,
EnumDeclaration,
FunctionDeclaration,
GetterDeclaration,
Import,
InterfaceDeclaration,
MethodDeclaration,
ModuleDeclaration,
ParameterDeclaration,
PropertyDeclaration,
SetterDeclaration,
SymbolSpecifier,
TypeAliasDeclaration,
VariableDeclaration,
Expand All @@ -19,12 +21,12 @@ import { CompletionItemKind } from 'vscode';

/**
* String-Sort function.
*
*
* @export
* @param {string} strA
* @param {string} strB
* @param {('asc' | 'desc')} [order='asc']
* @returns {number}
* @param {string} strA
* @param {string} strB
* @param {('asc' | 'desc')} [order='asc']
* @returns {number}
*/
export function stringSort(strA: string, strB: string, order: 'asc' | 'desc' = 'asc'): number {
let result: number = 0;
Expand All @@ -41,12 +43,12 @@ export function stringSort(strA: string, strB: string, order: 'asc' | 'desc' = '

/**
* Order imports by library name.
*
*
* @export
* @param {Import} i1
* @param {Import} i2
* @param {('asc' | 'desc')} [order='asc']
* @returns {number}
* @param {Import} i1
* @param {Import} i2
* @param {('asc' | 'desc')} [order='asc']
* @returns {number}
*/
export function importSort(i1: Import, i2: Import, order: 'asc' | 'desc' = 'asc'): number {
const strA = i1.libraryName.toLowerCase();
Expand All @@ -69,10 +71,10 @@ export function specifierSort(i1: SymbolSpecifier, i2: SymbolSpecifier): number

/**
* Returns the item kind for a given declaration.
*
*
* @export
* @param {Declaration} declaration
* @returns {CompletionItemKind}
* @param {Declaration} declaration
* @returns {CompletionItemKind}
*/
export function getItemKind(declaration: Declaration): CompletionItemKind {
switch (true) {
Expand Down Expand Up @@ -103,6 +105,9 @@ export function getItemKind(declaration: Declaration): CompletionItemKind {
return variable.isConst ?
CompletionItemKind.Constant :
CompletionItemKind.Variable;
case declaration instanceof GetterDeclaration:
case declaration instanceof SetterDeclaration:
return CompletionItemKind.Method;
default:
return CompletionItemKind.Reference;
}
Expand Down

0 comments on commit 4748204

Please sign in to comment.