2014-04-09 17:43:14 +04:00
|
|
|
namespace LAview {
|
|
|
|
|
|
|
|
namespace Parsers {
|
|
|
|
|
|
|
|
delegate Parser ParserDelegate (Array<Link> links);
|
|
|
|
|
|
|
|
class Link {
|
|
|
|
|
2014-10-30 16:58:23 +03:00
|
|
|
public string[] begin { get; set; }
|
|
|
|
public string[] end { get; set; }
|
|
|
|
public unowned ParserDelegate create { get; set; }
|
2014-04-09 17:43:14 +04:00
|
|
|
|
|
|
|
public Link (string[] begin, string[] end, ParserDelegate? create = null) {
|
|
|
|
this.begin = begin; this.end = end; this.create = create;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class ParserFactory {
|
|
|
|
|
2014-10-30 16:58:23 +03:00
|
|
|
public Array<Link> group { get; set; default = new Array<Link> (); }
|
2014-04-09 17:43:14 +04:00
|
|
|
|
|
|
|
public virtual TextParser make_text_parser (Array<Link> links) {
|
|
|
|
return new TextParser (links);
|
|
|
|
}
|
|
|
|
|
|
|
|
public virtual LongtableParser make_longtable_parser (Array<Link> links) {
|
|
|
|
return new LongtableParser (links);
|
|
|
|
}
|
|
|
|
|
|
|
|
public virtual GraphicsParser make_graphics_parser (Array<Link> links) {
|
|
|
|
return new GraphicsParser (links);
|
|
|
|
}
|
|
|
|
|
|
|
|
public virtual TabularParser make_tabular_parser (Array<Link> links) {
|
|
|
|
return new TabularParser (links);
|
|
|
|
}
|
|
|
|
|
|
|
|
public ParserFactory () {
|
|
|
|
group.append_val (new Link ({}, {},
|
|
|
|
links => { return make_text_parser (links); }));
|
|
|
|
group.append_val (new Link ({"\\", "\\begin", "{", "longtable", "}"},
|
|
|
|
{"\\", "\\end", "{", "longtable", "}"},
|
|
|
|
links => { return make_longtable_parser (links); }));
|
|
|
|
group.append_val (new Link ({"\\", "\\includegraphics"}, {},
|
|
|
|
links => { return make_graphics_parser (links); }));
|
|
|
|
group.append_val (new Link ({"\\", "\\begin", "{", "tabular", "}"},
|
|
|
|
{"\\", "\\end", "{", "tabular", "}"},
|
|
|
|
links => { return make_tabular_parser (links); }));
|
|
|
|
group.append_val (new Link ({"\\", "\\begin", "{", "tabular", "*", "}"},
|
|
|
|
{"\\", "\\end", "{", "tabular", "*", "}"},
|
|
|
|
links => { return make_tabular_parser (links); }));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|