Giter VIP home page Giter VIP logo

namedgroupparsingtest's Introduction

NamedGroupParsingTest

Exmaple Result: image

    private static IDictionary<string, string> RenderTemplates { get; } =
        new Dictionary<string, string>(
            new KeyValuePair<string, string>[]
            {
                new("Phone", "{{areaCode}}.{{prefix}}.{{number}}"),
                new("Decimal", "{{#sign}}({{number}}.{{decimal}}){{/sign}}{{^sign}}{{number}}.{{decimal}}{{/sign}}")
            });
            
    private static FieldConfiguration[] FieldConfigurations { get; } =
    {
        new(DataType.PhoneNumber,
            @"[\+]?[(]?(?<areaCode>[\d]{3})[)]?[-\s\.]?(?<prefix>[\d]{3})[-\s\.]?(?<number>[\d]{4,6})"),
        new(DataType.Decimal, @"(?<number>[\d]{1,9}).(?<decimal>[\d]{1,9})(?<sign>[\-]?)")
    };
    
    private static FieldData[] FieldData { get; } =
    {
        new("(123)456-7890", DataType.PhoneNumber, RenderTemplates["Phone"]),
        new("(321)012-3456", DataType.PhoneNumber, RenderTemplates["Phone"]),
        new("123.456-", DataType.Decimal, RenderTemplates["Decimal"]),
        new("789.012", DataType.Decimal, RenderTemplates["Decimal"]),
        new("456.123-", DataType.Decimal, RenderTemplates["Decimal"])
    };
    
    ...
    
    private static void TestRegexParser()
    {
        var parsers = new ParserFactory(FieldConfigurations);

        foreach (var dataItem in FieldData)
        {
            var parser = parsers.GetParser(dataItem.Type);
            var result = parser.Parse(dataItem.Data);
            var renderer = new StubbleBuilder().Build();
            var output = renderer.Render(dataItem.RenderTemplate, result.ToExpando());

            Console.WriteLine(FieldConfigurations.FirstOrDefault(x => x.Type == dataItem.Type));
            Console.WriteLine(dataItem);
            Console.WriteLine($"Render Output = \"{output}\"");
        }
    }

namedgroupparsingtest's People

Contributors

jnewman1977 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.