示例#1
0
 public NodeContestParser(INodeParser createdParser, INodeParser updatedParser, INodeParser costParser, INodeParser customerParser, INodeParser descParser, INodeParser idParser)
 {
     mCreatedParser  = createdParser;
     mCostParser     = costParser;
     mCustomerParser = customerParser;
     mUpdatedParser  = updatedParser;
     mDescParser     = descParser;
     mIdParser       = idParser;
 }
示例#2
0
        private void ParserPass(int i)
        {
            var prop = stringBuilder.ToString();

            for (int p = 0; p < NodeParsers.Count; p++)
            {
                INodeParser parser = NodeParsers[p];

                IList <INodeData> nodes = null;

                int position = i - prop.Length;

                string patched;

                if (parser.IsValid(prop, out nodes, position, out patched))
                {
                    stringBuilder = new StringBuilder(patched);

                    for (int n = 0; n < nodes.Count; n++)
                    {
                        NodeDatas.Add(nodes[n]);

                        for (int i1 = 0; i1 < nodes[n].SubNodes.Count; i1++)
                        {
                            INodeData sub = nodes[n].SubNodes[i1];
                            if (!NodeUtils.IsTerminal(sub.Type))
                            {
                                IList <INodeData> subnodes;

                                var mainParser = new MainParser();

                                mainParser.ExtractNodeData(sub.Data, out subnodes);
                                sub.SubNodes.AddRange(subnodes);
                            }
                        }
                    }

                    // rest of the node
                    if (patched.Length != 0)
                    {
                        var patchedParser = new MainParser();

                        IList <INodeData> restOfNodes = null;

                        patchedParser.ExtractNodeData(patched, out restOfNodes);

                        for (int i1 = 0; i1 < restOfNodes.Count; i1++)
                        {
                            INodeData n = restOfNodes[i1];
                            NodeDatas.Add(n);
                        }
                    }

                    return;
                }
            }
        }
 public NodeContestParser(INodeParser createdParser, INodeParser updatedParser, INodeParser costParser, INodeParser customerParser, INodeParser descParser, INodeParser idParser)
 {
     mCreatedParser = createdParser;
     mCostParser = costParser;
     mCustomerParser = customerParser;
     mUpdatedParser = updatedParser;
     mDescParser = descParser;
     mIdParser = idParser;
 }
示例#4
0
        public PCParserTests(string filename)
        {
            _filename = Utils.GetFullPathToFile(filename);
            _parsers  = new List <INodeParser>();
            var interfaceType = typeof(INodeParser);
            var types         = AppDomain.CurrentDomain.GetAssemblies().SelectMany(s => s.GetTypes()).Where(p => interfaceType.IsAssignableFrom(p) && p.IsClass && p != typeof(DefaultParser));

            foreach (var type in types)
            {
                INodeParser instance = (INodeParser)Activator.CreateInstance(type);
                _parsers.Add(instance);
            }
        }
示例#5
0
        /// <exception cref="ArgumentNullException">
        /// <paramref name="nodeSelector"/> or
        /// <paramref name="nodeParser"/> is <see langword="null" />.</exception>
        public PluralsightCatalogParser(INodeSelector nodeSelector, INodeParser nodeParser)
        {
            if (nodeSelector == null)
            {
                throw new ArgumentNullException("nodeSelector");
            }

            if (nodeParser == null)
            {
                throw new ArgumentNullException("nodeParser");
            }

            _nodeSelector = nodeSelector;
            _nodeParser   = nodeParser;
        }
示例#6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="UiService"/> class.
        /// </summary>
        /// <param name="screenDumper">The screen dumper.</param>
        /// <param name="nodeParser">The node parser.</param>
        /// <param name="nodeFinder">The node finder.</param>
        public UiService(IScreenDumper screenDumper, INodeParser nodeParser, INodeFinder nodeFinder)
        {
            if (screenDumper == null)
            {
                throw new ArgumentNullException(nameof(screenDumper));
            }

            if (nodeParser == null)
            {
                throw new ArgumentNullException(nameof(nodeParser));
            }

            if (nodeFinder == null)
            {
                throw new ArgumentNullException(nameof(nodeFinder));
            }

            _screenDumper = screenDumper;
            _nodeParser   = nodeParser;
            _nodeFinder   = nodeFinder;
            Extensions    = new List <IUiExtension>();
        }
示例#7
0
    public PersonNodeParser(
        IElementParser elementParser,
        IPersonTextNodeParser personTextNodeParser,
        ISpeechNodeParser speechNodeParser,
        IThoughtNodeParser thoughtNodeParser,
        IMoodNodeParser moodNodeParser,
        IPauseNodeParser pauseNodeParser,
        ISetNodeParser setNodeParser,
        IUnsetNodeParser unsetNodeParser
        )
    {
        this.elementParser = elementParser;
        this.childParser   = personTextNodeParser;
        Settings           = ElementParserSettings.AggregatedNonRepeat(childParser);

        AggregationSettings = ElementParserSettings.Aggregated(
            speechNodeParser,
            thoughtNodeParser,
            moodNodeParser,
            pauseNodeParser,
            setNodeParser,
            unsetNodeParser
            );
    }
示例#8
0
    private static IElementParserSettings FakeSettings(params object[] parsers)
    {
        var settings = A.Dummy <IElementParserSettings>();

        var foundTextParser = false;

        foreach (var parser in parsers)
        {
            if (parser is INodeParser nodeParser)
            {
                INodeParser ignoredParser = null;
                A.CallTo(() => settings.ChildParsers.TryGet(nodeParser.Name, out ignoredParser))
                .Returns(true)
                .AssignsOutAndRefParameters(nodeParser);
            }
            else if (parser is IAttributeParser attributeParser)
            {
                IAttributeParser ignoredParser = null;
                A.CallTo(() => settings.AttributeParsers.TryGet(attributeParser.Name, out ignoredParser))
                .Returns(true)
                .AssignsOutAndRefParameters(attributeParser);
            }
            else if (parser is ITextParser textParser)
            {
                A.CallTo(() => settings.TextParser).Returns(textParser);
                foundTextParser = true;
            }
        }

        if (!foundTextParser)
        {
            A.CallTo(() => settings.TextParser).Returns(null);
        }

        return(settings);
    }
示例#9
0
        public SaveFile(ParserList parsers)
        {
            _parsers = new List <INodeParser>();
            switch (parsers)
            {
            case ParserList.All:
                var interfaceType = typeof(INodeParser);
                var types         = AppDomain.CurrentDomain.GetAssemblies().SelectMany(s => s.GetTypes()).Where(p => interfaceType.IsAssignableFrom(p) && p.IsClass && p != typeof(DefaultParser));
                foreach (var type in types)
                {
                    INodeParser instance = (INodeParser)Activator.CreateInstance(type);
                    _parsers.Add(instance);
                }

                break;

            case ParserList.Enhanced:
                _parsers.Add(new StatsSystemParser());
                _parsers.Add(new StatPoolSystemParser());
                goto case ParserList.Simple;

            case ParserList.Simple:
                _parsers.Add(new ItemDataParser());
                _parsers.Add(new InventoryParser());
                _parsers.Add(new ItemDropStorageManagerParser());
                _parsers.Add(new ItemDropStorageParser());
                _parsers.Add(new CharacterCustomizationAppearancesParser());
                _parsers.Add(new FactsDBParser());
                _parsers.Add(new FactsTableParser());
                break;
            }
            Guid      = Guid.NewGuid();
            FlatNodes = new List <NodeEntry>();
            Nodes     = new List <NodeEntry>();
            MappingHelper.Init();
        }
 public void Visit(INodeParser nodeParser)
 {
     nodeParser.Line += "Third Visitor\n";
 }
 public void Visit(INodeParser nodeParser)
 {
     nodeParser.Line += "Second Visitor\n";
 }
 public void Visit(INodeParser nodeParser)
 {
     nodeParser.Line += "First Visitor\n";
 }
示例#13
0
 public void Visit(INodeParser nodeParser)
 {
     nodeParser.Line = parse(nodeParser.Line);
 }
示例#14
0
 public StoryboardParser(INodeParser nodeParser)
 {
     this.nodeParser = nodeParser;
 }
示例#15
0
 public void Visit(INodeParser nodeParser)
 {
     nodeParser.Line = parseStart(nodeParser.Line);
     nodeParser.Line = parseElse(nodeParser.Line);
     nodeParser.Line = parseEnd(nodeParser.Line);
 }
 public MathsExpressionParser(INodeParser nodeParser, INodeInserter nodeInserter)
 {
     this.nodeParser = nodeParser;
     this.nodeInserter = nodeInserter;
 }
示例#17
0
 public static void Add(this ParserDictionary <INodeParser> dic, INodeParser parser)
 => dic.Add(parser.ElementName, parser);
示例#18
0
 public FakeAggregatedNodeParser(IElementParser elementParser, INodeParser childNodeParser)
 {
     this.elementParser = elementParser;
     settings           = FakeSettings(childNodeParser);
     Name = childNodeParser.Name;
 }
示例#19
0
 public GeneralCrawler(IScheduler scheduler, INodeParser parser)
 {
     _scheduler = scheduler;
     _parser    = parser;
 }