Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1427x 1427x 1427x 1x 1x 3165x 1638x 905x 2432x 1x 1x 298x 298x 298x 298x 1x 1x 1x 1x 270x 270x 78x 78x 78x 270x 1x 1x 1427x 1427x 270x 270x 1157x 1157x 1427x 1157x 1157x 1427x 47x 47x 47x 1157x 1157x 1427x 11x 11x 11x 1157x 1157x 1427x 505x 505x 505x 1157x 1x 1x | import {MethodDefinition} from "./method_definition"; import {StructureNode} from "../nodes"; import * as Structures from "../3_structures/structures"; import {MethodDef} from "../2_statements/statements"; import {Visibility} from "../4_file_information/visibility"; import {IMethodDefinitions} from "./_method_definitions"; import {IMethodDefinition} from "./_method_definition"; import {SyntaxInput} from "../5_syntax/_syntax_input"; export class MethodDefinitions implements IMethodDefinitions { private readonly all: {[index: string]: IMethodDefinition} = {}; public constructor(node: StructureNode, input: SyntaxInput) { this.all = {}; this.parse(node, input); } public* getAll(): Generator<IMethodDefinition, void, undefined> { for (const a in this.all) { yield this.all[a]; } } public getByName(name: string | undefined): IMethodDefinition | undefined { if (name === undefined) { return undefined; } return this.all[name.toUpperCase()]; } /////////////////////// private parseInterface(node: StructureNode, input: SyntaxInput) { const defs = node.findAllStatements(MethodDef); for (const def of defs) { const m = new MethodDefinition(def, Visibility.Public, input); this.all[m.getName().toUpperCase()] = m; } } private parse(node: StructureNode, input: SyntaxInput) { const idef = node.findDirectStructure(Structures.Interface); if (idef) { return this.parseInterface(node, input); } const cdef = node.findDirectStructure(Structures.ClassDefinition); if (!cdef) { throw new Error("MethodDefinitions, expected ClassDefinition as part of input node"); } const pri = cdef.findDirectStructure(Structures.PrivateSection); for (const def of pri?.findAllStatements(MethodDef) || []) { const m = new MethodDefinition(def, Visibility.Private, input); this.all[m.getName().toUpperCase()] = m; } const pro = node.findDirectStructure(Structures.ProtectedSection); for (const def of pro?.findAllStatements(MethodDef) || []) { const m = new MethodDefinition(def, Visibility.Protected, input); this.all[m.getName().toUpperCase()] = m; } const pub = node.findDirectStructure(Structures.PublicSection); for (const def of pub?.findAllStatements(MethodDef) || []) { const m = new MethodDefinition(def, Visibility.Public, input); this.all[m.getName().toUpperCase()] = m; } } } |