Merge pull request #1395 from elemoine/exports

Fix exports (remove export_as hack)
This commit is contained in:
Éric Lemoine
2013-12-18 07:17:24 -08:00
21 changed files with 144 additions and 176 deletions

View File

@@ -85,10 +85,9 @@ class ObjectLiteral(Exportable):
class Symbol(Exportable):
def __init__(self, name, export_symbol, export_as=None):
def __init__(self, name, export_symbol):
Exportable.__init__(self, name)
self.export_symbol = export_symbol
self.export_as = export_as or self.name
self.props = set()
__repr__ = simplerepr
@@ -96,7 +95,7 @@ class Symbol(Exportable):
def export(self):
lines = []
if self.export_symbol:
lines.append('\n\ngoog.exportSymbol(\n \'%s\',\n %s);\n' % (self.name, self.export_as))
lines.append('\n\ngoog.exportSymbol(\n \'%s\',\n %s);\n' % (self.name, self.name))
lines.extend('goog.exportProperty(\n %s,\n \'%s\',\n %s.%s);\n' % (self.name, prop, self.name, prop) for prop in sorted(self.props))
return ''.join(lines)
@@ -165,19 +164,17 @@ def main(argv):
objects[name] = symbol
symbol.props.add(prop)
continue
m = re.match(r'@exportSymbol\s+(?P<name>\S+)(?:\s+(?P<export_as>\S+))?\Z', line)
m = re.match(r'@exportSymbol\s+(?P<name>\S+)\Z', line)
if m:
name = m.group('name')
if name in objects:
raise RuntimeError(line) # Name already defined
export_as = m.group('export_as')
symbol = Symbol(name, True, export_as)
symbol = Symbol(name, True)
objects[name] = symbol
if not export_as:
components = m.group('name').split('.')
if re.match(r'[A-Z]', components[-1]):
requires.add(name)
elif len(components) > 1:
else:
requires.add('.'.join(components[:-1]))
continue
raise RuntimeError(line)

View File

@@ -1,13 +1,13 @@
goog.require('ol.BrowserFeature');
goog.require('ol.Map');
goog.require('ol.RendererHints');
goog.require('ol.View2D');
goog.require('ol.dom.Input');
goog.require('ol.layer.Tile');
goog.require('ol.source.OSM');
goog.require('ol.webgl');
if (!ol.webgl.SUPPORTED) {
if (!ol.BrowserFeature.HAS_WEBGL) {
var inputs = document.getElementsByClassName('webgl');
for (var i = 0, len = inputs.length; i < len; i++) {
inputs[i].disabled = true;

View File

@@ -1,9 +1,9 @@
goog.require('ol.BrowserFeature');
goog.require('ol.Map');
goog.require('ol.RendererHint');
goog.require('ol.View2D');
goog.require('ol.layer.Tile');
goog.require('ol.source.MapQuestOpenAerial');
goog.require('ol.webgl');
function setResetBrightnessButtonHTML() {
@@ -15,7 +15,7 @@ function setResetContrastButtonHTML() {
resetContrast.innerHTML = 'Contrast (' + layer.getContrast().toFixed(3) + ')';
}
if (!ol.webgl.SUPPORTED) {
if (!ol.BrowserFeature.HAS_WEBGL) {
var info = document.getElementById('no-webgl');
/**
* display error message

View File

@@ -1,10 +1,10 @@
goog.require('ol.BrowserFeature');
goog.require('ol.Map');
goog.require('ol.RendererHint');
goog.require('ol.View2D');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
goog.require('ol.source.BingMaps');
goog.require('ol.webgl');
function setResetHueButtonHTML() {
@@ -16,7 +16,7 @@ function setResetSaturationButtonHTML() {
layer.getSaturation().toFixed(2) + ')';
}
if (!ol.webgl.SUPPORTED) {
if (!ol.BrowserFeature.HAS_WEBGL) {
var info = document.getElementById('no-webgl');
/**
* display error message

View File

@@ -1,9 +1,9 @@
goog.require('ol.BrowserFeature');
goog.require('ol.Map');
goog.require('ol.RendererHint');
goog.require('ol.View2D');
goog.require('ol.layer.Tile');
goog.require('ol.source.MapQuestOpenAerial');
goog.require('ol.webgl');
var domMap = new ol.Map({
@@ -20,7 +20,7 @@ var domMap = new ol.Map({
})
});
if (ol.webgl.SUPPORTED) {
if (!ol.BrowserFeature.HAS_WEBGL) {
var webglMap = new ol.Map({
renderer: ol.RendererHint.WEBGL,
target: 'webglMap'

View File

@@ -1,4 +1,4 @@
@exportSymbol ol.animation.bounce ol.animation.bounce
@exportSymbol ol.animation.pan ol.animation.pan
@exportSymbol ol.animation.rotate ol.animation.rotate
@exportSymbol ol.animation.zoom ol.animation.zoom
@exportSymbol ol.animation.bounce
@exportSymbol ol.animation.pan
@exportSymbol ol.animation.rotate
@exportSymbol ol.animation.zoom

View File

@@ -1,3 +1,7 @@
@exportSymbol ol.BrowserFeature
@exportProperty ol.BrowserFeature.DEVICE_PIXEL_RATIO
@exportProperty ol.BrowserFeature.HAS_CANVAS
@exportProperty ol.BrowserFeature.HAS_DEVICE_ORIENTATION
@exportProperty ol.BrowserFeature.HAS_GEOLOCATION
@exportProperty ol.BrowserFeature.HAS_TOUCH
@exportProperty ol.BrowserFeature.HAS_WEBGL

View File

@@ -1,5 +1,9 @@
goog.provide('ol.BrowserFeature');
goog.require('goog.dom');
goog.require('goog.dom.TagName');
goog.require('ol.webgl');
/**
* @define {boolean} Assume touch.
@@ -8,22 +12,111 @@ ol.ASSUME_TOUCH = false;
/**
* @type {Object}
* @define {boolean} Whether to enable canvas.
*/
ol.BrowserFeature = {
/**
* The ratio between physical pixels and device-independent pixels
* (dips) on the device (`window.devicePixelRatio`).
* @type {number}
*/
DEVICE_PIXEL_RATIO: goog.global.devicePixelRatio || 1,
ol.ENABLE_CANVAS = true;
/**
* True if browser supports touch events.
* @type {boolean}
/**
* @define {boolean} Whether to enable DOM.
*/
HAS_TOUCH: ol.ASSUME_TOUCH ||
ol.ENABLE_DOM = true;
/**
* @define {boolean} Whether to enable WebGL.
*/
ol.ENABLE_WEBGL = true;
/**
* The ratio between physical pixels and device-independent pixels
* (dips) on the device (`window.devicePixelRatio`).
* @const {number}
* @todo stability experimental
*/
ol.BrowserFeature.DEVICE_PIXEL_RATIO = goog.global.devicePixelRatio || 1;
/**
* True if browser supports Canvas.
* @const {boolean}
* @todo stability experimental
*/
ol.BrowserFeature.HAS_CANVAS = ol.ENABLE_CANVAS && (
/**
* @return {boolean} Canvas supported.
*/
function() {
if (!('HTMLCanvasElement' in goog.global)) {
return false;
}
try {
var canvas = /** @type {HTMLCanvasElement} */
(goog.dom.createElement(goog.dom.TagName.CANVAS));
return !goog.isNull(canvas.getContext('2d'));
} catch (e) {
return false;
}
})();
/**
* Indicates if DeviceOrientation is supported in the user's browser.
* @const {boolean}
* @todo stability experimental
*/
ol.BrowserFeature.HAS_DEVICE_ORIENTATION =
'DeviceOrientationEvent' in goog.global;
/**
* True if browser supports DOM.
* @const {boolean}
* @todo stability experimental
*/
ol.BrowserFeature.HAS_DOM = ol.ENABLE_DOM;
/**
* Is HTML5 geolocation supported in the current browser?
* @const {boolean}
* @todo stability experimental
*/
ol.BrowserFeature.HAS_GEOLOCATION = 'geolocation' in goog.global.navigator;
/**
* True if browser supports touch events.
* @const {boolean}
* @todo stability experimental
*/
ol.BrowserFeature.HAS_TOUCH = ol.ASSUME_TOUCH ||
(goog.global.document &&
'ontouchstart' in goog.global.document.documentElement) ||
!!(goog.global.navigator.msPointerEnabled)
};
!!(goog.global.navigator.msPointerEnabled);
/**
* True if browser supports WebGL.
* @const {boolean}
* @todo stability experimental
*/
ol.BrowserFeature.HAS_WEBGL = ol.ENABLE_WEBGL && (
/**
* @return {boolean} WebGL supported.
*/
function() {
if (!('WebGLRenderingContext' in goog.global)) {
return false;
}
try {
var canvas = /** @type {HTMLCanvasElement} */
(goog.dom.createElement(goog.dom.TagName.CANVAS));
return !goog.isNull(ol.webgl.getContext(canvas, {
failIfMajorPerformanceCaveat: true
}));
} catch (e) {
return false;
}
})();

View File

@@ -1,27 +0,0 @@
goog.provide('ol.canvas');
goog.require('goog.dom');
goog.require('goog.dom.TagName');
/**
* Is supported.
* @const
* @type {boolean}
*/
ol.canvas.SUPPORTED = (
/**
* @return {boolean} Canvas supported.
*/
function() {
if (!('HTMLCanvasElement' in goog.global)) {
return false;
}
try {
var canvas = /** @type {HTMLCanvasElement} */
(goog.dom.createElement(goog.dom.TagName.CANVAS));
return !goog.isNull(canvas.getContext('2d'));
} catch (e) {
return false;
}
})();

View File

@@ -1 +1 @@
@exportSymbol ol.control.defaults ol.control.defaults
@exportSymbol ol.control.defaults

View File

@@ -1,2 +1 @@
@exportSymbol ol.DeviceOrientation
@exportSymbol ol.DeviceOrientation.SUPPORTED ol.DeviceOrientation.SUPPORTED

View File

@@ -3,6 +3,7 @@ goog.provide('ol.DeviceOrientationProperty');
goog.require('goog.events');
goog.require('goog.math');
goog.require('ol.BrowserFeature');
goog.require('ol.Object');
@@ -111,15 +112,6 @@ ol.DeviceOrientation.prototype.disposeInternal = function() {
};
/**
* Indicates if DeviceOrientation is supported in the user's browser.
* @const
* @type {boolean}
* @todo stability experimental
*/
ol.DeviceOrientation.SUPPORTED = 'DeviceOrientationEvent' in goog.global;
/**
* @private
* @param {goog.events.BrowserEvent} browserEvent Event.
@@ -230,7 +222,7 @@ goog.exportProperty(
* @private
*/
ol.DeviceOrientation.prototype.handleTrackingChanged_ = function() {
if (ol.DeviceOrientation.SUPPORTED) {
if (ol.BrowserFeature.HAS_DEVICE_ORIENTATION) {
var tracking = this.getTracking();
if (tracking && goog.isNull(this.listenerKey_)) {
this.listenerKey_ = goog.events.listen(goog.global, 'deviceorientation',

View File

@@ -1,2 +1 @@
@exportSymbol ol.Geolocation
@exportSymbol ol.Geolocation.SUPPORTED ol.Geolocation.SUPPORTED

View File

@@ -6,6 +6,7 @@ goog.provide('ol.GeolocationProperty');
goog.require('goog.events');
goog.require('goog.events.EventType');
goog.require('goog.math');
goog.require('ol.BrowserFeature');
goog.require('ol.Coordinate');
goog.require('ol.Object');
goog.require('ol.proj');
@@ -140,7 +141,7 @@ ol.Geolocation.prototype.handleProjectionChanged_ = function() {
* @private
*/
ol.Geolocation.prototype.handleTrackingChanged_ = function() {
if (ol.Geolocation.SUPPORTED) {
if (ol.BrowserFeature.HAS_GEOLOCATION) {
var tracking = this.getTracking();
if (tracking && !goog.isDef(this.watchId_)) {
this.watchId_ = goog.global.navigator.geolocation.watchPosition(
@@ -155,15 +156,6 @@ ol.Geolocation.prototype.handleTrackingChanged_ = function() {
};
/**
* Is HTML5 geolocation supported in the current browser?
* @const
* @type {boolean}
* @todo stability experimental
*/
ol.Geolocation.SUPPORTED = 'geolocation' in goog.global.navigator;
/**
* @private
* @param {GeolocationPosition} position position event.

View File

@@ -1 +1 @@
@exportSymbol ol.interaction.defaults ol.interaction.defaults
@exportSymbol ol.interaction.defaults

View File

@@ -58,34 +58,13 @@ goog.require('ol.layer.Group');
goog.require('ol.proj');
goog.require('ol.proj.common');
goog.require('ol.renderer.Map');
goog.require('ol.renderer.canvas');
goog.require('ol.renderer.canvas.Map');
goog.require('ol.renderer.dom');
goog.require('ol.renderer.dom.Map');
goog.require('ol.renderer.webgl');
goog.require('ol.renderer.webgl.Map');
goog.require('ol.structs.PriorityQueue');
goog.require('ol.vec.Mat4');
/**
* @define {boolean} Whether to enable canvas.
*/
ol.ENABLE_CANVAS = true;
/**
* @define {boolean} Whether to enable DOM.
*/
ol.ENABLE_DOM = true;
/**
* @define {boolean} Whether to enable WebGL.
*/
ol.ENABLE_WEBGL = true;
/**
* @enum {string}
* @todo stability experimental
@@ -1307,17 +1286,17 @@ ol.Map.createOptionsInternal = function(options) {
for (i = 0; i < n; ++i) {
rendererHint = rendererHints[i];
if (rendererHint == ol.RendererHint.CANVAS) {
if (ol.ENABLE_CANVAS && ol.renderer.canvas.SUPPORTED) {
if (ol.BrowserFeature.HAS_CANVAS) {
rendererConstructor = ol.renderer.canvas.Map;
break;
}
} else if (rendererHint == ol.RendererHint.DOM) {
if (ol.ENABLE_DOM && ol.renderer.dom.SUPPORTED) {
if (ol.BrowserFeature.HAS_DOM) {
rendererConstructor = ol.renderer.dom.Map;
break;
}
} else if (rendererHint == ol.RendererHint.WEBGL) {
if (ol.ENABLE_WEBGL && ol.renderer.webgl.SUPPORTED) {
if (ol.BrowserFeature.HAS_WEBGL) {
rendererConstructor = ol.renderer.webgl.Map;
break;
}

View File

@@ -1,11 +0,0 @@
goog.provide('ol.renderer.canvas');
goog.require('ol.canvas');
/**
* Is supported.
* @const
* @type {boolean}
*/
ol.renderer.canvas.SUPPORTED = ol.canvas.SUPPORTED;

View File

@@ -1,9 +0,0 @@
goog.provide('ol.renderer.dom');
/**
* Is supported.
* @const
* @type {boolean}
*/
ol.renderer.dom.SUPPORTED = true;

View File

@@ -1,11 +0,0 @@
goog.provide('ol.renderer.webgl');
goog.require('ol.webgl');
/**
* Is supported.
* @const
* @type {boolean}
*/
ol.renderer.webgl.SUPPORTED = ol.webgl.SUPPORTED;

View File

@@ -1 +0,0 @@
@exportSymbol ol.webgl.SUPPORTED ol.webgl.SUPPORTED

View File

@@ -1,9 +1,6 @@
goog.provide('ol.webgl');
goog.provide('ol.webgl.WebGLContextEventType');
goog.require('goog.dom');
goog.require('goog.dom.TagName');
/**
* @const
@@ -45,28 +42,3 @@ ol.webgl.getContext = function(canvas, opt_attributes) {
}
return null;
};
/**
* Is supported.
* @const
* @type {boolean}
*/
ol.webgl.SUPPORTED = (
/**
* @return {boolean} WebGL supported.
*/
function() {
if (!('WebGLRenderingContext' in goog.global)) {
return false;
}
try {
var canvas = /** @type {HTMLCanvasElement} */
(goog.dom.createElement(goog.dom.TagName.CANVAS));
return !goog.isNull(ol.webgl.getContext(canvas, {
failIfMajorPerformanceCaveat: true
}));
} catch (e) {
return false;
}
})();