Adding code to render charsets
This commit is contained in:
parent
9cc23183be
commit
fadfaee440
@ -60,6 +60,10 @@
|
||||
fill: #dae9e5;
|
||||
}
|
||||
|
||||
.charset .charset-box {
|
||||
fill: #cbcbba;
|
||||
}
|
||||
|
||||
.placeholder text {
|
||||
fill: #fff;
|
||||
font-weight: bold;
|
||||
|
@ -6,6 +6,9 @@ import Match from './javascript/match.js';
|
||||
import MatchFragment from './javascript/match_fragment.js';
|
||||
import Subexp from './javascript/subexp.js';
|
||||
import Charset from './javascript/charset.js';
|
||||
import CharsetLiteral from './javascript/charset_literal.js';
|
||||
import CharsetEscape from './javascript/charset_escape.js';
|
||||
import CharsetRange from './javascript/charset_range.js';
|
||||
import Literal from './javascript/literal.js';
|
||||
import Escape from './javascript/escape.js';
|
||||
import AnyCharacter from './javascript/any_character.js';
|
||||
@ -21,6 +24,9 @@ parser.Parser.Match = Match;
|
||||
parser.Parser.MatchFragment = MatchFragment;
|
||||
parser.Parser.Subexp = Subexp;
|
||||
parser.Parser.Charset = Charset;
|
||||
parser.Parser.CharsetLiteral = CharsetLiteral;
|
||||
parser.Parser.CharsetEscape = CharsetEscape;
|
||||
parser.Parser.CharsetRange = CharsetRange;
|
||||
parser.Parser.Literal = Literal;
|
||||
parser.Parser.Escape = Escape;
|
||||
parser.Parser.AnyCharacter = AnyCharacter;
|
||||
|
@ -2,5 +2,69 @@ import _ from 'lodash';
|
||||
import Base from './base.js';
|
||||
|
||||
export default _.extend({}, Base, {
|
||||
type: 'charset'
|
||||
type: 'charset',
|
||||
|
||||
render() {
|
||||
this.container.addClass('charset');
|
||||
|
||||
this.label = this.container.text()
|
||||
.attr({
|
||||
text: this.invert() ? 'None of:' : 'One of:'
|
||||
})
|
||||
.transform(Snap.matrix()
|
||||
.translate(0, 0));
|
||||
|
||||
this.box = this.container.rect()
|
||||
.addClass('charset-box')
|
||||
.attr({
|
||||
rx: 3,
|
||||
ry: 3
|
||||
});
|
||||
|
||||
this.partContainer = this.container.group();
|
||||
|
||||
_.each(this.parts.elements, ((part) => {
|
||||
part.container = this.partContainer.group();
|
||||
part.render();
|
||||
}).bind(this));
|
||||
},
|
||||
|
||||
position() {
|
||||
var box, offset = 0;
|
||||
|
||||
_.each(this.parts.elements, ((part) => {
|
||||
var box;
|
||||
|
||||
part.position();
|
||||
|
||||
part.container.transform(Snap.matrix()
|
||||
.translate(0, offset));
|
||||
|
||||
box = part.container.getBBox();
|
||||
|
||||
offset += box.height + 5;
|
||||
}).bind(this));
|
||||
|
||||
box = this.partContainer.getBBox();
|
||||
|
||||
_.each(this.parts.elements, ((part) => {
|
||||
var partBox = part.container.getBBox();
|
||||
|
||||
part.container.transform(Snap.matrix()
|
||||
.add(part.container.transform().localMatrix)
|
||||
.translate(box.cx - partBox.cx, 0));
|
||||
}).bind(this));
|
||||
|
||||
this.box.attr({
|
||||
width: box.width + 10,
|
||||
height: box.height + 10
|
||||
});
|
||||
|
||||
this.partContainer.transform(Snap.matrix()
|
||||
.translate(5, 5));
|
||||
},
|
||||
|
||||
invert() {
|
||||
return this._invert.textValue !== '';
|
||||
}
|
||||
});
|
||||
|
10
src/js/parser/javascript/charset_escape.js
Normal file
10
src/js/parser/javascript/charset_escape.js
Normal file
@ -0,0 +1,10 @@
|
||||
import _ from 'lodash';
|
||||
import Escape from './escape.js';
|
||||
|
||||
export default _.extend({}, Escape, {
|
||||
type: 'charset_escape',
|
||||
|
||||
codeMap: _.extend({}, Escape.codeMap, {
|
||||
b: 'backspace'
|
||||
})
|
||||
});
|
6
src/js/parser/javascript/charset_literal.js
Normal file
6
src/js/parser/javascript/charset_literal.js
Normal file
@ -0,0 +1,6 @@
|
||||
import _ from 'lodash';
|
||||
import Literal from './literal.js';
|
||||
|
||||
export default _.extend({}, Literal, {
|
||||
type: 'literal'
|
||||
});
|
6
src/js/parser/javascript/charset_range.js
Normal file
6
src/js/parser/javascript/charset_range.js
Normal file
@ -0,0 +1,6 @@
|
||||
import _ from 'lodash';
|
||||
import Base from './base.js';
|
||||
|
||||
export default _.extend({}, Base, {
|
||||
type: 'charset_range'
|
||||
});
|
@ -20,15 +20,16 @@ grammar JavascriptRegexp
|
||||
subexp_no_capture <- "?:"
|
||||
subexp_positive_lookahead <- "?="
|
||||
subexp_negative_lookahead <- "?!"
|
||||
charset <- "[" "^"? ( charset_range / charset_terminal )* "]" <Charset>
|
||||
charset_range <- charset_terminal "-" charset_terminal
|
||||
charset_terminal <- charset_escape / charset_literal
|
||||
charset <- "[" _invert:"^"? parts:( charset_range / charset_terminal )* "]" <Charset>
|
||||
charset_range <- first:charset_terminal "-" last:charset_terminal <CharsetRange>
|
||||
charset_terminal <- charset_escape <CharsetEscape>
|
||||
/ charset_literal <CharsetLiteral>
|
||||
charset_escape <- "\\" esc:(
|
||||
code:[bdDfnrsStvwW] arg:""?
|
||||
/ code:"0" arg:[0-7]+
|
||||
/ code:"x" arg:( [0-9a-fA-F] [0-9a-fA-F] )
|
||||
/ code:"u" arg:( [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] ) )
|
||||
charset_literal <- [^\\\]] / ( "\\" . )
|
||||
charset_literal <- ( ""? literal:[^\\\]] ) / ( "\\" literal:. )
|
||||
terminal <- any_character <AnyCharacter>
|
||||
/ escape <Escape>
|
||||
/ literal <Literal>
|
||||
|
@ -44,6 +44,6 @@ export default _.extend({}, Base, {
|
||||
.translate(0, 0));
|
||||
}
|
||||
|
||||
this.render_bbox(this.container, this.container.getBBox());
|
||||
//this.render_bbox(this.container, this.container.getBBox());
|
||||
}
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user