So, I would like the following and the use case is Rez.Strings and method resolution.
I went into some kind of spam trap at the forums, so I made a snippet instead: https://gitlab.com/-/snippets/2400797
The rules are simple, any weird chars are discarded or normalized, so e-acute becomes e, chars which are not able to symbolized are discarded and that's it. Eg:
- "foo bar" becomes :foo_bar
- "foo bar baz." becomes :foo_bar_baz
- " foo" becomes :foo
- "_foo " becomes :_foo
- "_foo _foo" becomes :_foo__foo"
- "foo" becomes :foo
- "résumé" becomes :resume
- "@you" becomes :you
- "+you" becomes :you
- "" becomes throw new exception because really
It kinda makes sense to do this, because symbols can be Stringified.
var x = 0;
the symbol :x can now be stringified to and becomes "x", as discussed here: https://forums.garmin.com/developer/connect-iq/f/discussion/301701/struggling-a-bit-with-views-and-how-stuff-gets-on-the-screen/1460994#1460994
Original OP:
The use case is Rez.Strings, but it translates to other bits and pieces as well.
var resource = Ui.loadResource(getAttribute(Rez.Strings, :foo));
With Rez.Layouts you can sorta do this, because the layout is a function, so you can do this:
var layout = :MyLayout; var method = new Lang.Method(Rez.Layouts, layout); setLayout(method.invoke(dc));
Now you can for example ask Rez.Strings:
if (Rez.Strings has :foo) { Ui.loadResource(getAttribute(Rez.Strings, :foo)) } // This ofc translates to every module or class