Commit 23c83e19 by Aaron Leung

Okay, doing it correctly this time.

parent 1d65126a
...@@ -323,7 +323,7 @@ namespace Sass { ...@@ -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()); if (!f_env.count(resolved_name)) throw_eval_error("wrong number of arguments to " + name, expr.path(), expr.line());
f = f_env[resolved_name]; 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; } break;
......
...@@ -19,7 +19,7 @@ namespace Sass { ...@@ -19,7 +19,7 @@ namespace Sass {
double operate(Node::Type op, double lhs, double rhs); 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_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_selector(Node sel, Node pre, Node_Factory& new_Node);
Node expand_backref(Node sel, Node pre); Node expand_backref(Node sel, Node pre);
void extend_selectors(vector<pair<Node, Node> >&, multimap<Node, Node>&, Node_Factory&); void extend_selectors(vector<pair<Node, Node> >&, multimap<Node, Node>&, Node_Factory&);
......
...@@ -13,7 +13,7 @@ namespace Sass { ...@@ -13,7 +13,7 @@ namespace Sass {
using std::map; 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[]; typedef const char Signature[];
struct Function { struct Function {
...@@ -61,158 +61,158 @@ namespace Sass { ...@@ -61,158 +61,158 @@ namespace Sass {
// RGB Functions /////////////////////////////////////////////////////// // RGB Functions ///////////////////////////////////////////////////////
extern Signature rgb_sig; 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; 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; 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; 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; 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; 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; 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 /////////////////////////////////////////////////////// // HSL Functions ///////////////////////////////////////////////////////
extern Signature hsl_sig; 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; 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; 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; 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; 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; 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; 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; 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; 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; 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; 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; 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; 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 /////////////////////////////////////////////////// // Opacity Functions ///////////////////////////////////////////////////
extern Signature alpha_sig; 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; 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; 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; 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; 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; 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 /////////////////////////////////////////////// // Other Color Functions ///////////////////////////////////////////////
extern Signature adjust_color_sig; 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; 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 //////////////////////////////////////////////////// // String Functions ////////////////////////////////////////////////////
extern Signature unquote_sig; 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; 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 //////////////////////////////////////////////////// // Number Functions ////////////////////////////////////////////////////
extern Signature percentage_sig; 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; 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; 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; 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; 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 ////////////////////////////////////////////////////// // List Functions //////////////////////////////////////////////////////
extern Signature length_sig; 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; 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; 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; 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; 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 ///////////////////////////////////////////// // Introspection Functions /////////////////////////////////////////////
extern Signature type_of_sig; 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; 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; 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; 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 /////////////////////////////////////////////////// // Boolean Functions ///////////////////////////////////////////////////
extern Signature not_sig; 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; 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