51
54
public override ParsedDocument Parse (ProjectDom dom, string fileName, string fileContent)
53
using (TextReader tr = new StringReader (fileContent)) {
54
Document doc = new Document (tr, null, fileName);
55
AspNetParsedDocument result = new AspNetParsedDocument (fileName) {
56
PageInfo = new PageInfo (),
60
doc.RootNode.AcceptVisit (new PageInfoVisitor (result.PageInfo));
62
foreach (ParserException pe in doc.ParseErrors)
63
result.Add (new Error (
64
pe.IsWarning? ErrorType.Warning : ErrorType.Error,
65
pe.Line, pe.Column, pe.Message));
56
using (var tr = new StringReader (fileContent)) {
57
var info = new PageInfo ();
58
var rootNode = new RootNode ();
59
var errors = new List<Error> ();
62
rootNode.Parse (fileName, tr);
63
} catch (Exception ex) {
64
LoggingService.LogError ("Unhandled error parsing ASP.NET document '" + (fileName ?? "") + "'", ex);
65
errors.Add (new Error (ErrorType.Error, 0, 0, "Unhandled error parsing ASP.NET document: " + ex.Message));
69
foreach (var pe in rootNode.ParseErrors)
70
errors.Add (new Error (ErrorType.Error, pe.Location.BeginLine, pe.Location.BeginColumn, pe.Message));
72
info.Populate (rootNode, errors);
74
var type = AspNetAppProject.DetermineWebSubtype (fileName);
75
if (type != info.Subtype) {
76
if (info.Subtype == WebSubtype.None) {
77
errors.Add (new Error (ErrorType.Error, 1, 1, "File directive is missing"));
80
errors.Add (new Error (ErrorType.Warning, 1, 1, "File directive does not match page extension"));
84
var result = new AspNetParsedDocument (fileName, type, rootNode, info);
88
if (MonoDevelop.Core.LoggingService.IsLevelEnabled (MonoDevelop.Core.Logging.LogLevel.Debug)) {
89
DebugStringVisitor dbg = new DebugStringVisitor ();
90
rootNode.AcceptVisit (dbg);
91
System.Text.StringBuilder sb = new System.Text.StringBuilder ();
92
sb.AppendLine ("Parsed AspNet file:");
93
sb.AppendLine (dbg.DebugString);
94
if (errors.Count > 0) {
95
sb.AppendLine ("Errors:");
96
foreach (ParserException ex in errors)
97
sb.AppendLine (ex.ToString ());
99
MonoDevelop.Core.LoggingService.LogDebug (sb.ToString ());
106
internal void AddError (ErrorType type, ILocation location, string message)
111
void Init (TextReader sr)