aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDi Peng2011-07-11 17:31:29 -0700
committerIgor Minar2011-07-22 15:34:55 -0700
commit0782422d1f319593ffe3f0d7b2372ba995ad362c (patch)
tree7da0e0cb89b8c3f41a260fa3a986daae807650b1
parent8fa066190af2b2267a5e8111a41beb6e8af5c340 (diff)
downloadangular.js-0782422d1f319593ffe3f0d7b2372ba995ad362c.tar.bz2
feat(angular.version): add angular.version
- placeholders are replaced with actual angular versions when doing rake compile
-rw-r--r--Rakefile49
-rw-r--r--src/Angular.js22
-rw-r--r--src/AngularPublic.js4
-rw-r--r--test/AngularSpec.js11
4 files changed, 68 insertions, 18 deletions
diff --git a/Rakefile b/Rakefile
index 6d0ca960..cce35778 100644
--- a/Rakefile
+++ b/Rakefile
@@ -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"');
+ });
+ })
});