@@ -5,7 +5,7 @@ import { Scope, ScopeType } from "../../discovery/Scope";
5
5
import { Element , isInstanceOfElement } from "../../discovery/Element" ;
6
6
import { ComplexObject } from "../../discovery/object/ComplexObject" ;
7
7
8
- export class TypeResolverInference extends TypeResolver {
8
+ export class TypeResolverInference extends TypeResolver {
9
9
10
10
private wrapperElementIsRelation : Map < string , Relation >
11
11
@@ -19,9 +19,9 @@ export class TypeResolverInference extends TypeResolver{
19
19
const typingsType = elementTypeToTypingType ( element . type )
20
20
21
21
if ( typingsType ) {
22
- this . elementTyping . set ( element , {
23
- type : typingsType
24
- } )
22
+ const probabilities = new Map ( )
23
+ probabilities . set ( { type : typingsType } , 1 )
24
+ this . elementTyping . set ( element , probabilities )
25
25
somethingSolved = true
26
26
}
27
27
}
@@ -54,9 +54,10 @@ export class TypeResolverInference extends TypeResolver{
54
54
55
55
// TODO find out wether function property or regular property
56
56
57
+ const probabilities = new Map ( )
58
+
57
59
// find best matching object
58
- let bestScore = - 1
59
- let bestMatch = objects [ 0 ]
60
+ let total = 0
60
61
for ( const object of objects ) {
61
62
let score = 0
62
63
for ( const prop of properties ) {
@@ -65,22 +66,23 @@ export class TypeResolverInference extends TypeResolver{
65
66
}
66
67
}
67
68
68
- if ( score > bestScore ) {
69
- bestScore = score
70
- bestMatch = object
69
+ // atleast score of one?
70
+ if ( score > 0 ) {
71
+ probabilities . set ( < ComplexTyping > {
72
+ type : TypingType . Object ,
73
+ name : object . name ,
74
+ import : object . import ,
75
+ } , score )
76
+ total += score
71
77
}
72
78
}
73
79
74
- if ( bestScore === 0 ) {
75
- continue
80
+ for ( const obj of probabilities . keys ( ) ) {
81
+ probabilities . set ( obj , probabilities . get ( obj ) / total )
76
82
}
77
83
78
- this . elementTyping . set ( element , < ComplexTyping > {
79
- type : TypingType . Object ,
80
- name : bestMatch . name ,
81
- import : bestMatch . import ,
82
- } )
83
- console . log ( element , this . elementTyping . get ( element ) )
84
+ this . elementTyping . set ( element , probabilities )
85
+ // console.log(element, this.elementTyping.get(element))
84
86
somethingSolved = true
85
87
}
86
88
// console.log(scopes)
0 commit comments