Merge branch 'master' of github.com:mapbox/mapbox-gl-native into android-mason
This commit is contained in:
2
configure
vendored
2
configure
vendored
@@ -45,7 +45,7 @@ case ${MASON_PLATFORM} in
|
||||
LIBUV_VERSION=0.10.28
|
||||
ZLIB_VERSION=system
|
||||
BOOST_VERSION=system
|
||||
NUNICODE_VERSION=1.4
|
||||
NUNICODE_VERSION=1.5-dev
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
@@ -6,48 +6,71 @@
|
||||
#include <libnu/libnu.h>
|
||||
#include <cstring>
|
||||
|
||||
namespace mbgl {
|
||||
namespace platform {
|
||||
namespace mbgl { namespace platform {
|
||||
|
||||
std::string uppercase(const std::string& str)
|
||||
{
|
||||
boost::u8_to_u32_iterator<std::string::const_iterator> itr(str.begin());
|
||||
boost::u8_to_u32_iterator<std::string::const_iterator> end(str.end());
|
||||
std::string output;
|
||||
char buf[5];
|
||||
for (; itr!=end; ++itr)
|
||||
std::stringstream output;
|
||||
char const *itr = str.c_str(), *nitr = itr;
|
||||
char const *end = itr + str.length();
|
||||
char lo[5] = { 0 };
|
||||
|
||||
for (; itr < end; itr = nitr)
|
||||
{
|
||||
char const* up = nu_toupper(*itr);
|
||||
if (up != 0) output.append(up);
|
||||
uint32_t code_point = 0;
|
||||
char const* buf = 0;
|
||||
|
||||
nitr = _nu_toupper(itr, end, nu_utf8_read, &code_point, &buf, 0);
|
||||
if (buf != 0)
|
||||
{
|
||||
do
|
||||
{
|
||||
buf = NU_CASEMAP_DECODING_FUNCTION(buf, &code_point);
|
||||
if (code_point == 0) break;
|
||||
output.write(lo, nu_utf8_write(code_point, lo) - lo);
|
||||
}
|
||||
while (code_point != 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
std::memset(buf, 0, 5);
|
||||
nu_utf8_write(*itr, buf);
|
||||
output.append(buf);
|
||||
output.write(itr, nitr - itr);
|
||||
}
|
||||
}
|
||||
return output;
|
||||
|
||||
return output.str();
|
||||
|
||||
}
|
||||
|
||||
std::string lowercase(const std::string& str)
|
||||
{
|
||||
boost::u8_to_u32_iterator<std::string::const_iterator> itr(str.begin());
|
||||
boost::u8_to_u32_iterator<std::string::const_iterator> end(str.end());
|
||||
std::string output;
|
||||
char buf[5];
|
||||
for (; itr!=end; ++itr)
|
||||
std::stringstream output;
|
||||
char const *itr = str.c_str(), *nitr = itr;
|
||||
char const *end = itr + str.length();
|
||||
char lo[5] = { 0 };
|
||||
|
||||
for (; itr < end; itr = nitr)
|
||||
{
|
||||
char const* lo = nu_tolower(*itr);
|
||||
if (lo != 0) output.append(lo);
|
||||
uint32_t code_point = 0;
|
||||
char const* buf = 0;
|
||||
|
||||
nitr = _nu_tolower(itr, end, nu_utf8_read, &code_point, &buf, 0);
|
||||
if (buf != 0)
|
||||
{
|
||||
do
|
||||
{
|
||||
buf = NU_CASEMAP_DECODING_FUNCTION(buf, &code_point);
|
||||
if (code_point == 0) break;
|
||||
output.write(lo, nu_utf8_write(code_point, lo) - lo);
|
||||
}
|
||||
while (code_point != 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
std::memset(buf, 0, 5);
|
||||
nu_utf8_write(*itr, buf);
|
||||
output.append(buf);
|
||||
output.write(itr, nitr - itr);
|
||||
}
|
||||
}
|
||||
return output;
|
||||
|
||||
return output.str();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}}
|
||||
|
||||
@@ -30,8 +30,6 @@ TEST(TextConversions, to_lower) {
|
||||
EXPECT_EQ(std::string("weisskopfseeadler"), platform::lowercase("weiSSkopfseeadler")); // DE
|
||||
|
||||
EXPECT_EQ(std::string("azərbaycan"), platform::lowercase("AZƏRBAYCAN")); // AZ
|
||||
|
||||
//EXPECT_EQ(std::string("ὀδυσσεύσ"), platform::lowercase("ὈΔΥΣΣΕΎΣ")); // GR
|
||||
// nunicode can't map last Σ to word-ending ς
|
||||
EXPECT_EQ(std::string("ὀδυσσεύς"), platform::lowercase("ὈΔΥΣΣΕΎΣ")); // GR
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user