diff options
| author | Di Peng | 2011-07-11 17:31:29 -0700 | 
|---|---|---|
| committer | Igor Minar | 2011-07-22 15:34:55 -0700 | 
| commit | 0782422d1f319593ffe3f0d7b2372ba995ad362c (patch) | |
| tree | 7da0e0cb89b8c3f41a260fa3a986daae807650b1 | |
| parent | 8fa066190af2b2267a5e8111a41beb6e8af5c340 (diff) | |
| download | angular.js-0782422d1f319593ffe3f0d7b2372ba995ad362c.tar.bz2 | |
feat(angular.version): add angular.version
- placeholders are replaced with actual angular versions when doing
rake compile
| -rw-r--r-- | Rakefile | 49 | ||||
| -rw-r--r-- | src/Angular.js | 22 | ||||
| -rw-r--r-- | src/AngularPublic.js | 4 | ||||
| -rw-r--r-- | test/AngularSpec.js | 11 | 
4 files changed, 68 insertions, 18 deletions
| @@ -64,6 +64,16 @@ task :default => [:compile, :test]  desc 'Init the build workspace'  task :init do    FileUtils.mkdir(BUILD_DIR) unless File.directory?(BUILD_DIR) + +  v = YAML::load( File.open( 'version.yaml' ) ) +  match = v['version'].match(/^([^-]*)(-snapshot)?$/) + +  NG_VERSION = Struct.new(:full, :major, :minor, :dot, :codename). +                      new(match[1] + (match[2] ? ('-' + %x(git rev-parse HEAD)[0..7]) : ''), +                          match[1].split('.')[0], +                          match[1].split('.')[1], +                          match[1].split('.')[2], +                          v['codename'])  end @@ -188,9 +198,17 @@ task :compile => [:init, :compile_scenario, :compile_jstd_scenario_adapter, :gen    File.open(path_to('angular.js'), 'w') do |f|      concat = 'cat ' + deps.flatten.join(' ') -    f.write(%x{#{concat}}. + +    content = %x{#{concat}}. +              gsub('"NG_VERSION_FULL"', NG_VERSION.full). +              gsub('"NG_VERSION_MAJOR"', NG_VERSION.major). +              gsub('"NG_VERSION_MINOR"', NG_VERSION.minor). +              gsub('"NG_VERSION_DOT"', NG_VERSION.dot). +              gsub('"NG_VERSION_CODENAME"', NG_VERSION.codename).                gsub(/^\s*['"]use strict['"];?\s*$/, ''). # remove all file-specific strict mode flags -              gsub(/'USE STRICT'/, "'use strict'"))     # rename the placeholder in angular.prefix +              gsub(/'USE STRICT'/, "'use strict'")      # rename the placeholder in angular.prefix + +    f.write(content)      f.write(gen_css('css/angular.css', true))    end @@ -210,13 +228,9 @@ end  desc 'Create angular distribution'  task :package => [:clean, :compile, :docs] do -  v = YAML::load( File.open( 'version.yaml' ) )['version'] -  match = v.match(/^([^-]*)(-snapshot)?$/) -  version = match[1] + (match[2] ? ('-' + %x(git rev-parse HEAD)[0..7]) : '') - -  tarball = "angular-#{version}.tgz" +  tarball = "angular-#{NG_VERSION.full}.tgz" -  pkg_dir = path_to("pkg/angular-#{version}") +  pkg_dir = path_to("pkg/angular-#{NG_VERSION.full}")    FileUtils.rm_r(path_to('pkg'), :force => true)    FileUtils.mkdir_p(pkg_dir) @@ -228,35 +242,36 @@ task :package => [:clean, :compile, :docs] do      path_to('jstd-scenario-adapter.js'),      path_to('jstd-scenario-adapter-config.js'),    ].each do |src| -    dest = src.gsub(/^[^\/]+\//, '').gsub(/((\.min)?\.js)$/, "-#{version}\\1") +    dest = src.gsub(/^[^\/]+\//, '').gsub(/((\.min)?\.js)$/, "-#{NG_VERSION.full}\\1")      FileUtils.cp(src, pkg_dir + '/' + dest)    end -  FileUtils.cp_r path_to('docs'), "#{pkg_dir}/docs-#{version}" +  FileUtils.cp_r path_to('docs'), "#{pkg_dir}/docs-#{NG_VERSION.full}" -  File.open("#{pkg_dir}/docs-#{version}/index.html", File::RDWR) do |f| +  File.open("#{pkg_dir}/docs-#{NG_VERSION.full}/index.html", File::RDWR) do |f|      text = f.read      f.rewind -    f.write text.sub('angular.min.js', "angular-#{version}.min.js") +    f.write text.sub('angular.min.js', "angular-#{NG_VERSION.full}.min.js")    end -  File.open("#{pkg_dir}/docs-#{version}/docs-scenario.html", File::RDWR) do |f| +  File.open("#{pkg_dir}/docs-#{NG_VERSION.full}/docs-scenario.html", File::RDWR) do |f|      text = f.read      f.rewind -    f.write text.sub('angular-scenario.js', "angular-scenario-#{version}.js") +    f.write text.sub('angular-scenario.js', "angular-scenario-#{NG_VERSION.full}.js")    end -  File.open("#{pkg_dir}/docs-#{version}/appcache.manifest", File::RDWR) do |f| +  File.open("#{pkg_dir}/docs-#{NG_VERSION.full}/appcache.manifest", File::RDWR) do |f| +      text = f.read      f.rewind -    f.write text.sub('angular.min.js', "angular-#{version}.min.js") +    f.write text.sub('angular.min.js', "angular-#{NG_VERSION.full}.min.js")    end    %x(tar -czf #{path_to(tarball)} -C #{path_to('pkg')} .)    FileUtils.cp path_to(tarball), pkg_dir -  FileUtils.mv pkg_dir, path_to(['pkg', version]) +  FileUtils.mv pkg_dir, path_to(['pkg', NG_VERSION.full])    puts "Package created: #{path_to(tarball)}"  end diff --git a/src/Angular.js b/src/Angular.js index 7d31330e..28ece3d1 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -1004,3 +1004,25 @@ function assertArg(arg, name, reason) {  function assertArgFn(arg, name) {    assertArg(isFunction(arg, name, 'not a function'));  } + + +/** + * @ngdoc property + * @name angular.version + * @description + * Object which contains information about the current AngularJS version. The object has following + * properties: + * + * - `full` – `{string}` – full version string, e.g. "0.9.18" + * - `major` – `{number}` – major version number, e.g. 0 + * - `minor` – `{number}` – minor version number, e.g. 9 + * - `dot` – `{number}` – dot version number, e.g. 18 + * - `codeName` – `{string}` – code name of the release, e.g. "jiggling-armfat" + */ +var version = { +  full: '"NG_VERSION_FULL"',    // all of these placeholder strings will be replaced by rake's +  major: "NG_VERSION_MAJOR",    // compile task +  minor: "NG_VERSION_MINOR", +  dot: "NG_VERSION_DOT", +  codeName: '"NG_VERSION_CODENAME"' +} diff --git a/src/AngularPublic.js b/src/AngularPublic.js index ebd54621..bd86a9be 100644 --- a/src/AngularPublic.js +++ b/src/AngularPublic.js @@ -19,6 +19,7 @@ angularService('$browser', function($log){    return browserSingleton;  }, {$inject:['$log']}); +  extend(angular, {    // disabled for now until we agree on public name    //'annotate': annotate, @@ -41,7 +42,8 @@ extend(angular, {    'isFunction': isFunction,    'isObject': isObject,    'isNumber': isNumber, -  'isArray': isArray +  'isArray': isArray, +  'version': version  });  //try to bind to jquery now so that one can write angular.element().read() diff --git a/test/AngularSpec.js b/test/AngularSpec.js index 3389d9b1..98554199 100644 --- a/test/AngularSpec.js +++ b/test/AngularSpec.js @@ -625,4 +625,15 @@ describe('angular', function(){      });    }); + +  describe('version', function() { +    it('version should have full/major/minor/dot/codeName properties', function() { +      expect(version).toBeDefined(); +      expect(version.full).toBe('"NG_VERSION_FULL"'); +      expect(version.major).toBe("NG_VERSION_MAJOR"); +      expect(version.minor).toBe("NG_VERSION_MINOR"); +      expect(version.dot).toBe("NG_VERSION_DOT"); +      expect(version.codeName).toBe('"NG_VERSION_CODENAME"'); +    }); +  })  }); | 
