SiddiqSoft.string2map 2.2.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package SiddiqSoft.string2map --version 2.2.1                
NuGet\Install-Package SiddiqSoft.string2map -Version 2.2.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SiddiqSoft.string2map" Version="2.2.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SiddiqSoft.string2map --version 2.2.1                
#r "nuget: SiddiqSoft.string2map, 2.2.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install SiddiqSoft.string2map as a Cake Addin
#addin nuget:?package=SiddiqSoft.string2map&version=2.2.1

// Install SiddiqSoft.string2map as a Cake Tool
#tool nuget:?package=SiddiqSoft.string2map&version=2.2.1                

string2map and string2vector

CodeQL Build Status alternate text is missing from this package README image alternate text is missing from this package README image alternate text is missing from this package README image alternate text is missing from this package README image

Simple C++17 library to aid in the parsing of HTTP headers into a STL map-type container.

Objective

Convert the input string with the specified delimiters into a map of key-value pairs with the given input:

  • std::[w]string
  • Key delimiter (example: : , :, =, = )
  • Value delimiter (end of the key-value pair element, example: CRLF)
  • Destination output type for key/value: string or wstring.
  • Destination container type: map, multimap, unordered_map.

API

namespace siddiqsoft::string2map
{
    template <typename T, typename D = T, typename R = std::map<D, D>>
    R parse(T& src, const T& keyDelimiter, const T& valueDelimiter, const T& terminalDelimiter= T{}) noexcept(false)
}
typename Type Comment
T string or wstring Type of the source string
D string or wstring Type of the destination string (used in the container)
R map, unordered_map, multimap Generally type is container<D,D>
namespace siddiqsoft::string2vector
{
    template <typename T>
    std::vector<T> parse(const T& src, const T& keyDelimiter)
}
typename Type Comment
T string or wstring Type of the source string

Usage

Get it from nuget or you can submodule it.

#include <string>
#include <map>

#include "siddiqsoft/string2map.hpp"

TEST(parse, Test_string2map)
{
    std::string sampleStr{ "Host: duplicate\r\n"
                    "Host: hostname.com\r\n"
                    "Content-Type: text\r\n"
                    "Content-Length: 99\r\n\r\n" };

    auto kvmap= siddiqsoft::string2map::parse<string,  // input string
                                              wstring, // transform to wstring
                                              map<wstring,wstring> // destination container
                                             >(sampleStr);

    // We expect only 3 items even though there is a duplicate key in the source string.
    // The std::map container ensures unique keys.
    EXPECT_EQ(3, kvmap.size());
}


TEST(parse, Test_string2vector)
{
    std::string sampleStr{ "/a/b/c/d" };

    auto kv= siddiqsoft::string2vector::parse<string>(sampleStr);

    EXPECT_EQ(4, kv.size());
}

<small align="right">

© 2020 Siddiq Software LLC. All rights reserved. Refer to LICENSE.

</small>

Product Compatible and additional computed target framework versions.
native native is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on SiddiqSoft.string2map:

Package Downloads
SiddiqSoft.restcl

Focussed REST Client for modern C++

SiddiqSoft.CosmosClient

Azure Cosmos REST-API Client for Modern C++

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.3.1 2,052 11/20/2021
2.3.0 22,274 9/9/2021
2.2.2 1,693 8/7/2021
2.2.1 1,715 8/3/2021
2.2.0 3,253 8/3/2021
2.1.1 3,681 8/2/2021
1.4.1 1,428 7/22/2021
1.4.0-main0001 1,445 7/22/2021
1.3.0 1,784 7/10/2021
1.2.2 1,619 7/9/2021
1.2.1-main0001 1,548 7/9/2021