Globlization and Object.system.load

# Roozbeh Pournader (14 years ago)

I was talking with Nebojša about the Object.system.load interface for loading globalization, thinking from the user side.

Brendan's email suggested something like this:

Object.system.load = function(name, callback) { if (name === '@g11n') { callback(v8Locale); } };

That would make something like this the minimum code needed to use the module:

var g11n; Object.system.load("@g11n", function (g11n_module) { g11n = g11n_module; });

What if we define load to be something like the following?

Object.system.load = function(name, callback) { if (name === '@g11n') { if (callback) { callback(v8Locale); } else { return v8Locale; } } };

That way, a user who can afford the delay, or know that this is immediate in Chrome, can simply do:

var g11n = Object.system.load("@g11n");

While the users who want the callback, can call it using the proper method.

Roozbeh

# Brendan Eich (14 years ago)

I didn't make up load from whole cloth, there's a proposal at

harmony:module_loaders

Module people should weigh in.

# Roozbeh Pournader (14 years ago)

On Thu, Nov 17, 2011 at 3:08 PM, Roozbeh Pournader <roozbeh at google.com> wrote:

That would make something like this the minimum code needed to use the module:

var g11n; Object.system.load("@g11n", function (g11n_module) {   g11n = g11n_module; });

I guess I was wrong about the minimum code. The minimum code is something like this:

Object.system.load("@g11n", function (g11n) { // put all the code that uses g11n in here });

I actually like this. I think I should just take back my comment...

Roozbeh

# David Herman (14 years ago)

We intend to have a synchronous API for accessing the built-in modules (those beginning with "@" in their URL), as well as a synchronous way to access modules that have already been loaded. This went by briefly in July:

https://mail.mozilla.org/pipermail/es-discuss/2011-July/015929.html

I'm behind in work on fleshing out the API. I'll get back on this ASAP and update the list.

# David Herman (14 years ago)

On Nov 17, 2011, at 3:48 PM, Roozbeh Pournader wrote:

On Thu, Nov 17, 2011 at 3:08 PM, Roozbeh Pournader <roozbeh at google.com> wrote:

That would make something like this the minimum code needed to use the module:

var g11n; Object.system.load("@g11n", function (g11n_module) { g11n = g11n_module; });

I guess I was wrong about the minimum code. The minimum code is something like this:

Object.system.load("@g11n", function (g11n) { // put all the code that uses g11n in here });

I actually like this. I think I should just take back my comment...

I agreed with you before. :) When you know for sure that it can't block, you should have a synchronous API. Something like:

var g11n = Object.system.loaded["@g11n"];