diff --git a/examples/documentation/oxdoc_tutorial/index.html b/examples/documentation/oxdoc_tutorial/index.html index 41a4cc21..b7b835c7 100644 --- a/examples/documentation/oxdoc_tutorial/index.html +++ b/examples/documentation/oxdoc_tutorial/index.html @@ -4,8 +4,8 @@
<!DOCTYPE HTML>
<html>
<head>
- <script type="text/javascript" src="OxJS/build/Ox.js"></script>
+ <script type="text/javascript" src="OxJS/min/Ox.js"></script>
<script>
Ox.load(function() {
// Document ready. Your code here.
diff --git a/readme/index/download.html b/readme/index/download.html
index 6f02fd77..6a0f44c3 100644
--- a/readme/index/download.html
+++ b/readme/index/download.html
@@ -13,8 +13,8 @@
Build
Minified production version, including modules.
-Download OxJS.latest.build.tar.gz{size.build}.
-Or get Ox.js only: Ox.js{size.minified}.
+Download OxJS.latest.min.tar.gz{size.min}.
+Or get Ox.js only: Ox.js{size.oxjs}.
Getting Started
Take a look at our short tutorial.
diff --git a/source/Ox.js b/source/Ox.js
index 74eeb7ea..16d1ce97 100644
--- a/source/Ox.js
+++ b/source/Ox.js
@@ -13,9 +13,9 @@
version = +new Date();
if (args[0] === true && regexp.test(path)) {
- path = path.replace(regexp, 'build/');
+ path = path.replace(regexp, 'min/');
loadScript('Ox.js', function() {
- Ox.MODE = 'build';
+ Ox.MODE = 'min';
Ox.PATH = path;
Ox.load.apply(null, Ox.slice(args, 1));
});
diff --git a/source/Ox/js/Constants.js b/source/Ox/js/Constants.js
index 9f26a766..dff5f35c 100644
--- a/source/Ox/js/Constants.js
+++ b/source/Ox/js/Constants.js
@@ -101,7 +101,7 @@ Ox.PATH = (function() {
}
}
}());
-//@ Ox.MODE Mode ('build' or 'dev')
+//@ Ox.MODE Mode ('dev' or 'min')
Ox.MODE = Ox.PATH.slice(0, -1).split('/').pop();
//@ Ox.PREFIXES <[str]> `['', 'K', 'M', 'G', 'T', 'P']`
Ox.PREFIXES = ['', 'K', 'M', 'G', 'T', 'P'];
diff --git a/source/Ox/js/Core.js b/source/Ox/js/Core.js
index e2bec367..6144ed5d 100644
--- a/source/Ox/js/Core.js
+++ b/source/Ox/js/Core.js
@@ -14,7 +14,7 @@ this.Ox = function(value) {
/*@
Ox.load Loads OxJS and, optionally, one or more modules
- To load OxJS, include `/build/Ox.js` (minified version) or `/dev/Ox.js`
+ To load OxJS, include `/min/Ox.js` (minified version) or `/dev/Ox.js`
(development version), and use `Ox.load(callback)` at the beginning of your
program. The callback will run once OxJS is loaded and the document is
ready. To choose the version programatically (for example: minified version
diff --git a/source/Ox/js/Locale.js b/source/Ox/js/Locale.js
index d1fbef1e..9a6fe862 100644
--- a/source/Ox/js/Locale.js
+++ b/source/Ox/js/Locale.js
@@ -36,12 +36,12 @@
translations = {};
Ox.forEach(Ox.LOCALES, function(locales, module) {
if (
- (!module || Ox.load[module])
+ (module == 'Ox' || Ox.load[module])
&& Ox.contains(locales, locale)
) {
urls.push([
- Ox.PATH + 'Ox' + (module ? '.' + module : '')
- + '/json/locale.' + locale + '.json'
+ Ox.PATH + module + '/json/locale.'
+ + locale + '.json'
]);
}
});
diff --git a/tools/build/build.py b/tools/build/build.py
index be781c69..d7d980b4 100755
--- a/tools/build/build.py
+++ b/tools/build/build.py
@@ -34,16 +34,16 @@ def build_oxjs(downloads=False, geo=False):
root_path = '../../'
source_path = root_path + 'source/'
- build_path = root_path + 'build/'
dev_path = root_path + 'dev/'
+ min_path = root_path + 'min/'
locales = {}
version = get_version()
year = time.strftime('%Y', time.gmtime())
comment = ' OxJS %s (c) %s 0x2620, dual-licensed GPL/MIT, see https://oxjs.org for details ' % (version, year)
- # Empty build and dev
- for path in [build_path, dev_path]:
+ # Empty dev and min
+ for path in [dev_path, min_path]:
if os.path.exists(path):
for item in os.listdir(path):
full_path = '%s%s' % (path, item)
@@ -65,16 +65,16 @@ def build_oxjs(downloads=False, geo=False):
css = css.replace('$import', '\n'.join([
'@import url("../themes/%s/css/theme.css?%s");' % (theme, version) for theme in themes
]))
- write_file('%sUI/css/UI.css' % build_path, css)
write_file('%sUI/css/UI.css' % dev_path, css)
+ write_file('%sUI/css/UI.css' % min_path, css)
# Ox.UI Theme CSS
css = read_file(source_path + 'UI/css/theme.css')
for theme in themes:
theme_css = parse_css(css, theme_data[theme])
theme_css = theme_css.replace('.png)', '.png?%s)' % version)
- write_file('%sUI/themes/%s/css/theme.css' % (build_path, theme), theme_css)
write_file('%sUI/themes/%s/css/theme.css' % (dev_path, theme), theme_css)
+ write_file('%sUI/themes/%s/css/theme.css' % (min_path, theme), theme_css)
# Ox.UI SVGs
ui_images = {}
@@ -90,11 +90,11 @@ def build_oxjs(downloads=False, geo=False):
if filename.startswith('symbolLoading'):
for theme in themes:
theme_svg = re.sub('#808080', format_hex(theme_data[theme]['symbolDefaultColor']), svg)
- write_file('%sUI/themes/%s/svg/%s' % (build_path, theme, filename), theme_svg)
write_file('%sUI/themes/%s/svg/%s' % (dev_path, theme, filename), theme_svg)
+ write_file('%sUI/themes/%s/svg/%s' % (min_path, theme, filename), theme_svg)
# copy & link
- ui_files = {'build': [], 'dev': []}
+ ui_files = {'dev': [], 'min': []}
for path, dirnames, filenames in os.walk(source_path):
for filename in filenames:
if not '_' in path and not filename[0] in '._' \
@@ -102,19 +102,19 @@ def build_oxjs(downloads=False, geo=False):
and not filename.endswith('.css') \
and not '/UI/svg' in path \
and (geo or not '/Geo/' in path):
- # write copies in build path
+ # write copies in min path
source = os.path.join(path, filename)
is_jquery = re.search('^jquery-[\d\.]+\.js$', filename)
is_jquery_min = re.search('^jquery-[\d\.]+\.min\.js$', filename)
is_jquery_plugin = re.search('^jquery\..*?\.js$', filename)
is_jsonc = re.search('\.jsonc$', filename)
if is_jquery or is_jquery_min:
- target = os.path.join(path.replace(source_path, build_path), 'jquery.js')
+ target = os.path.join(path.replace(source_path, min_path), 'jquery.js')
else:
- target = os.path.join(path.replace(source_path, build_path), filename)
+ target = os.path.join(path.replace(source_path, min_path), filename)
if is_jquery_plugin:
- ui_files['build'].append(target.replace(build_path, ''))
- ui_files['dev'].append(target.replace(build_path, ''))
+ ui_files['dev'].append(target.replace(min_path, ''))
+ ui_files['min'].append(target.replace(min_path, ''))
if not '/Ox/js/' in source and not '/UI/js/' in source and not is_jquery:
if re.match('^Ox\..+\.js$', filename) or is_jsonc:
js = read_file(source)
@@ -127,11 +127,11 @@ def build_oxjs(downloads=False, geo=False):
if i < len(parts) - 1:
parts[i] = '..'
link_source = '/'.join(parts).replace(filename, os.path.join(path, filename))[3:]
- link_target = target.replace(build_path, dev_path)
+ link_target = target.replace(min_path, dev_path)
if not is_jquery_min:
write_link(link_source, link_target)
# locales
- match = re.search('/Ox\.?(\w*?)/json/locale.(\w+).json', source)
+ match = re.search('/(\w+)/json/locale.(\w+).json', source)
if match:
module = match.group(1)
locale = match.group(2)
@@ -193,12 +193,12 @@ def build_oxjs(downloads=False, geo=False):
"Ox.VERSION = '%s'" % version,
js
)
- write_file(build_path + 'Ox.js', ox.js.minify(js, comment))
write_file(dev_path + '/Ox/json/' + 'Ox.json', json.dumps({
'files': ox_files,
'locales': locales,
'version': version
}, indent=4, sort_keys=True))
+ write_file(min_path + 'Ox.js', ox.js.minify(js, comment))
# Ox.UI
js = ''
@@ -219,14 +219,14 @@ def build_oxjs(downloads=False, geo=False):
and not 'UI/png' in path:
ui_files['dev'].append(os.path.join(path.replace(source_path, ''), filename))
if not '/js/' in path:
- ui_files['build'].append(os.path.join(path.replace(source_path, ''), filename))
+ ui_files['min'].append(os.path.join(path.replace(source_path, ''), filename))
if filename.endswith('.js'):
js += read_file(os.path.join(path, filename)) + '\n'
- filename = build_path + 'UI/js/UI.js'
+ filename = min_path + 'UI/js/UI.js'
write_file(filename, ox.js.minify(js, comment))
- ui_files['build'].append(filename.replace(build_path, ''))
- write_file(build_path + 'UI/json/UI.json', json.dumps({
- 'files': sorted(ui_files['build']),
+ ui_files['min'].append(filename.replace(min_path, ''))
+ write_file(min_path + 'UI/json/UI.json', json.dumps({
+ 'files': sorted(ui_files['min']),
'images': ui_images
}, sort_keys=True))
write_file(dev_path + 'UI/json/UI.json', json.dumps({
@@ -279,7 +279,7 @@ def build_oxjs(downloads=False, geo=False):
if downloads:
data = {
'date': time.strftime('%Y-%m-%dT%H:%M:%SZ', time.gmtime()),
- 'size': {'minified': os.path.getsize(build_path + 'Ox.js')},
+ 'size': {'oxjs': os.path.getsize(min_path + 'Ox.js')},
'version': version
}
download_path = root_path + 'downloads/'
@@ -287,21 +287,27 @@ def build_oxjs(downloads=False, geo=False):
source_file = download_path + 'OxJS.%s.source.tar.gz' % version
data['size']['source'] = write_tarfile(source_file, root_path, 'OxJS', filter_source)
write_link(source_file.replace(download_path, ''), source_file.replace(version, 'latest'))
- # build
- build_file = download_path + 'OxJS.%s.build.tar.gz' % version
- data['size']['build'] = write_tarfile(build_file, root_path, 'OxJS', filter_build)
- write_link(build_file.replace(download_path, ''), build_file.replace(version, 'latest'))
+ # min
+ min_file = download_path + 'OxJS.%s.min.tar.gz' % version
+ data['size']['min'] = write_tarfile(min_file, root_path, 'OxJS', filter_min)
+ write_link(min_file.replace(download_path, ''), min_file.replace(version, 'latest'))
# json
write_file(download_path + 'downloads.json', json.dumps(data, indent=4, sort_keys=True))
+ # legacy
+ build_path = root_path + 'build/'
+ if os.path.exists(build_path) and not os.path.islink(build_path[:-1]):
+ shutil.rmtree(build_path)
+ write_link('min', build_path[:-1])
+
def copy_file(source, target):
print 'copying', source, 'to', target
write_file(target, read_file(source))
-def filter_build(tarinfo):
+def filter_min(tarinfo):
name = tarinfo.name
- if name == 'OxJS' or re.search('^OxJS/build', name):
+ if name == 'OxJS' or re.search('^OxJS/min', name):
return tarinfo
return None
@@ -370,7 +376,10 @@ def write_link(source, target):
write_path(target)
# remove files, symlinks *and broken symlinks*
if os.path.exists(target) or os.path.lexists(target):
- os.unlink(target)
+ if os.path.isdir(target) and not os.path.islink(target):
+ os.rmdir(target)
+ else:
+ os.unlink(target)
os.symlink(source, target)
def write_path(file):
@@ -380,9 +389,9 @@ def write_path(file):
def write_tarfile(file, path, arcname, filter):
print 'writing', file
- build_tar = tarfile.open(file, 'w:gz')
- build_tar.add(path, arcname=arcname, filter=filter)
- build_tar.close()
+ f = tarfile.open(file, 'w:gz')
+ f.add(path, arcname=arcname, filter=filter)
+ f.close()
return os.path.getsize(file)
if __name__ == '__main__':