logo
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
use std::collections::HashMap;

pub struct Field;

pub struct ComponentBuilder {
    // static
    name_cache: HashMap<String, String>, // = HashMap<String,String>::new();
    // static
    next_id: u32,
}

impl ComponentBuilder {
    // // static
    // pub fn build(&self) -> Vec<Field> {
    //     let pos = Context::currentPos();
    //     let cl = Context::getLocalClass().get();

    //     let name = Context::makeExpr(self.getComponentName(cl), pos);
    //     // let componentType = TPath({pack: cl.pack, name: cl.name, params: []});

    //     // let fields = Macros.buildFields(macro {
    //     //     let public__static__inline__NAME = $name;
    //     // });

    //     // // Only override get_name if this component directly extends a componentBase and creates a
    //     // // new namespace
    //     // if (extendsComponentBase(cl)) {
    //     //     fields = fields.concat(Macros.buildFields(macro {
    //     //         fn override__private__get_name () ->String {
    //     //             return $name;
    //     //         }
    //     //     }));
    //     // }

    //     // return fields.concat(Context.getBuildFields());
    //     unimplemented!()
    // }

    // static
    // fn getComponentName(&self, cl: ClassType) -> String {
    //     // Traverse up to the last non-component base
    //     loop {
    //         if Self::extendsComponentBase(cl) {
    //             break;
    //         }
    //         cl = cl.superClass.t.get();
    //     }

    //     // Look up the ID, otherwise generate one
    //     let fullName = cl.pack.concat([cl.name]).join(".");
    //     let name = self._nameCache.get(fullName);
    //     if name.is_none() {
    //         name = cl.name + "_" + self._nextId;
    //         self._nameCache.set(fullName, name);
    //         self._nextId += 1;
    //     }

    //     name
    // }

    // // static
    // fn extendsComponentBase(cl: ClassType) {
    //     let superClass = cl.superClass.t.get();

    //     superClass.meta.has(":componentBase")
    // }
}