|
@@ -16,23 +16,26 @@ var require;
|
|
|
|
|
|
require = function (require) {
|
|
|
var scripts = document.getElementsByTagName("script");
|
|
|
- var src = scripts[ scripts.length - 1 ].src;
|
|
|
+ var me = scripts[scripts.length - 1];
|
|
|
+ var src = me.src;
|
|
|
// strip the last two elements from the URL
|
|
|
- // e.g. http://app.com/lib/script.js -> http://app.com/
|
|
|
+ // e.g. http://app.com/amber/support/amber.js -> http://app.com/amber
|
|
|
var amber_home = resolveViaDOM(src).replace(/\/[^\/]+\/[^\/]+$/, "");
|
|
|
- // strip the last element from the URL
|
|
|
- // e.g. http://app.com/index.html -> http://app.com/
|
|
|
- var document_home = window.location.href.replace(/\/[^\/]+$/, "");
|
|
|
+ // In case of nonstandard deployment, you can specify libraries placement directly ...
|
|
|
+ var library_home = me.hasAttribute('data-libs') && me.getAttribute('data-libs');
|
|
|
|
|
|
- // at the present moment, bower tries to have flat hierarchy,
|
|
|
- // which leads to two possible scenarios:
|
|
|
- // 1. amber itself was deployed via bower,
|
|
|
- // its libraries are next to it; document_home from above covers this
|
|
|
- // 2. amber was deployed in different fashion,
|
|
|
- // its libraries are included by bower locally; document_home is fixed below
|
|
|
- // The detection is done by looking for '/bower_components/' in amber path.
|
|
|
- if (!amber_home.match(/\/bower_components\//)) {
|
|
|
- document_home = amber_home;
|
|
|
+ // ... otherwise, this heuristics is used:
|
|
|
+ if (!library_home) {
|
|
|
+ // At the present moment, bower tries to have flat hierarchy,
|
|
|
+ // which leads to two possible scenarios:
|
|
|
+ // 1. amber itself was deployed via bower,
|
|
|
+ // its libraries are at the same bower dir
|
|
|
+ // where amber itself is placed
|
|
|
+ // 2. amber was deployed in different fashion,
|
|
|
+ // its libraries are included by bower locally, inside amber
|
|
|
+ // The detection is done by looking for '/bower_components/' in amber path.
|
|
|
+ var match = amber_home.match(/^(.*\/bower_components)\//);
|
|
|
+ library_home = match ? match[1] : amber_home + '/bower_components';
|
|
|
}
|
|
|
|
|
|
function resolveViaDOM(url) {
|
|
@@ -46,12 +49,12 @@ require = function (require) {
|
|
|
'amber': amber_home + '/support',
|
|
|
'amber_vm': amber_home + '/support',
|
|
|
'amber_css': amber_home + '/css',
|
|
|
- 'amber_lib': document_home + '/bower_components',
|
|
|
+ 'amber_lib': library_home,
|
|
|
'amber_inc': amber_home + '/support',
|
|
|
'amber_core': amber_home + '/js',
|
|
|
'amber_core/_source': amber_home + '/st',
|
|
|
'amber_html': amber_home,
|
|
|
- 'jquery': document_home + '/bower_components/jquery/jquery.min',
|
|
|
+ 'jquery': library_home + '/jquery/jquery.min',
|
|
|
'jquery-ui': amber_home + '/support/jQuery/jquery-ui-1.8.24.custom.min'
|
|
|
},
|
|
|
map: {
|