mirror of
https://github.com/bolero-MURAKAMI/Sprout
synced 2024-11-12 21:09:01 +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