simple handlebars mode
This commit is contained in:
parent
7b80bb793e
commit
3be21b77e5
6 changed files with 130 additions and 5 deletions
8
demo/kitchen-sink/docs/handlebars.hbs
Normal file
8
demo/kitchen-sink/docs/handlebars.hbs
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{{!-- Ace + :-}} --}}
|
||||||
|
|
||||||
|
<div id="comments">
|
||||||
|
{{#each comments}}
|
||||||
|
<h2><a href="/posts/{{../permalink}}#{{id}}">{{title}}</a></h2>
|
||||||
|
<div>{{body}}</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
12
demo/kitchen-sink/docs/verilog.v
Normal file
12
demo/kitchen-sink/docs/verilog.v
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
always @(negedge reset or posedge clk) begin
|
||||||
|
if (reset == 0) begin
|
||||||
|
d_out <= 16'h0000;
|
||||||
|
d_out_mem[resetcount] <= d_out;
|
||||||
|
laststoredvalue <= d_out;
|
||||||
|
end else begin
|
||||||
|
d_out <= d_out + 1'b1;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
always @(bufreadaddr)
|
||||||
|
bufreadval = d_out_mem[bufreadaddr];
|
||||||
|
|
@ -70,11 +70,12 @@ var supportedModes = {
|
||||||
golang: ["go"],
|
golang: ["go"],
|
||||||
Groovy: ["groovy"],
|
Groovy: ["groovy"],
|
||||||
HAML: ["haml"],
|
HAML: ["haml"],
|
||||||
|
Handlebars: ["hbs|handlebars|tpl|mustache"],
|
||||||
Haskell: ["hs"],
|
Haskell: ["hs"],
|
||||||
haXe: ["hx"],
|
haXe: ["hx"],
|
||||||
HTML: ["htm|html|xhtml"],
|
HTML: ["htm|html|xhtml"],
|
||||||
HTML_Ruby: ["erb|rhtml|html.erb"],
|
HTML_Ruby: ["erb|rhtml|html.erb"],
|
||||||
Ini: ["ini|conf"],
|
INI: ["ini|conf|cfg|prefs"],
|
||||||
Jade: ["jade"],
|
Jade: ["jade"],
|
||||||
Java: ["java"],
|
Java: ["java"],
|
||||||
JavaScript: ["js"],
|
JavaScript: ["js"],
|
||||||
|
|
@ -135,9 +136,10 @@ var supportedModes = {
|
||||||
Typescript: ["ts|typescript|str"],
|
Typescript: ["ts|typescript|str"],
|
||||||
VBScript: ["vbs"],
|
VBScript: ["vbs"],
|
||||||
Velocity: ["vm"],
|
Velocity: ["vm"],
|
||||||
|
Verilog: ["v|vh|sv|svh"],
|
||||||
XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl"],
|
XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl"],
|
||||||
XQuery: ["xq"],
|
XQuery: ["xq"],
|
||||||
YAML: ["yaml"]
|
YAML: ["yaml|yml"]
|
||||||
};
|
};
|
||||||
|
|
||||||
var nameOverrides = {
|
var nameOverrides = {
|
||||||
|
|
|
||||||
31
lib/ace/mode/handlebars.js
Normal file
31
lib/ace/mode/handlebars.js
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
/* global define */
|
||||||
|
|
||||||
|
define(function(require, exports, module) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var oop = require("../lib/oop");
|
||||||
|
var HtmlMode = require("./html").Mode;
|
||||||
|
var Tokenizer = require("../tokenizer").Tokenizer;
|
||||||
|
var HandlebarsHighlightRules = require("./handlebars_highlight_rules").HandlebarsHighlightRules;
|
||||||
|
var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour;
|
||||||
|
var HtmlFoldMode = require("./folding/html").FoldMode;
|
||||||
|
|
||||||
|
var Mode = function() {
|
||||||
|
HtmlMode.call(this);
|
||||||
|
var highlighter = new HandlebarsHighlightRules();
|
||||||
|
this.$tokenizer = new Tokenizer(highlighter.getRules());
|
||||||
|
this.$behaviour = new HtmlBehaviour();
|
||||||
|
|
||||||
|
this.$embeds = highlighter.getEmbeds();
|
||||||
|
|
||||||
|
this.foldingRules = new HtmlFoldMode();
|
||||||
|
};
|
||||||
|
|
||||||
|
oop.inherits(Mode, HtmlMode);
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
|
||||||
|
}).call(Mode.prototype);
|
||||||
|
|
||||||
|
exports.Mode = Mode;
|
||||||
|
});
|
||||||
72
lib/ace/mode/handlebars_highlight_rules.js
Normal file
72
lib/ace/mode/handlebars_highlight_rules.js
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
/* global define */
|
||||||
|
|
||||||
|
define(function(require, exports, module) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var oop = require("../lib/oop");
|
||||||
|
var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules;
|
||||||
|
var xmlUtil = require("./xml_util");
|
||||||
|
function pop2(currentState, stack) {
|
||||||
|
stack.splice(0, 3);
|
||||||
|
return stack.shift() || "start";
|
||||||
|
}
|
||||||
|
var HandlebarsHighlightRules = function() {
|
||||||
|
HtmlHighlightRules.call(this);
|
||||||
|
var hbs = {
|
||||||
|
regex : "(?={{)",
|
||||||
|
push : "handlebars"
|
||||||
|
}
|
||||||
|
for (var key in this.$rules) {
|
||||||
|
this.$rules[key].unshift(hbs);
|
||||||
|
}
|
||||||
|
this.$rules.handlebars = [{
|
||||||
|
token : "comment.start",
|
||||||
|
regex : "{{!--",
|
||||||
|
push : [{
|
||||||
|
token : "comment.end",
|
||||||
|
regex : "--}}",
|
||||||
|
next : pop2
|
||||||
|
}, {
|
||||||
|
defaultToken : "comment"
|
||||||
|
}]
|
||||||
|
}, {
|
||||||
|
token : "comment.start",
|
||||||
|
regex : "{{!",
|
||||||
|
push : [{
|
||||||
|
token : "comment.end",
|
||||||
|
regex : "}}",
|
||||||
|
next : pop2
|
||||||
|
}, {
|
||||||
|
defaultToken : "comment"
|
||||||
|
}]
|
||||||
|
}, {
|
||||||
|
token : "storage.type.start", // begin section
|
||||||
|
regex : "{{[#\\^/&]?",
|
||||||
|
push : [{
|
||||||
|
token : "storage.type.end",
|
||||||
|
regex : "}}",
|
||||||
|
next : pop2
|
||||||
|
}, {
|
||||||
|
token : "variable.parameter",
|
||||||
|
regex : "[a-zA-Z_$][a-zA-Z0-9_$]*"
|
||||||
|
}]
|
||||||
|
}, {
|
||||||
|
token : "support.function", // unescaped variable
|
||||||
|
regex : "{{{",
|
||||||
|
push : [{
|
||||||
|
token : "support.function",
|
||||||
|
regex : "}}}",
|
||||||
|
next : pop2
|
||||||
|
}, {
|
||||||
|
token : "variable.parameter",
|
||||||
|
regex : "[a-zA-Z_$][a-zA-Z0-9_$]*"
|
||||||
|
}]
|
||||||
|
}];
|
||||||
|
|
||||||
|
this.normalizeRules();
|
||||||
|
};
|
||||||
|
|
||||||
|
oop.inherits(HandlebarsHighlightRules, HtmlHighlightRules);
|
||||||
|
|
||||||
|
exports.HandlebarsHighlightRules = HandlebarsHighlightRules;
|
||||||
|
});
|
||||||
Loading…
Add table
Add a link
Reference in a new issue