mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2024-11-14 10:39:05 +00:00
add example
This commit is contained in:
parent
a9da4b2a1f
commit
488d20425f
2 changed files with 111 additions and 0 deletions
44
libs/string/example/c_str_to_sprout_string.cpp
Normal file
44
libs/string/example/c_str_to_sprout_string.cpp
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
//
|
||||||
|
// Sprout C++ Library
|
||||||
|
//
|
||||||
|
// Copyright (c) 2012
|
||||||
|
// bolero-MURAKAMI : http://d.hatena.ne.jp/boleros/
|
||||||
|
// osyo-manga : http://d.hatena.ne.jp/osyo-manga/
|
||||||
|
//
|
||||||
|
// Readme:
|
||||||
|
// https://github.com/bolero-MURAKAMI/Sprout/blob/master/README
|
||||||
|
//
|
||||||
|
// License:
|
||||||
|
// Boost Software License - Version 1.0
|
||||||
|
// <http://www.boost.org/LICENSE_1_0.txt>
|
||||||
|
//
|
||||||
|
#include <sprout/string.hpp>
|
||||||
|
|
||||||
|
//
|
||||||
|
// C style string to Sprout.String
|
||||||
|
//
|
||||||
|
int
|
||||||
|
main(){
|
||||||
|
|
||||||
|
constexpr char const* c_str = "homu";
|
||||||
|
|
||||||
|
//
|
||||||
|
// String length is required
|
||||||
|
//
|
||||||
|
constexpr auto length = sprout::char_traits<char>::length(c_str);
|
||||||
|
static_assert(length == 4, "");
|
||||||
|
|
||||||
|
//
|
||||||
|
// To Sprout.String
|
||||||
|
//
|
||||||
|
constexpr auto str = sprout::string_from_c_str<length>( c_str );
|
||||||
|
static_assert(std::is_same<sprout::string<4> const, decltype(str)>{}, "");
|
||||||
|
static_assert(str == "homu", "");
|
||||||
|
|
||||||
|
constexpr auto str2 = sprout::string_from_c_str<length>( c_str, 2 );
|
||||||
|
static_assert(std::is_same<sprout::string<4> const, decltype(str2)>{}, "");
|
||||||
|
static_assert(str2 == "ho", "");
|
||||||
|
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
67
libs/weed/example/as_tuple.cpp
Normal file
67
libs/weed/example/as_tuple.cpp
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
//
|
||||||
|
// Sprout C++ Library
|
||||||
|
//
|
||||||
|
// Copyright (c) 2012
|
||||||
|
// bolero-MURAKAMI : http://d.hatena.ne.jp/boleros/
|
||||||
|
// osyo-manga : http://d.hatena.ne.jp/osyo-manga/
|
||||||
|
//
|
||||||
|
// Readme:
|
||||||
|
// https://github.com/bolero-MURAKAMI/Sprout/blob/master/README
|
||||||
|
//
|
||||||
|
// License:
|
||||||
|
// Boost Software License - Version 1.0
|
||||||
|
// <http://www.boost.org/LICENSE_1_0.txt>
|
||||||
|
//
|
||||||
|
#include <sprout/weed.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
main(){
|
||||||
|
namespace w = sprout::weed;
|
||||||
|
|
||||||
|
static constexpr auto source = sprout::to_string("homu:mado");
|
||||||
|
|
||||||
|
// String parser
|
||||||
|
static constexpr auto item = *w::lim<4>(w::char_ - ':');
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// If you do not want to use the as_tuple
|
||||||
|
//
|
||||||
|
{
|
||||||
|
static constexpr auto parser = item >> ':' >> item;
|
||||||
|
|
||||||
|
static constexpr auto result = w::parse(
|
||||||
|
sprout::begin(source), sprout::end(source), parser
|
||||||
|
);
|
||||||
|
static_assert(result.success(), "");
|
||||||
|
|
||||||
|
// !!!!
|
||||||
|
static_assert(result.attr() == "homumado", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// You need to use the as_tuple
|
||||||
|
//
|
||||||
|
{
|
||||||
|
static constexpr auto parser = w::as_tuple[item] >> ':' >> w::as_tuple[item];
|
||||||
|
|
||||||
|
static constexpr auto result = w::parse(
|
||||||
|
sprout::begin(source), sprout::end(source), parser
|
||||||
|
);
|
||||||
|
static_assert(result.success(), "");
|
||||||
|
|
||||||
|
static constexpr auto attr = result.attr();
|
||||||
|
|
||||||
|
// OK
|
||||||
|
static_assert(std::is_same<
|
||||||
|
sprout::tuple<sprout::string<4>, sprout::string<4>> const,
|
||||||
|
decltype(attr)
|
||||||
|
>::value, "");
|
||||||
|
static_assert(sprout::get<0>(attr) == "homu", "");
|
||||||
|
static_assert(sprout::get<1>(attr) == "mado", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in a new issue