Browse Source

Make it work with current Amber.

(needs `npm install --production`
before `jekyll build`)

ProfStef not migrated yet (eg. does not work)
Herby Vojčík 5 years ago
parent
commit
911c5edd30
13 changed files with 218 additions and 98 deletions
  1. 5 3
      .gitignore
  2. 100 29
      Gruntfile.js
  3. 2 1
      LICENSE-MIT
  4. 2 1
      _config.yml
  5. 11 5
      _layouts/index.html
  6. 39 32
      config.js
  7. 7 3
      deploy.js
  8. 4 1
      devel.js
  9. 5 0
      es6-promise.amd.json
  10. 1 1
      local.amd.json
  11. 32 19
      package.json
  12. 8 0
      testing.js
  13. 2 3
      the.js

+ 5 - 3
.gitignore

@@ -1,3 +1,5 @@
-_site
-/.DS_Store
-node_modules/*
+/_site/
+
+/node_modules/
+
+/test_runner.js

+ 100 - 29
Gruntfile.js

@@ -1,51 +1,122 @@
 'use strict';
 
 module.exports = function (grunt) {
-    var path = require('path');
-
     // These plugins provide necessary tasks.
+    grunt.loadNpmTasks('grunt-contrib-clean');
     grunt.loadNpmTasks('grunt-contrib-requirejs');
-    grunt.loadNpmTasks('amber-dev');
+    grunt.loadNpmTasks('grunt-exec');
+    grunt.loadNpmTasks('@ambers/sdk');
+
+    var path = require('path'),
+        helpers = require('@ambers/sdk').helpers;
 
     // Default task.
-    grunt.registerTask('default', ['amberc:all']);
+    grunt.registerTask('default', ['amdconfig:app', 'amberc:all']);
+    grunt.registerTask('test', ['amdconfig:app', 'requirejs:test_runner', 'exec:test_runner', 'clean:test_runner']);
     grunt.registerTask('devel', ['amdconfig:app', 'requirejs:devel']);
     grunt.registerTask('deploy', ['amdconfig:app', 'requirejs:deploy']);
 
+    var polyfillThenPromiseApp = function () {
+        define(["require", "amber/es6-promise"], function (require, promiseLib) {
+            promiseLib.polyfill();
+            return new Promise(function (resolve, reject) {
+                require(["__app__"], resolve, reject);
+            });
+        });
+    };
+
     // Project configuration.
     grunt.initConfig({
         // Metadata.
         // pkg: grunt.file.readJSON(''),
         banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
-            '<%= grunt.template.today("yyyy-mm-dd") %>\n' +
-            '<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' +
-            '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
-            ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */\n',
+        '<%= grunt.template.today("yyyy-mm-dd") %>\n' +
+        '<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' +
+        '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
+        ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */\n',
         // task configuration
+        amberc: {
+            options: {
+                amber_dir: path.join(__dirname, "node_modules", "@ambers", "lang"),
+                configFile: "config.js"
+            },
+            all: {
+                src: [
+                    'src/AmberWebsite.st', // list all sources in dependency order
+                    'src/AmberWebsite-Tests.st' // list all tests in dependency order
+                ],
+                amd_namespace: 'amber/website',
+                libraries: ['amber_core/SUnit', 'amber/web/Web', 'silk/Silk']
+            }
+        },
+
         amdconfig: {app: {dest: 'config.js'}},
 
         requirejs: {
-            deploy: {options: {
-                mainConfigFile: "config.js",
-                onBuildWrite: function (moduleName, path, contents) {
-                    return moduleName === "config" ? contents + "\nrequire.config({map:{'*':{app:'deploy'}}});" : contents;
-                },
-                pragmas: {
-                    excludeIdeData: true,
-                    excludeDebugContexts: true
-                },
-                optimize: 'uglify2',
-                include: ['config', 'node_modules/requirejs/require', 'deploy'],
-                out: "the.js"
-            }},
-            devel: {options: {
-                mainConfigFile: "config.js",
-                onBuildWrite: function (moduleName, path, contents) {
-                    return moduleName === "config" ? contents + "\nrequire.config({map:{'*':{app:'devel'}}});" : contents;
-                },
-                include: ['config', 'node_modules/requirejs/require'],
-                out: "the.js"
-            }}
+            options: {
+                useStrict: true
+            },
+            deploy: {
+                options: {
+                    mainConfigFile: "config.js",
+                    rawText: {
+                        "app": '(' + polyfillThenPromiseApp + '());',
+                        "__app__": 'define(["deploy", "amber_core/Platform-Browser"],function(x){return x});'
+                    },
+                    pragmas: {
+                        excludeIdeData: true,
+                        excludeDebugContexts: true
+                    },
+                    include: ['config', 'node_modules/requirejs/require', 'app', 'amber/lazypack', '__app__'],
+                    optimize: "uglify2",
+                    out: "the.js"
+                }
+            },
+            devel: {
+                options: {
+                    mainConfigFile: "config.js",
+                    rawText: {
+                        "app": '(' + polyfillThenPromiseApp + '());',
+                        "__app__": 'define(["devel", "amber_core/Platform-Browser"],function(x){return x});'
+                    },
+                    include: ['config', 'node_modules/requirejs/require', 'app', '__app__'],
+                    exclude: ['devel'],
+                    out: "the.js"
+                }
+            },
+            test_runner: {
+                options: {
+                    mainConfigFile: "config.js",
+                    rawText: {
+                        "jquery": "/* do not load in node test runner */",
+                        "__app__": "(" + function () {
+                            define(["testing", "amber_core/Platform-Node", "amber_devkit/NodeTestRunner"], function (amber) {
+                                amber.initialize().then(function () {
+                                    amber.globals.NodeTestRunner._main();
+                                });
+                            });
+                        } + "());",
+                        "app": "(" + polyfillThenPromiseApp + "());"
+                    },
+                    paths: {"amber_devkit": helpers.libPath},
+                    pragmas: {
+                        excludeIdeData: true
+                    },
+                    include: ['app', 'amber/lazypack', '__app__'],
+                    insertRequire: ['app'],
+                    optimize: "none",
+                    wrap: helpers.nodeWrapperWithShebang,
+                    out: "test_runner.js"
+                }
+            }
+        },
+
+        exec: {
+            test_runner: 'node test_runner.js'
+        },
+
+        clean: {
+            test_runner: ['test_runner.js']
         }
     });
 

+ 2 - 1
bower_components/amber-ide-starter-dialog/LICENSE-MIT → LICENSE-MIT

@@ -1,4 +1,5 @@
-Copyright (c) 2014 Herbert Vojčík
+Copyright (C) 2011-2014 Nicolas Petton <petton.nicolas@gmail.com>
+Copyright (C) 2011-2019 Amber contributors
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation

+ 2 - 1
_config.yml

@@ -1,3 +1,4 @@
 markdown: kramdown
 highlighter: rouge
-include: [_st.js]
+include: [node_modules]
+exclude: []

+ 11 - 5
_layouts/index.html

@@ -10,14 +10,19 @@
     <link href='http://fonts.googleapis.com/css?family=Arapey:400italic,400' rel='stylesheet' type='text/css'>
     <link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
 
+    <script type='text/javascript' src='/node_modules/es6-promise/dist/es6-promise.auto.js'></script>
     <script type='text/javascript' src='the.js'></script>
     <script type='text/javascript'>
-        require(['app', 'jquery'], function (amber, $) {
-            amber.initialize({
+        var global = typeof global === "undefined" ? window : global || window;
+        new Promise(function (resolve, reject) {
+            require(['app'], resolve, reject);
+        }).then(function (amber) {
+            return amber.initialize({
                 //used for all new packages in IDE
-                'transport.defaultAmdNamespace': "amber-trysmalltalk"
+                'transport.defaultAmdNamespace': "amber/website"
+            }).then(function () {
+                document.getElementById('version').innerText = 'v' + amber.globals.Smalltalk._version();
             });
-            $('#version').text('v' + amber.globals.Smalltalk._version());
         });
     </script>
     <script type='text/javascript'>
@@ -104,7 +109,8 @@
         <div class="clear"></div>
 
         <p class="try">
-            <button class="huge" onClick="require('app').globals.Browser._open()">Try Amber in your browser!</button>
+            <button class="huge" onClick="require('amber/helpers').globals.Browser._open()">Try Amber in your browser!
+            </button>
         </p>
 
     </div>

+ 39 - 32
config.js

@@ -4,67 +4,74 @@ var require;
 if (!require) require = {config: function (x) {require = x;}};
 require.config({
   "paths": {
-    "helios/showdown": "bower_components/showdown/src/showdown",
+    "amber/es6-promise": "node_modules/es6-promise/dist/es6-promise",
+    "tingle": "node_modules/tingle.js/dist/tingle",
+    "require-css": "node_modules/require-css",
+    "mousetrap": "node_modules/mousetrap/mousetrap",
+    "jquery": "node_modules/jquery/dist/jquery",
+    "jquery-ui": "node_modules/jquery-ui-dist/jquery-ui",
+    "codemirror": "node_modules/codemirror",
+    "typeahead": "node_modules/typeahead.js/dist/typeahead.jquery",
+    "helios/showdown": "node_modules/showdown/src/showdown",
     "requireJS": "node_modules/requirejs/require",
-    "require-css": "bower_components/require-css",
-    "jquery": "bower_components/jquery/jquery",
-    "jquery-ui": "bower_components/jquery-ui/jquery-ui",
-    "codemirror": "bower_components/codemirror",
-    "bootstrap2.3.2": "bower_components/bootstrap2.3.2/bootstrap",
-    "mousetrap": "bower_components/mousetrap/mousetrap",
-    "jquery.blockUI": "bower_components/blockui/jquery.blockUI",
-    "amber-trysmalltalk": "bower_components/trysmalltalk/src",
-    "helios": "bower_components/helios/src",
-    "helios/resources": "bower_components/helios/resources",
-    "helios/index": "bower_components/helios/index",
-    "amber-ide-starter-dialog": "bower_components/amber-ide-starter-dialog/lib/idestarter",
-    "amber/web": "bower_components/amber-contrib-web/src",
-    "amber/legacy": "bower_components/amber-contrib-legacy/src",
-    "amber/legacy/resources": "bower_components/amber-contrib-legacy/resources",
-    "amber": "bower_components/amber/support",
-    "amber_core": "bower_components/amber/src",
-    "amber/jquery": "bower_components/amber-contrib-jquery/src",
-    "amber-trysmalltalkdemo": "src"
+    "bootstrap": "node_modules/bootstrap/dist",
+    "silk": "node_modules/@ambers/silk/src",
+    "amber": "node_modules/@ambers/lang/support",
+    "amber_core": "node_modules/@ambers/lang/src",
+    "domite": "node_modules/@ambers/domite/src",
+    "amber-ide-starter-dialog": "node_modules/@ambers/ide-starter-modal/lib/idestarter",
+    "amber/jquery": "node_modules/@ambers/contrib-jquery/src",
+    "amber/web": "node_modules/@ambers/contrib-web/src",
+    "amber/legacy": "node_modules/@ambers/contrib-legacy/src",
+    "amber/legacy/resources": "node_modules/@ambers/contrib-legacy/resources",
+    "helios": "node_modules/@ambers/helios/src",
+    "helios/resources": "node_modules/@ambers/helios/resources",
+    "helios/index": "node_modules/@ambers/helios/index",
+    "amber/website": "src"
   },
-  "rjs_comment1": "require.min should be removed",
-  "rjs_comment2": "it's backward compatibility hack if config finds",
-  "rjs_comment3": "support/requirejs before node_modules/requirejs;",
-  "rjs_comment4": "the former will go away in 0.14.0",
   "map": {
     "*": {
       "css": "require-css/css",
       "00comment": "These are backward compatibility pointers.",
+      "amber_core/Compiler-Exceptions": "amber_core/Compiler-Core",
+      "amber_core/Kernel-ImportExport": "amber_core/Platform-ImportExport",
+      "amber/domite/DOMite": "domite/DOMite",
+      "amber/domite/DOMite-Tests": "domite/DOMite-Tests",
+      "amber-contrib-jquery/Wrappers-JQuery": "amber/jquery/Wrappers-JQuery",
       "amber-contrib-web/Web": "amber/web/Web",
       "amber_core/Web": "amber/web/Web",
       "amber_core/Canvas": "amber/web/Web",
       "amber-attic/Benchfib": "amber/legacy/Benchfib",
       "amber-attic/Examples": "amber/legacy/Examples",
-      "amber-attic/IDE": "amber/legacy/IDE",
-      "amber_core/Kernel-ImportExport": "amber_core/Platform-ImportExport",
-      "amber-contrib-jquery/Wrappers-JQuery": "amber/jquery/Wrappers-JQuery"
+      "amber-attic/IDE": "amber/legacy/IDE"
     }
   },
   "shim": {
     "jquery-ui": {
       "deps": [
+        "jquery",
         "jquery",
         "jquery"
       ]
     },
     "codemirror/lib/codemirror": {
       "deps": [
+        "css!codemirror/lib/codemirror",
         "css!codemirror/lib/codemirror",
         "css!codemirror/lib/codemirror"
       ]
     },
-    "bootstrap2.3.2/js/bootstrap": {
+    "typeahead": {
+      "deps": [
+        "jquery"
+      ],
+      "exports": "jQuery.fn.typeahead"
+    },
+    "bootstrap/js/bootstrap": {
       "deps": [
         "jquery",
-        "css!bootstrap2.3.2/css/bootstrap"
+        "css!bootstrap/css/bootstrap"
       ]
-    },
-    "ensure-console": {
-      "exports": "console"
     }
   }
 });

+ 7 - 3
deploy.js

@@ -1,8 +1,12 @@
 define([
-    'amber/deploy',
+    'amber/lang',
     // --- packages to be deployed begin here ---
-    'amber-attic/IDE',
-    'amber-trysmalltalk/TrySmalltalk'
+    "amber/web/Web",
+    "silk/Silk",
+    "silk/Silk-Tests",
+    "amber_core/SUnit",
+    'amber/legacy/IDE',
+    // 'trysmalltalk/TrySmalltalk'
     // --- packages to be deployed end here ---
 ], function (amber) {
     return amber;

+ 4 - 1
devel.js

@@ -1,7 +1,10 @@
 define([
+    './testing',
     'amber/devel',
-    './deploy',
     // --- packages used only during development begin here ---
+    'amber/legacy/Benchfib',
+    'amber/legacy/Examples',
+    'amber/legacy/IDE'
     // --- packages used only during development end here ---
 ], function (amber) {
     return amber;

+ 5 - 0
es6-promise.amd.json

@@ -0,0 +1,5 @@
+{
+  "paths": {
+    "amber/es6-promise": ["./es6-promise", "./dist/es6-promise", "./promise"]
+  }
+}

+ 1 - 1
local.amd.json

@@ -1,5 +1,5 @@
 {
     "paths": {
-        "amber-trysmalltalkdemo": "src"
+        "amber/website": "src"
     }
 }

+ 32 - 19
package.json

@@ -1,40 +1,53 @@
 {
-  "name": "trysmalltalkdemo",
-  "title": "trysmalltalkdemo",
-  "description": "A demo of the trysmalltalk",
-  "version": "0.1.0",
-  "homepage": "https://github.com/tomrake/trysmalltalk",
-  "author": {
-    "name": "Thomas Rake",
-    "email": "tom.rake@gmail.com"
-  },
+  "name": "@ambers/website",
+  "title": "Amber Website",
+  "description": "Website of Amber at amber-lang.net",
+  "version": "0.2.0",
+  "homepage": "https://amber-lang.net/",
+  "author": {},
   "repository": {
     "type": "git",
-    "url": "git://github.com/tomrake/trysmalltalk.git"
+    "url": "https://lolg.it/amber/amber-website.git"
   },
   "bugs": {
-    "url": "https://github.com/tomrake/trysmalltalk/issues"
+    "url": "https://lolg.it/amber/amber-website/issues"
   },
   "licenses": [
     {
       "type": "MIT",
-      "url": "https://github.com/tomrake/trysmalltalk/blob/master/LICENSE-MIT"
+      "url": "https://lolg.it/amber/amber-website/raw/gh-pages/LICENSE-MIT"
     }
   ],
   "engines": {
-    "node": ">= 0.8.0"
+    "node": ">=4.0.0"
   },
   "scripts": {
-    "test": "echo No testing && exit 1"
+    "reset": "npm run clean && npm run init",
+    "clean": "(rm -rf node_modules || rd /s/q node_modules)",
+    "init": "npm install && grunt default devel",
+    "test": "grunt test"
+  },
+  "dependencies": {
+    "@ambers/contrib-jquery": "^0.5.1",
+    "@ambers/contrib-legacy": "^0.7.1",
+    "@ambers/contrib-web": "^0.6.2",
+    "@ambers/lang": "^0.22.2",
+    "@ambers/domite": "^0.8.0",
+    "es6-promise": "^4.2.4",
+    "@ambers/silk": "^0.4.0"
   },
   "devDependencies": {
-    "amber-dev": "^0.3.0",
-    "grunt": "^0.4.5",
-    "grunt-contrib-requirejs": "^0.4.4",
-    "requirejs": "^2.1.15"
+    "@ambers/ide-starter-modal": "^0.2.0",
+    "@ambers/sdk": "^0.10.7",
+    "@ambers/helios": "^0.10.0",
+    "grunt": "^1.0.3",
+    "grunt-contrib-clean": "^1.1.0",
+    "grunt-contrib-requirejs": "^1.0.0",
+    "grunt-exec": "^3.0.0",
+    "requirejs": "^2.3.5"
   },
   "keywords": [
     "Amber",
     "Smalltalk"
   ]
-}
+}

+ 8 - 0
testing.js

@@ -0,0 +1,8 @@
+define([
+    './deploy',
+    'amber_core/SUnit',
+    // --- packages used only during automated testing begin here ---
+    // --- packages used only during automated testing end here ---
+], function (amber) {
+    return amber;
+});

File diff suppressed because it is too large
+ 2 - 3
the.js


Some files were not shown because too many files changed in this diff