Commit 23c83e19 by Aaron Leung

Okay, doing it correctly this time.

parent 1d65126a
......@@ -323,7 +323,7 @@ namespace Sass {
if (!f_env.count(resolved_name)) throw_eval_error("wrong number of arguments to " + name, expr.path(), expr.line());
f = f_env[resolved_name];
}
return apply_function(f, expr[1], prefix, env, f_env, new_Node, ctx);
return apply_function(f, expr[1], prefix, env, f_env, new_Node, ctx, expr.path(), expr.line());
}
} break;
......
......@@ -19,7 +19,7 @@ namespace Sass {
double operate(Node::Type op, double lhs, double rhs);
Node apply_mixin(Node mixin, const Node args, Node prefix, Environment& env, map<string, Function>& f_env, Node_Factory& new_Node, Context& ctx, bool dynamic_scope = false);
Node apply_function(const Function& f, const Node args, Node prefix, Environment& env, map<string, Function>& f_env, Node_Factory& new_Node, Context& ctx, string& path = "", size_t line = 0);
Node apply_function(const Function& f, const Node args, Node prefix, Environment& env, map<string, Function>& f_env, Node_Factory& new_Node, Context& ctx, string& path, size_t line);
Node expand_selector(Node sel, Node pre, Node_Factory& new_Node);
Node expand_backref(Node sel, Node pre);
void extend_selectors(vector<pair<Node, Node> >&, multimap<Node, Node>&, Node_Factory&);
......
......@@ -13,7 +13,7 @@ namespace Sass {
using std::map;
typedef Node (*Primitive)(const Node, Environment&, Node_Factory&, string, size_t);
typedef Node (*Primitive)(const Node, Environment&, Node_Factory&, string&, size_t);
typedef const char Signature[];
struct Function {
......@@ -61,158 +61,158 @@ namespace Sass {
// RGB Functions ///////////////////////////////////////////////////////
extern Signature rgb_sig;
Node rgb(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node rgb(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature rgba_4_sig;
Node rgba_4(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node rgba_4(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature rgba_2_sig;
Node rgba_2(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node rgba_2(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature red_sig;
Node red(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node red(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature green_sig;
Node green(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node green(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature blue_sig;
Node blue(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node blue(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature mix_sig;
Node mix(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node mix(const Node, Environment&, Node_Factory&, string& path, size_t line);
// HSL Functions ///////////////////////////////////////////////////////
extern Signature hsl_sig;
Node hsl(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node hsl(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature hsla_sig;
Node hsla(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node hsla(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature hue_sig;
Node hue(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node hue(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature saturation_sig;
Node saturation(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node saturation(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature lightness_sig;
Node lightness(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node lightness(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature adjust_hue_sig;
Node adjust_hue(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node adjust_hue(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature lighten_sig;
Node lighten(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node lighten(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature darken_sig;
Node darken(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node darken(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature saturate_sig;
Node saturate(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node saturate(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature desaturate_sig;
Node desaturate(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node desaturate(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature grayscale_sig;
Node grayscale(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node grayscale(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature complement_sig;
Node complement(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node complement(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature invert_sig;
Node invert(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node invert(const Node, Environment&, Node_Factory&, string& path, size_t line);
// Opacity Functions ///////////////////////////////////////////////////
extern Signature alpha_sig;
Node alpha(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node alpha(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature opacity_sig;
Node opacity(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node opacity(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature opacify_sig;
Node opacify(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node opacify(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature fade_in_sig;
Node fade_in(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node fade_in(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature transparentize_sig;
Node transparentize(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node transparentize(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature fade_out_sig;
Node fade_out(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node fade_out(const Node, Environment&, Node_Factory&, string& path, size_t line);
// Other Color Functions ///////////////////////////////////////////////
extern Signature adjust_color_sig;
Node adjust_color(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node adjust_color(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature change_color_sig;
Node change_color(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node change_color(const Node, Environment&, Node_Factory&, string& path, size_t line);
// String Functions ////////////////////////////////////////////////////
extern Signature unquote_sig;
Node unquote(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node unquote(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature quote_sig;
Node quote(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node quote(const Node, Environment&, Node_Factory&, string& path, size_t line);
// Number Functions ////////////////////////////////////////////////////
extern Signature percentage_sig;
Node percentage(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node percentage(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature round_sig;
Node round(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node round(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature ceil_sig;
Node ceil(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node ceil(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature floor_sig;
Node floor(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node floor(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature abs_sig;
Node abs(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node abs(const Node, Environment&, Node_Factory&, string& path, size_t line);
// List Functions //////////////////////////////////////////////////////
extern Signature length_sig;
Node length(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node length(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature nth_sig;
Node nth(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node nth(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature join_sig;
Node join(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node join(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature append_sig;
Node append(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node append(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature compact_sig;
Node compact(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node compact(const Node, Environment&, Node_Factory&, string& path, size_t line);
// Introspection Functions /////////////////////////////////////////////
extern Signature type_of_sig;
Node type_of(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node type_of(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature unit_sig;
Node unit(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node unit(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature unitless_sig;
Node unitless(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node unitless(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature comparable_sig;
Node comparable(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node comparable(const Node, Environment&, Node_Factory&, string& path, size_t line);
// Boolean Functions ///////////////////////////////////////////////////
extern Signature not_sig;
Node not_impl(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node not_impl(const Node, Environment&, Node_Factory&, string& path, size_t line);
extern Signature if_sig;
Node if_impl(const Node, Environment&, Node_Factory&, string& path = "", size_t line = 0);
Node if_impl(const Node, Environment&, Node_Factory&, string& path, size_t line);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment