From 5143e7bf065a3cbdf8400cf095b653d51bc83b8f Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Fri, 6 Jan 2012 18:10:47 -0800 Subject: feat(module): new module loader --- Rakefile | 23 +++ angularFiles.js | 1 + docs/content/api/angular.module.ngdoc | 54 ------- .../guide/dev_guide.bootstrap.auto_bootstrap.ngdoc | 91 +++-------- .../dev_guide.bootstrap.manual_bootstrap.ngdoc | 2 +- docs/content/guide/dev_guide.bootstrap.ngdoc | 8 +- ...dev_guide.compiler.understanding_compiler.ngdoc | 3 +- .../guide/dev_guide.di.understanding_di.ngdoc | 2 +- .../guide/dev_guide.di.using_di_controllers.ngdoc | 4 +- docs/content/guide/dev_guide.forms.ngdoc | 14 +- docs/content/guide/dev_guide.i18n.ngdoc | 4 +- docs/content/guide/dev_guide.overview.ngdoc | 20 +-- docs/content/guide/dev_guide.templates.ngdoc | 4 +- docs/content/misc/downloading.ngdoc | 4 +- docs/content/misc/started.ngdoc | 11 +- docs/content/tutorial/step_00.ngdoc | 14 +- docs/content/tutorial/step_02.ngdoc | 3 +- docs/content/tutorial/step_07.ngdoc | 3 +- docs/src/templates/doc_widgets.js | 70 ++++----- docs/src/templates/docs.js | 7 +- docs/src/templates/index.html | 3 +- example/personalLog/personalLog.html | 4 +- example/temp.html | 4 +- i18n/e2e/localeTest_cs.html | 4 +- i18n/e2e/localeTest_de.html | 4 +- i18n/e2e/localeTest_en.html | 4 +- i18n/e2e/localeTest_es.html | 4 +- i18n/e2e/localeTest_sk.html | 4 +- i18n/e2e/localeTest_zh.html | 4 +- i18n/locale/angular-locale_am-et.js | 6 +- i18n/locale/angular-locale_am.js | 6 +- i18n/locale/angular-locale_ar-eg.js | 6 +- i18n/locale/angular-locale_ar.js | 6 +- i18n/locale/angular-locale_bg-bg.js | 6 +- i18n/locale/angular-locale_bg.js | 6 +- i18n/locale/angular-locale_bn-bd.js | 6 +- i18n/locale/angular-locale_bn.js | 6 +- i18n/locale/angular-locale_ca-es.js | 6 +- i18n/locale/angular-locale_ca.js | 6 +- i18n/locale/angular-locale_cs-cz.js | 6 +- i18n/locale/angular-locale_cs.js | 6 +- i18n/locale/angular-locale_da-dk.js | 6 +- i18n/locale/angular-locale_da.js | 6 +- i18n/locale/angular-locale_de-at.js | 6 +- i18n/locale/angular-locale_de-be.js | 6 +- i18n/locale/angular-locale_de-ch.js | 6 +- i18n/locale/angular-locale_de-de.js | 6 +- i18n/locale/angular-locale_de-lu.js | 6 +- i18n/locale/angular-locale_de.js | 6 +- i18n/locale/angular-locale_el-gr.js | 6 +- i18n/locale/angular-locale_el-polyton.js | 6 +- i18n/locale/angular-locale_el.js | 6 +- i18n/locale/angular-locale_en-as.js | 6 +- i18n/locale/angular-locale_en-au.js | 6 +- i18n/locale/angular-locale_en-dsrt-us.js | 6 +- i18n/locale/angular-locale_en-dsrt.js | 6 +- i18n/locale/angular-locale_en-gb.js | 6 +- i18n/locale/angular-locale_en-gu.js | 6 +- i18n/locale/angular-locale_en-ie.js | 6 +- i18n/locale/angular-locale_en-in.js | 6 +- i18n/locale/angular-locale_en-iso.js | 6 +- i18n/locale/angular-locale_en-mh.js | 6 +- i18n/locale/angular-locale_en-mp.js | 6 +- i18n/locale/angular-locale_en-sg.js | 6 +- i18n/locale/angular-locale_en-um.js | 6 +- i18n/locale/angular-locale_en-us.js | 6 +- i18n/locale/angular-locale_en-vi.js | 6 +- i18n/locale/angular-locale_en-za.js | 6 +- i18n/locale/angular-locale_en-zz.js | 6 +- i18n/locale/angular-locale_en.js | 6 +- i18n/locale/angular-locale_es-es.js | 6 +- i18n/locale/angular-locale_es.js | 6 +- i18n/locale/angular-locale_et-ee.js | 6 +- i18n/locale/angular-locale_et.js | 6 +- i18n/locale/angular-locale_eu-es.js | 6 +- i18n/locale/angular-locale_eu.js | 6 +- i18n/locale/angular-locale_fa-ir.js | 6 +- i18n/locale/angular-locale_fa.js | 6 +- i18n/locale/angular-locale_fi-fi.js | 6 +- i18n/locale/angular-locale_fi.js | 6 +- i18n/locale/angular-locale_fil-ph.js | 6 +- i18n/locale/angular-locale_fil.js | 6 +- i18n/locale/angular-locale_fr-bl.js | 6 +- i18n/locale/angular-locale_fr-ca.js | 6 +- i18n/locale/angular-locale_fr-fr.js | 6 +- i18n/locale/angular-locale_fr-gp.js | 6 +- i18n/locale/angular-locale_fr-mc.js | 6 +- i18n/locale/angular-locale_fr-mf.js | 6 +- i18n/locale/angular-locale_fr-mq.js | 6 +- i18n/locale/angular-locale_fr-re.js | 6 +- i18n/locale/angular-locale_fr.js | 6 +- i18n/locale/angular-locale_gl-es.js | 6 +- i18n/locale/angular-locale_gl.js | 6 +- i18n/locale/angular-locale_gsw-ch.js | 6 +- i18n/locale/angular-locale_gsw.js | 6 +- i18n/locale/angular-locale_gu-in.js | 6 +- i18n/locale/angular-locale_gu.js | 6 +- i18n/locale/angular-locale_he-il.js | 6 +- i18n/locale/angular-locale_he.js | 6 +- i18n/locale/angular-locale_hi-in.js | 6 +- i18n/locale/angular-locale_hi.js | 6 +- i18n/locale/angular-locale_hr-hr.js | 6 +- i18n/locale/angular-locale_hr.js | 6 +- i18n/locale/angular-locale_hu-hu.js | 6 +- i18n/locale/angular-locale_hu.js | 6 +- i18n/locale/angular-locale_id-id.js | 6 +- i18n/locale/angular-locale_id.js | 6 +- i18n/locale/angular-locale_in.js | 6 +- i18n/locale/angular-locale_is-is.js | 6 +- i18n/locale/angular-locale_is.js | 6 +- i18n/locale/angular-locale_it-it.js | 6 +- i18n/locale/angular-locale_it.js | 6 +- i18n/locale/angular-locale_iw.js | 6 +- i18n/locale/angular-locale_ja-jp.js | 6 +- i18n/locale/angular-locale_ja.js | 6 +- i18n/locale/angular-locale_kn-in.js | 6 +- i18n/locale/angular-locale_kn.js | 6 +- i18n/locale/angular-locale_ko-kr.js | 6 +- i18n/locale/angular-locale_ko.js | 6 +- i18n/locale/angular-locale_ln-cd.js | 6 +- i18n/locale/angular-locale_ln.js | 6 +- i18n/locale/angular-locale_lt-lt.js | 6 +- i18n/locale/angular-locale_lt.js | 6 +- i18n/locale/angular-locale_lv-lv.js | 6 +- i18n/locale/angular-locale_lv.js | 6 +- i18n/locale/angular-locale_ml-in.js | 6 +- i18n/locale/angular-locale_ml.js | 6 +- i18n/locale/angular-locale_mo.js | 6 +- i18n/locale/angular-locale_mr-in.js | 6 +- i18n/locale/angular-locale_mr.js | 6 +- i18n/locale/angular-locale_ms-my.js | 6 +- i18n/locale/angular-locale_ms.js | 6 +- i18n/locale/angular-locale_mt-mt.js | 6 +- i18n/locale/angular-locale_mt.js | 6 +- i18n/locale/angular-locale_nl-nl.js | 6 +- i18n/locale/angular-locale_nl.js | 6 +- i18n/locale/angular-locale_no.js | 6 +- i18n/locale/angular-locale_or-in.js | 6 +- i18n/locale/angular-locale_or.js | 6 +- i18n/locale/angular-locale_pl-pl.js | 6 +- i18n/locale/angular-locale_pl.js | 6 +- i18n/locale/angular-locale_pt-br.js | 6 +- i18n/locale/angular-locale_pt-pt.js | 6 +- i18n/locale/angular-locale_pt.js | 6 +- i18n/locale/angular-locale_ro-ro.js | 6 +- i18n/locale/angular-locale_ro.js | 6 +- i18n/locale/angular-locale_ru-ru.js | 6 +- i18n/locale/angular-locale_ru.js | 6 +- i18n/locale/angular-locale_sk-sk.js | 6 +- i18n/locale/angular-locale_sk.js | 6 +- i18n/locale/angular-locale_sl-si.js | 6 +- i18n/locale/angular-locale_sl.js | 6 +- i18n/locale/angular-locale_sq-al.js | 6 +- i18n/locale/angular-locale_sq.js | 6 +- i18n/locale/angular-locale_sr-cyrl-rs.js | 6 +- i18n/locale/angular-locale_sr-latn-rs.js | 6 +- i18n/locale/angular-locale_sr-rs.js | 6 +- i18n/locale/angular-locale_sr.js | 6 +- i18n/locale/angular-locale_sv-se.js | 6 +- i18n/locale/angular-locale_sv.js | 6 +- i18n/locale/angular-locale_sw-tz.js | 6 +- i18n/locale/angular-locale_sw.js | 6 +- i18n/locale/angular-locale_ta-in.js | 6 +- i18n/locale/angular-locale_ta.js | 6 +- i18n/locale/angular-locale_te-in.js | 6 +- i18n/locale/angular-locale_te.js | 6 +- i18n/locale/angular-locale_th-th.js | 6 +- i18n/locale/angular-locale_th.js | 6 +- i18n/locale/angular-locale_tl-ph.js | 6 +- i18n/locale/angular-locale_tl.js | 6 +- i18n/locale/angular-locale_tr-tr.js | 6 +- i18n/locale/angular-locale_tr.js | 6 +- i18n/locale/angular-locale_uk-ua.js | 6 +- i18n/locale/angular-locale_uk.js | 6 +- i18n/locale/angular-locale_ur-pk.js | 6 +- i18n/locale/angular-locale_ur.js | 6 +- i18n/locale/angular-locale_vi-vn.js | 6 +- i18n/locale/angular-locale_vi.js | 6 +- i18n/locale/angular-locale_zh-cn.js | 6 +- i18n/locale/angular-locale_zh-hans-cn.js | 6 +- i18n/locale/angular-locale_zh-hans.js | 6 +- i18n/locale/angular-locale_zh-hk.js | 6 +- i18n/locale/angular-locale_zh-tw.js | 6 +- i18n/locale/angular-locale_zh.js | 6 +- i18n/src/closureSlurper.js | 17 +-- i18n/src/converter.js | 5 +- perf/DCLvsWindowOnLoad.html | 6 +- src/Angular.js | 120 +++++++++------ src/AngularPublic.js | 80 +++++----- src/Injector.js | 48 ++++-- src/angular-bootstrap.js | 9 +- src/angular-mocks.js | 63 ++++---- src/angular.suffix | 4 +- src/directives.js | 27 ---- src/loader.js | 167 +++++++++++++++++++++ src/loader.prefix | 7 + src/loader.suffix | 20 +++ src/scenario/Application.js | 12 +- src/scenario/angular.suffix | 12 +- test/AngularSpec.js | 163 ++++++-------------- test/InjectorSpec.js | 41 ++++- test/angular-mocksSpec.js | 54 +++---- test/loaderSpec.js | 63 ++++++++ test/scenario/ApplicationSpec.js | 4 +- test/scenario/RunnerSpec.js | 4 +- test/scenario/dslSpec.js | 36 ++--- test/scenario/e2e/widgets.html | 4 +- test/service/cookiesSpec.js | 2 +- test/service/filter/filtersSpec.js | 8 +- test/service/logSpec.js | 2 +- test/widgetsSpec.js | 8 - 211 files changed, 1051 insertions(+), 1242 deletions(-) delete mode 100644 docs/content/api/angular.module.ngdoc mode change 100644 => 100755 i18n/src/closureSlurper.js create mode 100644 src/loader.js create mode 100644 src/loader.prefix create mode 100644 src/loader.suffix create mode 100644 test/loaderSpec.js diff --git a/Rakefile b/Rakefile index e71fd0cf..512d1e73 100644 --- a/Rakefile +++ b/Rakefile @@ -109,6 +109,27 @@ task :compile => [:init, :compile_scenario, :compile_jstd_scenario_adapter] do --js_output_file #{path_to('angular.min.js')}) FileUtils.cp_r 'i18n/locale', path_to('i18n') + + File.open(path_to('angular-loader.js'), 'w') do |f| + concat = 'cat ' + [ + 'src/loader.prefix', + 'src/loader.js', + 'src/loader.suffix'].flatten.join(' ') + + content = %x{#{concat}}. + gsub('"NG_VERSION_FULL"', NG_VERSION.full). + gsub(/^\s*['"]use strict['"];?\s*$/, '') # remove all file-specific strict mode flags + + f.write(content) + end + + %x(java -jar lib/closure-compiler/compiler.jar \ + --compilation_level SIMPLE_OPTIMIZATIONS \ + --language_in ECMASCRIPT5_STRICT \ + --js #{path_to('angular-loader.js')} \ + --js_output_file #{path_to('angular-loader.min.js')}) + + end @@ -134,7 +155,9 @@ task :package => [:clean, :compile, :docs] do ['src/angular-mocks.js', path_to('angular.js'), + path_to('angular-loader.js'), path_to('angular.min.js'), + path_to('angular-loader.min.js'), path_to('angular-scenario.js'), path_to('jstd-scenario-adapter.js'), path_to('jstd-scenario-adapter-config.js'), diff --git a/angularFiles.js b/angularFiles.js index 8d35764b..889d7f52 100644 --- a/angularFiles.js +++ b/angularFiles.js @@ -1,6 +1,7 @@ angularFiles = { 'angularSrc': [ 'src/Angular.js', + 'src/loader.js', 'src/AngularPublic.js', 'src/JSON.js', 'src/Injector.js', diff --git a/docs/content/api/angular.module.ngdoc b/docs/content/api/angular.module.ngdoc deleted file mode 100644 index ccfec6b7..00000000 --- a/docs/content/api/angular.module.ngdoc +++ /dev/null @@ -1,54 +0,0 @@ -@ngdoc overview -@name angular.module -@description - -The angular.module namespace is a global place for registering angular modules. All modules -(angular core or 3rd party) that should be available to an application must be registered in this -namespace. - -# Module - -A module is a function that is used to register new service providers and configure existing -providers. Once a provider is registered, {@link angular.module.AUTO.$injector $injector} will use -it to ask for a service instance when it is resolving a dependency for the first time. - -
-// Declare the module configuration function.
-// The function arguments are fully injectable so that the module function
-// can create new providers or configure existing ones.
-function MyModule($provide, $locationProvider){
- // see $provide for more information.
- $provide.value('appName', 'MyCoolApp');
-
- // Configure existing providers
- $locationProvider.hashPrefix = '!';
-};
-
-
-See: {@link angular.module.AUTO.$provide $provide}, {@link angular.module.ng.$locationProvider $locationProvider}.
-
-# Registering Module Function
-
-In your JavaScript file:
-
-// Create the angular.module namespace if one does not exist
-// This allows the module code to be loaded before angular.js code.
-if (!window.angular) window.angular = {};
-if (!angular.module) angular.module = {};
-
-angular.module.MyModule = function(){
- // add configuration code here.
-};
-
-
-Then you can refer to your module like this:
-
-
-var injector = angular.injector('ng', 'MyModule')
-
-
-Or
-
-
-var injector = angular.injector('ng', angular.module.MyModule)
-
diff --git a/docs/content/guide/dev_guide.bootstrap.auto_bootstrap.ngdoc b/docs/content/guide/dev_guide.bootstrap.auto_bootstrap.ngdoc
index d461bfb4..ff14a703 100644
--- a/docs/content/guide/dev_guide.bootstrap.auto_bootstrap.ngdoc
+++ b/docs/content/guide/dev_guide.bootstrap.auto_bootstrap.ngdoc
@@ -2,88 +2,33 @@
@name Developer Guide: Initializing Angular: Automatic Initialization
@description
-Angular initializes automatically when you load the angular script into your page, specifying
-angular's `ng:autobind` attribute with no arguments:
-
-
+
+
+ I can add: {{ 1+2 }}.
+
+