コード例 #1
0
ファイル: Loader.cs プロジェクト: dog-lab/tree-collector
        /// <summary>
        /// Loads the listener.
        /// </summary>
        /// <param name="assemblyName">Path to the assembly containing the listener class.</param>
        /// <param name="className">Name of the listener class in the assembly.</param>
        /// <returns>A new Parse Listener object.</returns>
        /// <exception cref="ParseCodeException">
        /// Thrown when a valid BaseParser object cannot be created.
        /// </exception>
        public static IParseListener LoadListener(string assemblyName, string className)
        {
            Assembly assembly = Assembly.Load(AssemblyName.GetAssemblyName(assemblyName));

            if (assembly == null)
            {
                throw new ParseCodeException(string.Format("Assembly {0} not loaded", assemblyName));
            }

            Type type = assembly.GetType(className, true);

            if (type == null)
            {
                throw new ParseCodeException(string.Format("{0} not found in assembly: {1}", className, assemblyName));
            }

            IParseListener parseListener = Activator.CreateInstance(type) as IParseListener;

            if (parseListener == null)
            {
                throw new ParseCodeException(string.Format("{0} does not implement IParseListener", type.Name));
            }

            return(parseListener);
        }
コード例 #2
0
    public bool Parse(string line, IParseListener listener)
    {
      if (string.IsNullOrEmpty(line.Trim()))
      {
        return true;
      }

      return false;
    }
コード例 #3
0
    public bool Parse(string line, IParseListener resultBuilder)
    {
      foreach (var parser in _lineParsers)
      {
        var parsed = parser.Parse(line, resultBuilder);
        if (parsed) return true;
      }

      return false;
    }
コード例 #4
0
    public bool Parse(string line, IParseListener listener)
    {
      var match = regex.Match(line);
      if (!match.Success)
        return false;

      listener.OnNamespace(match.Groups["namespace"].Value);

      return true;
    }
コード例 #5
0
    void ParseLine(string line, IParseListener listener)
    {
      listener.BeginLine(_currentLineNumber, line);
      var parsed = _lineParser.Parse(line, listener);

      if (!parsed)
      {
        listener.AddError("Sorry, no idea what this line is supposed to be.");
      }
    }
コード例 #6
0
    public void Parse(TextReader reader, IParseListener listener)
    {
      if (reader == null) throw new ArgumentNullException("reader");

      _currentLineNumber = 0;
      string line = reader.ReadLine();
      while (line != null)
      {
        ParseLine(line, listener);

        ++_currentLineNumber;
        line = reader.ReadLine();
      }
    }
コード例 #7
0
    public bool Parse(string line, IParseListener listener)
    {
      var match = Regex.Match(line);
      if (!match.Success)
        return false;

      var verbs = match.GroupCaptures("acceptedVerb").Select(x => x.Value);
      var url = match.Groups["url"].Value;
      var hash = match.Groups["hash"].Value;
      var comment = match.Groups["comment"].Value;

      listener.OnUrl(verbs, url, hash, comment);

      return true;
    }