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 @@ OxDoc Tutorial - - + + diff --git a/examples/forms/editable_elements/index.html b/examples/forms/editable_elements/index.html index 329cc3d8..6d9f6bec 100644 --- a/examples/forms/editable_elements/index.html +++ b/examples/forms/editable_elements/index.html @@ -4,7 +4,7 @@ Editable Elements - + diff --git a/examples/forms/file_selection/index.html b/examples/forms/file_selection/index.html index e1e70672..ef8c982b 100644 --- a/examples/forms/file_selection/index.html +++ b/examples/forms/file_selection/index.html @@ -4,9 +4,9 @@ File Selection - + - + diff --git a/examples/forms/form_elements/index.html b/examples/forms/form_elements/index.html index 1b84e1bc..d8134d2e 100644 --- a/examples/forms/form_elements/index.html +++ b/examples/forms/form_elements/index.html @@ -4,8 +4,8 @@ Form Elements - - + + diff --git a/examples/images/image_manipulation/index.html b/examples/images/image_manipulation/index.html index 45ebc387..1a67a201 100644 --- a/examples/images/image_manipulation/index.html +++ b/examples/images/image_manipulation/index.html @@ -4,9 +4,9 @@ Image Manipulation - + - + diff --git a/examples/images/steganography/index.html b/examples/images/steganography/index.html index cee2e637..7f452d0f 100644 --- a/examples/images/steganography/index.html +++ b/examples/images/steganography/index.html @@ -4,9 +4,9 @@ Steganograpy - + - + diff --git a/examples/lists/cities/index.html b/examples/lists/cities/index.html index 472804ce..523246e3 100644 --- a/examples/lists/cities/index.html +++ b/examples/lists/cities/index.html @@ -4,9 +4,9 @@ Cities - + - + diff --git a/examples/lists/countries/index.html b/examples/lists/countries/index.html index 4129789c..c64b444a 100644 --- a/examples/lists/countries/index.html +++ b/examples/lists/countries/index.html @@ -4,9 +4,9 @@ Countries - + - + diff --git a/examples/lists/json/index.html b/examples/lists/json/index.html index 1f7830c0..c9dcaf2e 100644 --- a/examples/lists/json/index.html +++ b/examples/lists/json/index.html @@ -4,9 +4,9 @@ JSON - + - + diff --git a/examples/maps/flight_paths/index.html b/examples/maps/flight_paths/index.html index 6818c6b3..dcaf5b0a 100644 --- a/examples/maps/flight_paths/index.html +++ b/examples/maps/flight_paths/index.html @@ -4,9 +4,9 @@ Flight Paths - + - + diff --git a/examples/maps/ipv4_map_of_the_internet/index.html b/examples/maps/ipv4_map_of_the_internet/index.html index e60473e4..b2d0c87f 100644 --- a/examples/maps/ipv4_map_of_the_internet/index.html +++ b/examples/maps/ipv4_map_of_the_internet/index.html @@ -4,9 +4,9 @@ IPv4 Map of the Internet - + - + diff --git a/examples/maps/manhattan_grid/index.html b/examples/maps/manhattan_grid/index.html index 133aa8ea..aa7d0eda 100644 --- a/examples/maps/manhattan_grid/index.html +++ b/examples/maps/manhattan_grid/index.html @@ -4,9 +4,9 @@ Manhattan Grid - + - + diff --git a/examples/maps/world_map_with_countries/index.html b/examples/maps/world_map_with_countries/index.html index 3e5afec5..b636b69e 100644 --- a/examples/maps/world_map_with_countries/index.html +++ b/examples/maps/world_map_with_countries/index.html @@ -4,8 +4,8 @@ World Map with Countries - - + + diff --git a/examples/ui/mouse_events/index.html b/examples/ui/mouse_events/index.html index 8a472247..507f5e7e 100644 --- a/examples/ui/mouse_events/index.html +++ b/examples/ui/mouse_events/index.html @@ -4,9 +4,9 @@ Mouse Events - + - + diff --git a/examples/ui/progress/index.html b/examples/ui/progress/index.html index 743bb3d4..e289105f 100644 --- a/examples/ui/progress/index.html +++ b/examples/ui/progress/index.html @@ -4,9 +4,9 @@ Progress - + - + diff --git a/examples/ui/symbols/index.html b/examples/ui/symbols/index.html index fb58a378..ecc5e32c 100644 --- a/examples/ui/symbols/index.html +++ b/examples/ui/symbols/index.html @@ -4,9 +4,9 @@ Symbols - + - + diff --git a/examples/ui/widget_design_patterns/index.html b/examples/ui/widget_design_patterns/index.html index 72299bbd..c1dfa1cb 100644 --- a/examples/ui/widget_design_patterns/index.html +++ b/examples/ui/widget_design_patterns/index.html @@ -4,9 +4,9 @@ Widget Design Patterns - + - + diff --git a/index.js b/index.js index ed427be8..68d883ce 100644 --- a/index.js +++ b/index.js @@ -160,7 +160,7 @@ Ox.load(/^https?:\/\/(www\.)?oxjs\.org\//.test( return css; }, getSRC: function(element) { - return 'build/UI/themes/' + app.user.theme + '/' + { + return 'min/UI/themes/' + app.user.theme + '/' + { icon: 'png/icon16.png', loading: 'svg/symbolLoading.svg', logo: 'png/logo128.png' diff --git a/readme/getting_started.html b/readme/getting_started.html index 948eab6d..60dfcff9 100644 --- a/readme/getting_started.html +++ b/readme/getting_started.html @@ -3,7 +3,7 @@

<!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__':