示例#1
0
        /// <summary>
        /// Gets the jade template.
        /// </summary>
        /// <returns>A new jade template.</returns>
        public ITemplate Parse(string jade)
        {
            jade.CheckNull("jade");

            var lexer         = new JadeLexer(jade);
            var rawTokens     = new TokenStream(lexer.Tokenize());
            var elementParser = new ElementParser();

            var lines = rawTokens.GetLines();

            DocType docType  = null;
            var     elements = new List <JElement>();

            if (!lines.IsAtEnd())
            {
                var firstLine = lines.Current;
                if (firstLine.Is(JadeTokenType.Doctype))
                {
                    firstLine.Consume();
                    firstLine.GetAny(TokenType.WhiteSpace);
                    docType = new DocType(firstLine.GetAny(TokenType.Word));
                    lines.Consume();
                }

                while (!lines.IsAtEnd())
                {
                    elementParser.ParseNextElement(lines).Do(elements.Add);
                }
            }

            return(new Template(docType, elements));
        }
示例#2
0
        /// <summary>
        /// On a resource wrapper being parsed.
        /// </summary>
        protected void OnWrapperParsed(ElementParser parser, HttpConnection client, WebResource resource)
        {
            // get the element that is to be replaced
            var content = parser.Root.Build();

            // replace text where required
            string replaceString = "{ReplaceText(" + resource.MimeType + ")}";
            int    replaceIndex  = content.IndexOf(replaceString, StringComparison.Ordinal);

            while (replaceIndex >= 0)
            {
                var sections = content.Split(replaceIndex, 0, replaceString.Length);

                content = sections.ArgA + resource.GetString() + sections.ArgB;

                replaceIndex = content.IndexOf(replaceString, StringComparison.Ordinal);
            }

            // replace source strings where required
            replaceString = "{ReplaceSource(" + resource.MimeType + ")}";
            replaceIndex  = content.IndexOf(replaceString, StringComparison.Ordinal);

            while (replaceIndex >= 0)
            {
                var sections = content.Split(replaceIndex, 0, replaceString.Length);

                content = sections.ArgA + resource.Path + sections.ArgB;

                replaceIndex = content.IndexOf(replaceString, StringComparison.Ordinal);
            }

            // just start sending the resource
            client.Send(parser.Root, true, _defaultSendOptions);
        }
示例#3
0
 public ListParser(string theKeyword, ElementParser theChildParser, bool thisRequiresChildren, Func <string, Tree <Cell> > makeTreeCell)
 {
     myChildParser     = theChildParser;
     myKeyword         = theKeyword;
     IRequireChildren  = thisRequiresChildren;
     this.makeTreeCell = makeTreeCell;
 }
示例#4
0
        private List <NovelGame> ReadGameTable(IHtmlDocument document)
        {
            var games = document.QuerySelectorAll("tr")
                        .Skip(1)
                        .Select(element =>
            {
                var td = element.GetElementsByTagName("td");

                NovelGame game = new NovelGame()
                {
                    Id      = ElementParser.ParseInt(td[0]),
                    Title   = td[1].TextContent,
                    Kana    = td[2].TextContent,
                    SellDay = DateTime.Parse(td[3].TextContent),
                    BrandId = ElementParser.ParseInt(td[4]),
                    Median  = ElementParser.ParseInt(td[5]),
                    Stdev   = ElementParser.ParseInt(td[6]),
                    Getchu  = ElementParser.ParseInt(td[14]),
                    OHP     = td[15].TextContent,
                    Model   = td[16].TextContent,
                    Rating  = ElementParser.ParseBool(td[18]),
                    Gyutto  = ElementParser.ParseInt(td[26]),
                    Fanza   = td[27].TextContent
                };

                return(game);
            });

            return(games.ToList());
        }
示例#5
0
        private List <Brand> ReadBrandTable(IHtmlDocument document)
        {
            var brands = document.QuerySelectorAll("tr")
                         .Skip(1)
                         .Select(element =>
            {
                var td = element.GetElementsByTagName("td");

                Brand brand = new Brand()
                {
                    Id         = ElementParser.ParseInt(td[0]),
                    Name       = td[1].TextContent,
                    Kana       = td[2].TextContent,
                    Maker      = td[3].TextContent,
                    MakerKana  = td[4].TextContent,
                    Url        = td[5].TextContent,
                    Kind       = td[7].TextContent == "CORPORATION" ? MakerType.CORPORATION : MakerType.CIRCLE,
                    Lost       = ElementParser.ParseBool(td[8]),
                    DirectLink = ElementParser.ParseBool(td[9]),
                    Median     = ElementParser.ParseInt(td[10]),
                    Twitter    = td[12].TextContent
                };

                return(brand);
            });

            return(brands.ToList());
        }
示例#6
0
        private Int32?ParseNumerator(ParseContext context, XmlElement numerator, XmlToModelResult xmlToModelResult)
        {
            ElementParser parser     = ParserRegistry.GetInstance().Get("INT.NONNEG");
            ParseContext  subContext = ParseContextImpl.Create("INT.NONNEG", typeof(Int32?), Ca.Infoway.Messagebuilder.Xml.ConformanceLevel
                                                               .MANDATORY, Cardinality.Create("1"), context);

            return((Int32?)parser.Parse(subContext, Arrays.AsList((XmlNode)numerator), xmlToModelResult).BareValue);
        }
示例#7
0
        private PhysicalQuantity ParseDenominator(ParseContext context, XmlElement numerator, XmlToModelResult xmlToModelResult)
        {
            ElementParser parser     = ParserRegistry.GetInstance().Get("PQ.TIME");
            ParseContext  subContext = ParseContextImpl.Create("PQ.TIME", typeof(PhysicalQuantity), Ca.Infoway.Messagebuilder.Xml.ConformanceLevel
                                                               .MANDATORY, Cardinality.Create("1"), context);

            return((PhysicalQuantity)parser.Parse(subContext, Arrays.AsList((XmlNode)numerator), xmlToModelResult).BareValue);
        }
示例#8
0
 public GameDetailsPage(IWebDriver driver)
 {
     _driver       = driver;
     pageElements  = ElementParser.Initialize_Page_Elements(ApplicationConfigs.ObjectRepository + @"GameDetails\GameDetails.json");
     _addToCartBtn = pageElements["addToCartBtn"];
     _gameName     = pageElements["gameName"];
     _screeShots   = pageElements["screeShots"];
     _quantityDdl  = pageElements["quantityDdl"];
 }
示例#9
0
        public HomePage(IWebDriver driver)
        {
            this.driver = driver;
            AutomatedActions.NavigationActions.InitBrowser(driver);

            PageElements = ElementParser.Initialize_Page_Elements(ApplicationConfigs.ObjectRepository + "Home\\HomePage.json");
            _searchBox   = PageElements["searchBox"];
            _searchbBtn  = PageElements["searchbBtn"];
        }
        public ResturantSelectionPage(IWebDriver driver)
        {
            this.driver = driver;
            AutomatedActions.NavigationActions.InitBrowser(driver);

            PageElements        = ElementParser.Initialize_Page_Elements(ApplicationConfigs.ObjectRepository + "Orders\\ResturantSelectionPage.json");
            _resturantSearchBox = PageElements["resturantSearchBox"];
            _resturantList      = PageElements["resturantList"];
        }
示例#11
0
        private Interval <PhysicalQuantity> ParseDenominatorSk(ParseContext context, XmlElement numerator, XmlToModelResult xmlToModelResult
                                                               )
        {
            // TM - Unsure if SK is allowed to send in any kind of PQ, or only specific ones. Picked PQ.BASIC to cover most scenarios.
            ElementParser parser     = ParserRegistry.GetInstance().Get("IVL<PQ.BASIC>");
            ParseContext  subContext = ParseContextImpl.Create("IVL<PQ.BASIC>", typeof(PhysicalQuantity), Ca.Infoway.Messagebuilder.Xml.ConformanceLevel
                                                               .MANDATORY, Cardinality.Create("1"), context);

            return((Interval <PhysicalQuantity>)parser.Parse(subContext, Arrays.AsList((XmlNode)numerator), xmlToModelResult).BareValue);
        }
        public OrderVerificationPage(IWebDriver driver)
        {
            this.driver = driver;
            AutomatedActions.NavigationActions.InitBrowser(driver);

            PageElements = ElementParser.Initialize_Page_Elements(ApplicationConfigs.ObjectRepository + "Orders\\OrderVerificationPage.json");

            _orderId       = PageElements["orderId"];
            _resturantName = PageElements["resturantName"];
        }
示例#13
0
    public async Task Empty()
    {
        using var reader = Helper.CreateReader("<teste />");
        var context       = A.Fake <IParsingContext>(i => i.Strict());
        var settings      = A.Fake <IElementParserSettings>(i => i.Strict());
        var parentContext = A.Fake <IParentParsingContext>(i => i.Strict());

        var sut = new ElementParser();
        await sut.ParseAsync(reader, context, parentContext, settings);
    }
示例#14
0
        private CSConvert(StreamReader _sr)
        {
            result.Clear();

            List <string> readList = StreamParser.Parse(_sr);

            ElemRoot elem = ElementParser.Parse(readList);

            result.AddRange(elem.Collecting().ToList());
        }
示例#15
0
        public void ShouldThrowAnInvalidOperationExceptionWhenWhenPasingTheNextElementAndTheTokenLineStreamIsEmpty()
        {
            var lines = new Mock <TokenLineStream>(Enumerable.Empty <TokenLine>());

            lines.Setup(l => l.IsAtEnd()).Returns(true);

            var elementParser = new ElementParser();

            elementParser.ParseNextElement(lines.Object);
        }
        public PaymentConfirmationPage(IWebDriver driver)
        {
            this.driver = driver;
            AutomatedActions.NavigationActions.InitBrowser(driver);

            PageElements    = ElementParser.Initialize_Page_Elements(ApplicationConfigs.ObjectRepository + "Payment\\PaymentConfirmationPage.json");
            _cancelBtn      = PageElements["cancelBtn"];
            _yesBtn         = PageElements["yesBtn"];
            _saveCookiesBtn = PageElements["saveCookiesBtn"];
            _tryAgainBtn    = PageElements["tryAgainBtn"];
        }
示例#17
0
        public LoginPage(IWebDriver driver)
        {
            this.driver = driver;
            AutomatedActions.NavigationActions.InitBrowser(driver);

            PageElements       = ElementParser.Initialize_Page_Elements(ApplicationConfigs.ObjectRepository + "Login\\LoginPage.json");
            _emailTextfield    = PageElements["emailTextfield"];
            _nextBtn           = PageElements["nextBtn"];
            _passwordTextField = PageElements["passwordTextField"];
            _nextBtn2          = PageElements["nextBtn2"];
        }
示例#18
0
        public void ShouldThrowAnUnexpectedTokenExceptionWhenPasingTheNextElementAndThereAreTokensRemaining()
        {
            var tokenLine = new Mock <TokenLine>(Enumerable.Empty <StringToken>());

            tokenLine.Setup(l => l.Current).Returns(new StringToken(TokenType.QuotedString, 1, 1, 1, "hello"));
            var lines = new Mock <TokenLineStream>(Enumerable.Empty <TokenLine>());

            lines.Setup(l => l.Current).Returns(tokenLine.Object);

            var elementParser = new ElementParser();

            elementParser.ParseNextElement(lines.Object);
        }
示例#19
0
        public virtual void TestShouldFindRtoParsers()
        {
            ElementParser elementParser = ParserRegistry.GetInstance().Get("RTO<PQ.DRUG,PQ.TIME>");

            Assert.IsNotNull(elementParser);
            Assert.IsTrue(elementParser is RtoPqPqElementParser, "RTO<PQ,PQ>");
            elementParser = ParserRegistry.GetInstance().Get("RTO<PQ.DRUG,PQ.DRUG>");
            Assert.IsNotNull(elementParser);
            Assert.IsTrue(elementParser is RtoPqPqElementParser, "RTO<PQ,PQ>");
            elementParser = ParserRegistry.GetInstance().Get("RTO<MO.CAD,PQ.BASIC>");
            Assert.IsNotNull(elementParser);
            Assert.IsTrue(elementParser is RtoMoPqElementParser, "RTO<MO,PQ>");
        }
示例#20
0
        public void ShouldReturnNullWhenPasingTheNextElementAndThereAreNoElementsToParse()
        {
            var tokenLine = new Mock <TokenLine>(Enumerable.Empty <StringToken>());

            tokenLine.Setup(l => l.IsAtEnd()).Returns(true);
            var lines = new Mock <TokenLineStream>(Enumerable.Empty <TokenLine>());

            lines.Setup(l => l.Current).Returns(tokenLine.Object);

            var elementParser = new ElementParser();
            var element       = elementParser.ParseNextElement(lines.Object);

            Assert.IsNull(element);
        }
示例#21
0
        public void ShouldReturnAnElementWhenPasingTheNextElement()
        {
            var tokenLine = new Mock <TokenLine>((IEnumerable <StringToken>) new[] { new StringToken(TokenType.Word, 1, 1, 1, "hello") });

            tokenLine.CallBase = true;
            var lines = new Mock <TokenLineStream>(Enumerable.Empty <TokenLine>());

            lines.Setup(l => l.Current).Returns(tokenLine.Object);

            var elementParser = new ElementParser();
            var element       = elementParser.ParseNextElement(lines.Object);

            Assert.IsNotNull(element);
            Assert.IsTrue(tokenLine.Object.IsAtEnd());
        }
        public PaymentDetailsPage(IWebDriver driver)
        {
            this.driver = driver;
            AutomatedActions.NavigationActions.InitBrowser(driver);

            PageElements      = ElementParser.Initialize_Page_Elements(ApplicationConfigs.ObjectRepository + "Payment\\PaymentDetailsPage.json");
            _idealMethodBtn   = PageElements["idealMethodBtn"];
            _cashMethodBtn    = PageElements["cashMethodBtn"];
            _addressText      = PageElements["addressText"];
            _townText         = PageElements["townText"];
            _surNameText      = PageElements["surNameText"];
            _emailAddressText = PageElements["emailAddressText"];
            _phoneNumberText  = PageElements["phoneNumberText"];
            _buyNowBtn        = PageElements["buyNowBtn"];
        }
示例#23
0
        public void ShouldGetTheCurrentLineWhenPasingTheNextElement()
        {
            var tokenLine = new Mock <TokenLine>(Enumerable.Empty <StringToken>());

            tokenLine.Setup(l => l.IsAtEnd()).Returns(true);
            var lines = new Mock <TokenLineStream>(Enumerable.Empty <TokenLine>());

            lines.Setup(l => l.Current).Returns(tokenLine.Object);

            var elementParser = new ElementParser();

            elementParser.ParseNextElement(lines.Object);

            Assert.IsTrue(tokenLine.Object.IsAtEnd());
            lines.Verify(l => l.Current, Times.Once);
        }
示例#24
0
        private BareANY CreateType(ParseContext context, XmlElement element, XmlToModelResult parseResult)
        {
            string        type   = GetParameterizedType(context);
            ElementParser parser = ParserRegistry.GetInstance().Get(type);

            if (parser != null)
            {
                return(parser.Parse(ParseContextImpl.CreateWithConstraints(type, context), Arrays.AsList((XmlNode)element), parseResult));
            }
            else
            {
                parseResult.AddHl7Error(new Hl7Error(Hl7ErrorCode.DATA_TYPE_ERROR, System.String.Format("Cannot find a parser for type {0}"
                                                                                                        , type), element));
                return(null);
            }
        }
示例#25
0
        public void ShouldConsumeTheFirstLineWhenPasingTheNextElementAndThereAreNoMoreTokensInTheLine()
        {
            var tokenLine = new Mock <TokenLine>((IEnumerable <StringToken>) new[] { new StringToken(TokenType.Word, 1, 1, 1, "hello") });

            tokenLine.CallBase = true;
            var lines = new Mock <TokenLineStream>(Enumerable.Empty <TokenLine>());

            lines.Setup(l => l.Current).Returns(tokenLine.Object);

            var elementParser = new ElementParser();

            elementParser.ParseNextElement(lines.Object);

            Assert.IsTrue(tokenLine.Object.IsAtEnd());
            lines.Verify(l => l.Consume(), Times.Once);
        }
示例#26
0
        public HomePage(IWebDriver driver)
        {
            pageElements = ElementParser.Initialize_Page_Elements(ApplicationConfigs.ObjectRepository + @"Home\Home.json");

            _gameBtn = pageElements["gameBtn"];
            _rightSliderController = pageElements["rightSliderController"];
            _leftSliderController  = pageElements["leftSliderController"];
            _slider              = pageElements["slider"];
            _gameItemsList       = pageElements["gameItemsList"];
            _shoppingMenuItem    = pageElements["shoppingMenuItem"];
            _shoppingBagItemText = pageElements["shoppingBagItemText"];
            lastitemInGameList   = 0;
            _addToCartItem       = pageElements["addToCartItem"];
            gameName             = string.Empty;
            driver = this.driver;
        }
示例#27
0
        // only checking II constraints for now
        /// <exception cref="Ca.Infoway.Messagebuilder.Marshalling.HL7.XmlToModelTransformationException"></exception>
        public override BareANY Parse(ParseContext context, IList <XmlNode> nodes, XmlToModelResult xmlToModelResult)
        {
            string subType             = GetSubType(context);
            ICollection <BareANY> list = GetCollectionType(context);

            ValidateCardinality(context, nodes, xmlToModelResult);
            foreach (XmlNode node in nodes)
            {
                string        actualType = DetermineActualType(node, subType, context.IsCda(), xmlToModelResult);
                ElementParser parser     = this.parserRegistry.Get(actualType);
                if (parser != null)
                {
                    BareANY result = parser.Parse(ParseContextImpl.Create(actualType, GetSubTypeAsModelType(context), context), ToList(node),
                                                  xmlToModelResult);
                    // constraints are *not* passed down with collections
                    if (result != null)
                    {
                        if (!StringUtils.Equals(subType, actualType))
                        {
                            result.DataType = StandardDataType.GetByTypeName(actualType);
                        }
                        if (list.Contains(result))
                        {
                            ResultAlreadyExistsInCollection(result, (XmlElement)node, xmlToModelResult);
                        }
                        list.Add(result);
                    }
                }
                else
                {
                    xmlToModelResult.AddHl7Error(new Hl7Error(Hl7ErrorCode.INTERNAL_ERROR, "No parser type found for " + actualType, (XmlElement
                                                                                                                                      )node));
                }
            }
            HandleConstraints(subType, list, context.GetConstraints(), nodes, xmlToModelResult);
            BareANY wrapResult = null;

            try
            {
                wrapResult = WrapWithHl7DataType(context.Type, subType, list, context);
            }
            catch (MarshallingException e)
            {
                xmlToModelResult.AddHl7Error(new Hl7Error(Hl7ErrorCode.INTERNAL_ERROR, e.Message, (string)null));
            }
            return(wrapResult);
        }
        public OrderCreationPage(IWebDriver driver)
        {
            this.driver = driver;
            AutomatedActions.NavigationActions.InitBrowser(driver);

            PageElements = ElementParser.Initialize_Page_Elements(ApplicationConfigs.ObjectRepository + "Orders\\OrderCreationPage.json");

            _mealsList      = PageElements["mealsList"];
            _mealNameList   = PageElements["mealNameList"];
            _addOneBtn      = PageElements["addOneBtn"];
            _drinkDdl       = PageElements["drinkDdl"];
            _addMainDishBtn = PageElements["addMainDishBtn"];
            _basketBtn      = PageElements["basketBtn"];
            _commentBtn     = PageElements["commentBtn"];
            _commentText    = PageElements["commentText"];
            _OrderBtn       = PageElements["OrderBtn"];
        }
示例#29
0
    public async Task AggregateNodeParser()
    {
        using var reader = Helper.CreateReader("<t><a /></t>");

        var parentContext = new FakeParentParsingContext();
        var context       = A.Fake <IParsingContext>(i => i.Strict());

        var node       = A.Dummy <INode>();
        var nodeParser = new FakeNodeParser("a", node);

        var sut      = new ElementParser();
        var settings = FakeSettings(new FakeAggregatedNodeParser(sut, nodeParser));

        await sut.ParseAsync(reader, context, parentContext, settings);

        parentContext.ShouldContainSingle(node);
    }
示例#30
0
        /// <exception cref="Ca.Infoway.Messagebuilder.Marshalling.HL7.XmlToModelTransformationException"></exception>
        private void WriteAttribute(BeanWrapper bean, Hl7Source source, IList <XmlNode> nodes, Relationship relationship, string traversalName
                                    )
        {
            if (relationship.Structural)
            {
                source.GetResult().AddHl7Error(new Hl7Error(Hl7ErrorCode.INTERNAL_ERROR, "Data found for relationship as an element but should have been an attribute. "
                                                            + (nodes.IsEmpty() ? ("(" + relationship.Name + ")") : XmlDescriber.DescribePath(nodes[0])), CollUtils.IsEmpty(nodes) ?
                                                            null : (XmlElement)nodes[0]));
            }
            string        type   = DetermineType(nodes, relationship, source, source.GetResult());
            ElementParser parser = (source.IsR2() ? ParserR2Registry.GetInstance().Get(type) : ParserRegistry.GetInstance().Get(type)
                                    );

            if (parser != null)
            {
                try
                {
                    ConstrainedDatatype constraints = source.GetService().GetConstraints(source.GetVersion(), relationship.ConstrainedType);
                    ParseContextImpl    context     = new ParseContextImpl(relationship, constraints, source.GetVersion(), source.GetDateTimeZone(),
                                                                           source.GetDateTimeTimeZone(), CodeTypeRegistry.GetInstance(), source.IsCda());
                    BareANY @object = parser.Parse(context, nodes, source.GetResult());
                    ChangeDatatypeIfNecessary(type, relationship, @object);
                    if (relationship.HasFixedValue())
                    {
                        ValidateNonstructuralFixedValue(relationship, @object, source, nodes);
                    }
                    else
                    {
                        // fixed means nothing to write to bean
                        bean.Write(relationship, @object);
                    }
                }
                catch (InvalidCastException e)
                {
                    source.GetResult().AddHl7Error(new Hl7Error(Hl7ErrorCode.INTERNAL_ERROR, "Can't parse relationship name=" + relationship.
                                                                Name + ", traversalName=" + traversalName + " [" + e.Message + "]", CollUtils.IsEmpty(nodes) ? null : (XmlElement)nodes[
                                                                    0]));
                }
            }
            else
            {
                source.GetResult().AddHl7Error(new Hl7Error(Hl7ErrorCode.INTERNAL_ERROR, "No parser for type \"" + type + "\". " + (nodes
                                                                                                                                    .IsEmpty() ? ("(" + relationship.Name + ")") : XmlDescriber.DescribePath(nodes[0])), CollUtils.IsEmpty(nodes) ? null : (
                                                                XmlElement)nodes[0]));
            }
        }
示例#31
0
 public ElementParserTest()
 {
     _parser = new ElementParser();
 }
示例#32
0
 public ListParser(string theKeyword, ElementParser theChildParser, bool thisRequiresChildren) {
     myChildParser = theChildParser;
     myKeyword = theKeyword;
     IRequireChildren = thisRequiresChildren;
 }
示例#33
0
 public ListParser(string theKeyword, ElementParser theChildParser, bool thisRequiresChildren, Func<string, Tree<Cell>> makeTreeCell)
 {
     myChildParser = theChildParser;
     myKeyword = theKeyword;
     IRequireChildren = thisRequiresChildren;
     this.makeTreeCell = makeTreeCell;
 }