namespace.jsmを使ってみた

git-svn-id: http://www.cozmixng.org/repos/piro/treestyletab/trunk@6681 599a83e7-65a4-db11-8015-0010dcdd6dc2
This commit is contained in:
piro 2010-06-22 09:38:42 +00:00
parent 0ae27f9716
commit 0baac4cc62
5 changed files with 60 additions and 12 deletions

View File

@ -1,5 +1,6 @@
var EXPORTED_SYMBOLS = ['window'];
var window = {};
Components.utils.import('resource://treestyletab-modules/namespace.jsm');
var window = getNamespaceFor('piro.sakura.ne.jp');
/*
"getBoxObjectFor()" compatibility library for Firefox 3.6 or later

46
modules/namespace.jsm Normal file
View File

@ -0,0 +1,46 @@
/*
Shared Namespace Library for JavaScript Code Modules
Usage:
Components.utils.import('resource://my-modules/namespace.jsm');
var namespace = getNamespaceFor('mylibrary');
namespace.func1 = function() { ... };
namespace.func2 = function() { ... };
var EXPORTED_SYMBOLS = ['func1', 'func2'];
var func1 = namespace.func1;
var func2 = namespace.func2;
lisence: The MIT License, Copyright (c) 2010 SHIMODA "Piro" Hiroshi
http://www.cozmixng.org/repos/piro/fx3-compatibility-lib/trunk/license.txt
original:
http://www.cozmixng.org/repos/piro/fx3-compatibility-lib/trunk/namespace.js
*/
var EXPORTED_SYMBOLS = ['getNamespaceFor'];
const Cc = Components.classes;
const Ci = Components.interfaces;
const currentRevision = 1;
var hiddenWindow = Cc['@mozilla.org/appshell/appShellService;1']
.getService(Ci.nsIAppShellService)
.hiddenDOMWindow;
if (!('piro.sakura.ne.jp' in hiddenWindow))
hiddenWindow['piro.sakura.ne.jp'] = {};
var namespaces = hiddenWindow['piro.sakura.ne.jp'].sharedNameSpaces || {};
if (!('sharedNameSpaces' in hiddenWindow['piro.sakura.ne.jp']))
hiddenWindow['piro.sakura.ne.jp'].sharedNameSpaces = namespaces;
function getNamespaceFor(aName)
{
if (!aName)
throw new Error('you must specify the name of the namespace!');
if (!(aName in namespaces))
namespaces[aName] = {};
return namespaces[aName];
}

View File

@ -1,5 +1,6 @@
var EXPORTED_SYMBOLS = ['window'];
var window = {};
Components.utils.import('resource://treestyletab-modules/namespace.jsm');
var window = getNamespaceFor('piro.sakura.ne.jp');
/*
Preferences Library

View File

@ -1,5 +1,6 @@
var EXPORTED_SYMBOLS = ['window'];
var window = {};
Components.utils.import('resource://treestyletab-modules/namespace.jsm');
var window = getNamespaceFor('piro.sakura.ne.jp');
/*
string bundle utility

View File

@ -38,17 +38,16 @@ var EXPORTED_SYMBOLS = ['TreeStyleTabUtils'];
var Cc = Components.classes;
var Ci = Components.interfaces;
var prefs = {};
Components.utils.import('resource://treestyletab-modules/prefs.js', prefs);
prefs = prefs.window['piro.sakura.ne.jp'].prefs;
Components.utils.import('resource://treestyletab-modules/prefs.js');
Components.utils.import('resource://treestyletab-modules/boxObject.js');
Components.utils.import('resource://treestyletab-modules/stringBundle.js');
var boxObject = {};
Components.utils.import('resource://treestyletab-modules/boxObject.js', boxObject);
boxObject = boxObject.window['piro.sakura.ne.jp'].boxObject;
Components.utils.import('resource://treestyletab-modules/namespace.jsm');
var window = getNamespaceFor('piro.sakura.ne.jp');
var stringBundle = {};
Components.utils.import('resource://treestyletab-modules/stringBundle.js', stringBundle);
stringBundle = stringBundle.window['piro.sakura.ne.jp'].stringBundle;
var prefs = window['piro.sakura.ne.jp'].prefs;
var boxObject = window['piro.sakura.ne.jp'].boxObject;
var stringBundle = window['piro.sakura.ne.jp'].stringBundle;
var TreeStyleTabUtils = {
tabsHash : null,