diff --git a/atom/api-docs.d.ts b/atom/api-docs.d.ts new file mode 100644 index 0000000000..a4fc19eea1 --- /dev/null +++ b/atom/api-docs.d.ts @@ -0,0 +1,107 @@ +// Type definitions for Atom API docs +// Project: https://github.com/atom/atom/blob/master/build/tasks/docs-task.coffee +// Definitions by: vvakame +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/* + How to generate. + $ git clone git@github.com:atom/atom.git + $ cd atom + $ npm install + $ cd build + $ npm install + $ grunt build-docs + $ cd ../ + $ ls -la la docs/output/api.json + api.json example https://gist.github.com/vvakame/10f8d2f3884affc32476 + */ + +declare module AtomDocTypes { + interface Metadata { + classes: { [className: string]: ClassInfo; }; + } + + interface ClassInfo { + name: string; + superClass: string; + visibility: string; + + filename: string; + srcUrl: string; + summary: string; + description: string; + examples: Example[]; + sections: Section[]; + + classMethods: ClassMethod[]; + classProperties: ClassProperty[]; + instanceMethods: InstanceMethod[]; + instanceProperties: InstanceProperty[]; + } + + interface Example { + description: string; + lang: string; + code: string; + raw: string; + } + + interface Section { + name: string; + description: string; + } + + interface ClassMethod { + name: string; + sectionName: string; + srcUrl: string; + visibility: string; + summary: string; + description: string; + arguments: Argument[]; + returnValues: ReturnValue[]; + } + + interface ClassProperty { + } + + interface InstanceMethod { + name: string; + sectionName: string; + srcUrl: string; + visibility: string; + summary: string; + description: string; + arguments: Argument[]; + returnValues: ReturnValue[]; + titledArguments: TitledArgument[]; + } + + interface InstanceProperty { + name: string; + sectionName: string; + srcUrl: string; + visibility: string; + summary: string; + description: string; + } + + interface Argument { + name: string; + description: string; + type: string; + isOptional: boolean; + children: Argument[]; + } + + interface TitledArgument { + title: string; + description: string; + arguments: Argument[]; + } + + interface ReturnValue { + type: string; + description: string; + } +} diff --git a/donna/donna-tests.ts b/donna/donna-tests.ts new file mode 100644 index 0000000000..a1695e42a2 --- /dev/null +++ b/donna/donna-tests.ts @@ -0,0 +1,81 @@ +/// + +import donna = require("donna"); +var metadata = donna.generateMetadata(['/path/to/my-module', '/path/to/another-module']); + +metadata = { + "files": { + "spec/metadata_templates/classes/class_with_prototype_properties.coffee": { + "objects": { + "3": { + "0": { + "type": "class", + "name": "TextBuffer", + "bindingType": null, + "classProperties": [], + "prototypeProperties": [ + [ + 4, + 9 + ], + [ + 11, + 11 + ] + ], + "doc": " Public: A mutable text container with undo/redo support and the ability to\nannotate logical regions in the text.\n\n ", + "range": [ + [ + 3, + 0 + ], + [ + 11, + 17 + ] + ] + } + }, + "4": { + "9": { + "name": "prop2", + "type": "primitive", + "range": [ + [ + 4, + 9 + ], + [ + 4, + 13 + ] + ], + "bindingType": "prototypeProperty" + } + }, + "11": { + "11": { + "name": "method2", + "bindingType": "prototypeProperty", + "type": "function", + "paramNames": [ + "a" + ], + "range": [ + [ + 11, + 11 + ], + [ + 11, + 16 + ] + ], + "doc": " Public: Takes an argument and does some stuff.\n\na - A {String}\n\nReturns {Boolean}. " + } + } + }, + "exports": {} + } + } +}; diff --git a/donna/donna.d.ts b/donna/donna.d.ts new file mode 100644 index 0000000000..fed09fa988 --- /dev/null +++ b/donna/donna.d.ts @@ -0,0 +1,34 @@ +// Type definitions for donna +// Project: https://github.com/atom/donna +// Definitions by: vvakame +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare module "donna" { + function generateMetadata(modules: string[]): DonnaTypes.Metadata; +} + +declare module DonnaTypes { + interface Metadata { + files: { [filePath: string]: File; }; + } + + interface File { + objects: { [line: number]: Line; }; + exports: any; + } + + interface Line { + [row: number]: Object; + } + + interface Object { + type: string; + name: string; + bindingType: string; + classProperties?: any[]; + prototypeProperties?: number[][]; + doc?: string; + range: number[][]; + + } +}