CSS-Sass
view release on metacpan or search on metacpan
libsass/functions.cpp view on Meta::CPAN
if (String_Quoted* ss = dynamic_cast<String_Quoted*>(s)) {
if(ss->quote_mark()) newstr = quote(newstr);
}
}
catch (utf8::invalid_code_point) {
string msg("utf8::invalid_code_point");
error(msg, pstate, backtrace);
}
catch (utf8::not_enough_room) {
string msg("utf8::not_enough_room");
error(msg, pstate, backtrace);
}
catch (utf8::invalid_utf8) {
string msg("utf8::invalid_utf8");
error(msg, pstate, backtrace);
}
catch (...) { throw; }
return new (ctx.mem) String_Quoted(pstate, newstr);
}
Signature to_upper_case_sig = "to-upper-case($string)";
BUILT_IN(to_upper_case)
{
String_Constant* s = ARG("$string", String_Constant);
string str = s->value();
for (size_t i = 0, L = str.length(); i < L; ++i) {
if (Sass::Util::isAscii(str[i])) {
str[i] = std::toupper(str[i]);
}
}
if (String_Quoted* ss = dynamic_cast<String_Quoted*>(s)) {
str = ss->quote_mark() ? quote(str) : str;
}
return new (ctx.mem) String_Constant(pstate, str);
}
Signature to_lower_case_sig = "to-lower-case($string)";
BUILT_IN(to_lower_case)
{
String_Constant* s = ARG("$string", String_Constant);
string str = s->value();
for (size_t i = 0, L = str.length(); i < L; ++i) {
if (Sass::Util::isAscii(str[i])) {
str[i] = std::tolower(str[i]);
}
}
if (String_Quoted* ss = dynamic_cast<String_Quoted*>(s)) {
str = ss->quote_mark() ? quote(str, '"') : str;
}
return new (ctx.mem) String_Constant(pstate, str);
}
///////////////////
// NUMBER FUNCTIONS
///////////////////
Signature percentage_sig = "percentage($number)";
BUILT_IN(percentage)
{
Number* n = ARG("$number", Number);
if (!n->is_unitless()) error("argument $number of `" + string(sig) + "` must be unitless", pstate);
return new (ctx.mem) Number(pstate, n->value() * 100, "%");
}
Signature round_sig = "round($number)";
BUILT_IN(round)
{
Number* n = ARG("$number", Number);
Number* r = new (ctx.mem) Number(*n);
r->pstate(pstate);
r->value(std::floor(r->value() + 0.5));
return r;
}
Signature ceil_sig = "ceil($number)";
BUILT_IN(ceil)
{
Number* n = ARG("$number", Number);
Number* r = new (ctx.mem) Number(*n);
r->pstate(pstate);
r->value(std::ceil(r->value()));
return r;
}
Signature floor_sig = "floor($number)";
BUILT_IN(floor)
{
Number* n = ARG("$number", Number);
Number* r = new (ctx.mem) Number(*n);
r->pstate(pstate);
r->value(std::floor(r->value()));
return r;
}
Signature abs_sig = "abs($number)";
BUILT_IN(abs)
{
Number* n = ARG("$number", Number);
Number* r = new (ctx.mem) Number(*n);
r->pstate(pstate);
r->value(std::abs(r->value()));
return r;
}
Signature min_sig = "min($numbers...)";
BUILT_IN(min)
{
List* arglist = ARG("$numbers", List);
Number* least = 0;
for (size_t i = 0, L = arglist->length(); i < L; ++i) {
Number* xi = dynamic_cast<Number*>(arglist->value_at_index(i));
if (least) {
if (!xi) error("`" + string(sig) + "` only takes numeric arguments", pstate);
if (lt(xi, least, ctx)) least = xi;
} else least = xi;
}
return least;
}
( run in 0.748 second using v1.01-cache-2.11-cpan-39bf76dae61 )