/// <summary> /// parse extract block from ruiji expression /// </summary> /// <param name="expression">ruiji expression</param> /// <returns>parse result with extract block</returns> public ParseResult <ExtractBlock> ParseExtract(string expression) { var result = new ParseResult <ExtractBlock>(expression); try { result.Result = RuiJiBlockParser.ParserBlock(expression); } catch (Exception ex) { result.Messages.Add(ex.Message); } return(result); }
/// <summary> /// parse storage from ruiji expression /// </summary> /// <param name="expression">ruiji expression</param> /// <returns>parse result with storage</returns> //public ParseResult<object> ParseStorage(string expression) //{ // return new ParseResult<object>(expression); //} /// <summary> /// parse extract feature from ruiji expression /// </summary> /// <param name="expression">ruiji expression</param> /// <returns>parse result wieth extract feature</returns> public ParseResult <ExtractFeature> ParseFeatureRule(string expression) { var result = new ParseResult <ExtractFeature>(expression); result.Result.Features = new List <ISelector>(); using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(expression))) using (var reader = new StreamReader(stream)) { while (!reader.EndOfStream) { var line = reader.ReadLine(); if (line.StartsWith("[") && line.EndsWith("]")) { var name = line.TrimStart('[').TrimEnd(']'); line = reader.ReadLine(); switch (name) { case "wildcard": { if (string.IsNullOrEmpty(line)) { result.Messages.Add("wildcard expression is empty"); continue; } result.Result.Wildcard = line; break; } case "feature": { while (!string.IsNullOrEmpty(line) && !reader.EndOfStream) { result.Result.Features.Add(RuiJiBlockParser.ParserSelector(line)); line = reader.ReadLine(); } break; } } } } } return(result); }