diff --git a/lib/ace/mode/html.js b/lib/ace/mode/html.js
index 2dced037..31c645e5 100644
--- a/lib/ace/mode/html.js
+++ b/lib/ace/mode/html.js
@@ -41,6 +41,7 @@ var oop = require("pilot/oop");
var TextMode = require("ace/mode/text").Mode;
var JavaScriptMode = require("ace/mode/javascript").Mode;
var CssMode = require("ace/mode/css").Mode;
+var RubyMode = require("ace/mode/ruby").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var HtmlHighlightRules = require("ace/mode/html_highlight_rules").HtmlHighlightRules;
@@ -49,6 +50,7 @@ var Mode = function() {
this.$js = new JavaScriptMode();
this.$css = new CssMode();
+ this.$ruby = new RubyMode();
};
oop.inherits(Mode, TextMode);
@@ -91,6 +93,12 @@ oop.inherits(Mode, TextMode);
args[0] = split[1];
return this.$css[method].apply(this.$css, args);
}
+
+ var split = state.split("ruby-");
+ if (!split[0] && split[1]) {
+ args[0] = split[1];
+ return this.$ruby[method].apply(this.$ruby, args);
+ }
return defaultHandler ? defaultHandler() : undefined;
};
diff --git a/lib/ace/mode/html_highlight_rules.js b/lib/ace/mode/html_highlight_rules.js
index b47266c9..6fe97112 100644
--- a/lib/ace/mode/html_highlight_rules.js
+++ b/lib/ace/mode/html_highlight_rules.js
@@ -122,7 +122,7 @@ var HtmlHighlightRules = function() {
ruby : [ {
token : "text",
- regex : ">",
+ regex : ".",
next : "ruby-start"
}, {
token : "keyword",
@@ -202,7 +202,7 @@ var HtmlHighlightRules = function() {
this.addRules(rubyRules, "ruby-");
this.$rules["ruby-start"].unshift({
token: "text",
- regex: "<\\/(?=%)",
+ regex: "%>",
next: "tag"
});
};