Merge remote-tracking branch 'remotes/upstream/master'
Conflicts: demo/kitchen-sink/demo.js
This commit is contained in:
commit
b546875c1d
288 changed files with 56230 additions and 22271 deletions
|
|
@ -41,9 +41,9 @@
|
|||
define(function(require, exports, module) {
|
||||
|
||||
require("ace/lib/fixoldbrowsers");
|
||||
require("ace/config").init();
|
||||
var env = {};
|
||||
|
||||
var net = require("ace/lib/net");
|
||||
var event = require("ace/lib/event");
|
||||
var theme = require("ace/theme/textmate");
|
||||
var EditSession = require("ace/edit_session").EditSession;
|
||||
|
|
@ -65,6 +65,7 @@ var Doc = function(name, desc, file) {
|
|||
this.desc = desc;
|
||||
this.doc = new EditSession(file);
|
||||
this.doc.setMode(modesByName[name].mode);
|
||||
this.doc.modeName = name;
|
||||
this.doc.setUndoManager(new UndoManager());
|
||||
};
|
||||
|
||||
|
|
@ -75,13 +76,10 @@ var WrappedDoc = function(name, desc, file) {
|
|||
this.doc.setWrapLimitRange(80, 80);
|
||||
};
|
||||
|
||||
var Mode = function(name, desc, clazz, extensions) {
|
||||
var Mode = function(name, desc, extensions) {
|
||||
this.name = name;
|
||||
this.desc = desc;
|
||||
this.clazz = clazz;
|
||||
this.mode = new clazz();
|
||||
this.mode.name = name;
|
||||
|
||||
this.mode = "ace/mode/" + name;
|
||||
this.extRe = new RegExp("^.*\\.(" + extensions.join("|") + ")$", "g");
|
||||
};
|
||||
|
||||
|
|
@ -89,48 +87,38 @@ Mode.prototype.supportsFile = function(filename) {
|
|||
return filename.match(this.extRe);
|
||||
};
|
||||
|
||||
var themes = {};
|
||||
function loadTheme(name, callback) {
|
||||
if (themes[name])
|
||||
return callback();
|
||||
|
||||
themes[name] = 1;
|
||||
var base = name.split("/").pop();
|
||||
var fileName = "demo/kitchen-sink/theme-" + base + "-uncompressed.js";
|
||||
net.loadScript(fileName, callback);
|
||||
}
|
||||
|
||||
//{
|
||||
var modes = [
|
||||
new Mode("c_cpp", "C/C++", require("ace/mode/c_cpp").Mode, ["c", "cpp", "cxx", "h", "hpp"]),
|
||||
new Mode("clojure", "Clojure", require("ace/mode/clojure").Mode, ["clj"]),
|
||||
new Mode("coffee", "CoffeeScript", require("ace/mode/coffee").Mode, ["coffee"]),
|
||||
new Mode("coldfusion", "ColdFusion", require("ace/mode/coldfusion").Mode, ["cfm"]),
|
||||
new Mode("csharp", "C#", require("ace/mode/csharp").Mode, ["cs"]),
|
||||
new Mode("css", "CSS", require("ace/mode/css").Mode, ["css"]),
|
||||
new Mode("groovy", "Groovy", require("ace/mode/groovy").Mode, ["groovy"]),
|
||||
new Mode("haxe", "haXe", require("ace/mode/haxe").Mode, ["hx"]),
|
||||
new Mode("html", "HTML", require("ace/mode/html").Mode, ["html", "htm"]),
|
||||
new Mode("java", "Java", require("ace/mode/java").Mode, ["java"]),
|
||||
new Mode("javascript", "JavaScript", require("ace/mode/javascript").Mode, ["js"]),
|
||||
new Mode("json", "JSON", require("ace/mode/json").Mode, ["json"]),
|
||||
new Mode("latex", "LaTeX", require("ace/mode/latex").Mode, ["tex"]),
|
||||
new Mode("lua", "Lua", require("ace/mode/lua").Mode, ["lua"]),
|
||||
new Mode("markdown", "Markdown", require("ace/mode/markdown").Mode, ["md", "markdown"]),
|
||||
new Mode("ocaml", "OCaml", require("ace/mode/ocaml").Mode, ["ml", "mli"]),
|
||||
new Mode("perl", "Perl", require("ace/mode/perl").Mode, ["pl", "pm"]),
|
||||
new Mode("pgsql", "pgSQL",require("ace/mode/pgsql").Mode, ["pgsql", "sql"]),
|
||||
new Mode("php", "PHP",require("ace/mode/php").Mode, ["php"]),
|
||||
new Mode("powershell", "Powershell", require("ace/mode/powershell").Mode, ["ps1"]),
|
||||
new Mode("python", "Python", require("ace/mode/python").Mode, ["py"]),
|
||||
new Mode("scala", "Scala", require("ace/mode/scala").Mode, ["scala"]),
|
||||
new Mode("scss", "SCSS", require("ace/mode/scss").Mode, ["scss"]),
|
||||
new Mode("ruby", "Ruby", require("ace/mode/ruby").Mode, ["rb"]),
|
||||
new Mode("sql", "SQL", require("ace/mode/sql").Mode, ["sql"]),
|
||||
new Mode("svg", "SVG", require("ace/mode/SVG").Mode, ["svg"]),
|
||||
new Mode("text", "Text", require("ace/mode/text").Mode, ["txt"]),
|
||||
new Mode("textile", "Textile", require("ace/mode/textile").Mode, ["textile"]),
|
||||
new Mode("xml", "XML", require("ace/mode/xml").Mode, ["xml"])
|
||||
new Mode("c_cpp", "C/C++", ["c", "cpp", "cxx", "h", "hpp"]),
|
||||
new Mode("clojure", "Clojure", ["clj"]),
|
||||
new Mode("coffee", "CoffeeScript", ["coffee"]),
|
||||
new Mode("coldfusion", "ColdFusion", ["cfm"]),
|
||||
new Mode("csharp", "C#", ["cs"]),
|
||||
new Mode("css", "CSS", ["css"]),
|
||||
new Mode("groovy", "Groovy", ["groovy"]),
|
||||
new Mode("haxe", "haXe", ["hx"]),
|
||||
new Mode("html", "HTML", ["html", "htm"]),
|
||||
new Mode("java", "Java", ["java"]),
|
||||
new Mode("javascript", "JavaScript", ["js"]),
|
||||
new Mode("json", "JSON", ["json"]),
|
||||
new Mode("latex", "LaTeX", ["tex"]),
|
||||
new Mode("lua", "Lua", ["lua"]),
|
||||
new Mode("markdown", "Markdown", ["md", "markdown"]),
|
||||
new Mode("ocaml", "OCaml", ["ml", "mli"]),
|
||||
new Mode("perl", "Perl", ["pl", "pm"]),
|
||||
new Mode("pgsql", "pgSQL", ["pgsql", "sql"]),
|
||||
new Mode("php", "PHP", ["php"]),
|
||||
new Mode("powershell", "Powershell", ["ps1"]),
|
||||
new Mode("python", "Python", ["py"]),
|
||||
new Mode("scala", "Scala", ["scala"]),
|
||||
new Mode("scss", "SCSS", ["scss"]),
|
||||
new Mode("ruby", "Ruby", ["rb"]),
|
||||
new Mode("sql", "SQL", ["sql"]),
|
||||
new Mode("svg", "SVG", ["svg"]),
|
||||
new Mode("text", "Text", ["txt"]),
|
||||
new Mode("textile", "Textile", ["textile"]),
|
||||
new Mode("xml", "XML", ["xml"]),
|
||||
new Mode("sh", "SH", ["sh"])
|
||||
];
|
||||
|
||||
modesByName = {};
|
||||
|
|
@ -237,6 +225,10 @@ var docs = [
|
|||
"haxe", "haXe",
|
||||
require("ace/requirejs/text!./docs/Haxe.hx")
|
||||
),
|
||||
new Doc(
|
||||
"sh", "SH",
|
||||
require("ace/requirejs/text!./docs/sh.sh")
|
||||
),
|
||||
new WrappedDoc(
|
||||
"markdown", "Markdown",
|
||||
require("ace/requirejs/text!./docs/markdown.md")
|
||||
|
|
@ -325,6 +317,11 @@ modes.forEach(function(mode) {
|
|||
modeEl.appendChild(option);
|
||||
});
|
||||
|
||||
bindDropdown("mode", function(value) {
|
||||
env.editor.getSession().setMode(modesByName[value].mode || modesByName.text.mode);
|
||||
env.editor.getSession().modeName = value;
|
||||
});
|
||||
|
||||
bindDropdown("doc", function(value) {
|
||||
var doc = docsByName[value].doc;
|
||||
var session = env.split.setSession(doc);
|
||||
|
|
@ -335,11 +332,6 @@ bindDropdown("doc", function(value) {
|
|||
env.editor.focus();
|
||||
});
|
||||
|
||||
bindDropdown("mode", function(value) {
|
||||
env.editor.getSession().setMode(modesByName[value].mode || modesByName.text.mode);
|
||||
});
|
||||
|
||||
|
||||
function updateUIEditorOptions() {
|
||||
var editor = env.editor;
|
||||
var session = editor.session;
|
||||
|
|
@ -347,7 +339,7 @@ function updateUIEditorOptions() {
|
|||
session.setFoldStyle(foldingEl.value);
|
||||
|
||||
saveOption(docEl, session.name);
|
||||
saveOption(modeEl, session.getMode().name || "text");
|
||||
saveOption(modeEl, session.modeName || "text");
|
||||
saveOption(wrapModeEl, session.getUseWrapMode() ? session.getWrapLimitRange().min || "free" : "off");
|
||||
|
||||
saveOption(selectStyleEl, editor.getSelectionStyle() == "line");
|
||||
|
|
@ -376,19 +368,10 @@ function saveOption(el, val) {
|
|||
};
|
||||
}
|
||||
|
||||
|
||||
bindDropdown("theme", function(value) {
|
||||
if (!value)
|
||||
return;
|
||||
|
||||
if (module.packaged) {
|
||||
loadTheme(value, function() {
|
||||
env.editor.setTheme(value);
|
||||
});
|
||||
}
|
||||
else {
|
||||
env.editor.setTheme(value);
|
||||
}
|
||||
env.editor.setTheme(value);
|
||||
});
|
||||
|
||||
bindDropdown("keybinding", function(value) {
|
||||
|
|
@ -560,6 +543,7 @@ event.addListener(container, "drop", function(e) {
|
|||
|
||||
modeEl.value = mode.name;
|
||||
env.editor.getSession().setMode(mode.mode);
|
||||
env.editor.getSession().modeName = mode.name;
|
||||
};
|
||||
reader.readAsText(file);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,26 +1,41 @@
|
|||
//http://groovy.codehaus.org/Concurrency+with+Groovy
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
//http://groovy.codehaus.org/Martin+Fowler%27s+closure+examples+in+Groovy
|
||||
|
||||
def counter = new AtomicInteger()
|
||||
|
||||
synchronized out(message) {
|
||||
println(message)
|
||||
class Employee {
|
||||
def name, salary
|
||||
boolean manager
|
||||
String toString() { return name }
|
||||
}
|
||||
|
||||
def th = Thread.start {
|
||||
for( i in 1..8 ) {
|
||||
sleep 30
|
||||
out "thread loop $i"
|
||||
counter.incrementAndGet()
|
||||
}
|
||||
def emps = [new Employee(name:'Guillaume', manager:true, salary:200),
|
||||
new Employee(name:'Graeme', manager:true, salary:200),
|
||||
new Employee(name:'Dierk', manager:false, salary:151),
|
||||
new Employee(name:'Bernd', manager:false, salary:50)]
|
||||
|
||||
def managers(emps) {
|
||||
emps.findAll { e -> e.isManager() }
|
||||
}
|
||||
|
||||
for( j in 1..4 ) {
|
||||
sleep 50
|
||||
out "main loop $j"
|
||||
counter.incrementAndGet()
|
||||
assert emps[0..1] == managers(emps) // [Guillaume, Graeme]
|
||||
|
||||
def highPaid(emps) {
|
||||
threshold = 150
|
||||
emps.findAll { e -> e.salary > threshold }
|
||||
}
|
||||
|
||||
th.join()
|
||||
assert emps[0..2] == highPaid(emps) // [Guillaume, Graeme, Dierk]
|
||||
|
||||
assert counter.get() == 12
|
||||
def paidMore(amount) {
|
||||
{ e -> e.salary > amount}
|
||||
}
|
||||
def highPaid = paidMore(150)
|
||||
|
||||
assert highPaid(emps[0]) // true
|
||||
assert emps[0..2] == emps.findAll(highPaid)
|
||||
|
||||
def filename = 'test.txt'
|
||||
new File(filename).withReader{ reader -> doSomethingWith(reader) }
|
||||
|
||||
def readersText
|
||||
def doSomethingWith(reader) { readersText = reader.text }
|
||||
|
||||
assert new File(filename).text == readersText
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
function foo(items) {
|
||||
function foo (items, nada) {
|
||||
for (var i=0; i<items.length; i++) {
|
||||
alert(items[i] + "juhu");
|
||||
alert(items[i] + "juhu\n");
|
||||
} // Real Tab.
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,69 @@
|
|||
//http://www.scala-lang.org/node/227
|
||||
/* Defines a new method 'sort' for array objects */
|
||||
object implicits extends Application {
|
||||
implicit def arrayWrapper[A : ClassManifest](x: Array[A]) =
|
||||
new {
|
||||
def sort(p: (A, A) => Boolean) = {
|
||||
util.Sorting.stableSort(x, p); x
|
||||
// http://www.scala-lang.org/node/54
|
||||
|
||||
package examples.actors
|
||||
|
||||
import scala.actors.Actor
|
||||
import scala.actors.Actor._
|
||||
|
||||
abstract class PingMessage
|
||||
case object Start extends PingMessage
|
||||
case object SendPing extends PingMessage
|
||||
case object Pong extends PingMessage
|
||||
|
||||
abstract class PongMessage
|
||||
case object Ping extends PongMessage
|
||||
case object Stop extends PongMessage
|
||||
|
||||
object pingpong extends Application {
|
||||
val pong = new Pong
|
||||
val ping = new Ping(100000, pong)
|
||||
ping.start
|
||||
pong.start
|
||||
ping ! Start
|
||||
}
|
||||
|
||||
class Ping(count: Int, pong: Actor) extends Actor {
|
||||
def act() {
|
||||
println("Ping: Initializing with count "+count+": "+pong)
|
||||
var pingsLeft = count
|
||||
loop {
|
||||
react {
|
||||
case Start =>
|
||||
println("Ping: starting.")
|
||||
pong ! Ping
|
||||
pingsLeft = pingsLeft - 1
|
||||
case SendPing =>
|
||||
pong ! Ping
|
||||
pingsLeft = pingsLeft - 1
|
||||
case Pong =>
|
||||
if (pingsLeft % 1000 == 0)
|
||||
println("Ping: pong from: "+sender)
|
||||
if (pingsLeft > 0)
|
||||
self ! SendPing
|
||||
else {
|
||||
println("Ping: Stop.")
|
||||
pong ! Stop
|
||||
exit('stop)
|
||||
}
|
||||
}
|
||||
}
|
||||
val x = Array(2, 3, 1, 4)
|
||||
println("x = "+ x.sort((x: Int, y: Int) => x < y))
|
||||
}
|
||||
}
|
||||
|
||||
class Pong extends Actor {
|
||||
def act() {
|
||||
var pongCount = 0
|
||||
loop {
|
||||
react {
|
||||
case Ping =>
|
||||
if (pongCount % 1000 == 0)
|
||||
println("Pong: ping "+pongCount+" from "+sender)
|
||||
sender ! Pong
|
||||
pongCount = pongCount + 1
|
||||
case Stop =>
|
||||
println("Pong: Stop.")
|
||||
exit('stop)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
38
demo/kitchen-sink/docs/sh.sh
Executable file
38
demo/kitchen-sink/docs/sh.sh
Executable file
|
|
@ -0,0 +1,38 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Script to open a browser to current branch
|
||||
# Repo formats:
|
||||
# ssh git@github.com:richoH/gh_pr.git
|
||||
# http https://richoH@github.com/richoH/gh_pr.git
|
||||
# git git://github.com/richoH/gh_pr.git
|
||||
|
||||
username=`git config --get github.user`
|
||||
|
||||
get_repo() {
|
||||
git remote -v | grep ${@:-$username} | while read remote; do
|
||||
if repo=`echo $remote | grep -E -o "git@github.com:[^ ]*"`; then
|
||||
echo $repo | sed -e "s/^git@github\.com://" -e "s/\.git$//"
|
||||
exit 1
|
||||
fi
|
||||
if repo=`echo $remote | grep -E -o "https?://([^@]*@)?github.com/[^ ]*\.git"`; then
|
||||
echo $repo | sed -e "s|^https?://||" -e "s/^.*github\.com\///" -e "s/\.git$//"
|
||||
exit 1
|
||||
fi
|
||||
if repo=`echo $remote | grep -E -o "git://github.com/[^ ]*\.git"`; then
|
||||
echo $repo | sed -e "s|^git://github.com/||" -e "s/\.git$//"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Couldn't find a valid remote" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
if repo=`get_repo $@`; then
|
||||
branch=`git symbolic-ref HEAD 2>/dev/null`
|
||||
echo "http://github.com/$repo/pull/new/${branch##refs/heads/}"
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
Loading…
Add table
Add a link
Reference in a new issue