Commit 38b47f2f by Aaron Leung

Removing log messages and adding a test case for builtin functions.

parent d008daf9
...@@ -21,17 +21,14 @@ namespace Sass { ...@@ -21,17 +21,14 @@ namespace Sass {
} }
inline void Context::register_function(Function_Descriptor d, Implementation ip) inline void Context::register_function(Function_Descriptor d, Implementation ip)
{ { function_env[d[0]] = Function(d, ip); }
function_env[d[0]] = Function(d, ip);
cerr << "Registered function: " << d[0] << endl;
cerr << "Verifying " << function_env[string(d[0])].name << endl;
}
void Context::register_functions() void Context::register_functions()
{ {
using namespace Functions; using namespace Functions;
register_function(rgb_descriptor, rgb); register_function(rgb_descriptor, rgb);
register_function(rgba_descriptor, rgba); register_function(rgba_descriptor, rgba);
register_function(curse_descriptor, curse);
} }
} }
\ No newline at end of file
...@@ -148,7 +148,6 @@ namespace Sass { ...@@ -148,7 +148,6 @@ namespace Sass {
case Node::function_call: { case Node::function_call: {
// TO DO: default-constructed Function should be a generic callback // TO DO: default-constructed Function should be a generic callback
cerr << "about to apply " << expr[0].content.token.to_string() << endl;
return apply_function(f_env[expr[0].content.token.to_string()], expr[1], env, f_env); return apply_function(f_env[expr[0].content.token.to_string()], expr[1], env, f_env);
} break; } break;
......
#include "functions.hpp" #include "functions.hpp"
#include <iostream> #include <iostream>
#
using std::cerr; using std::endl; using std::cerr; using std::endl;
namespace Sass { namespace Sass {
...@@ -10,7 +11,6 @@ namespace Sass { ...@@ -10,7 +11,6 @@ namespace Sass {
Function_Descriptor rgb_descriptor = Function_Descriptor rgb_descriptor =
{ "rgb", "$red", "$green", "$blue", 0 }; { "rgb", "$red", "$green", "$blue", 0 };
Node rgb(const vector<Token>& parameters, map<Token, Node>& bindings) { Node rgb(const vector<Token>& parameters, map<Token, Node>& bindings) {
cerr << "rgb arg count: " << bindings.size() << endl;
Node color(Node::numeric_color, 0, 3); Node color(Node::numeric_color, 0, 3);
color << bindings[parameters[0]] color << bindings[parameters[0]]
<< bindings[parameters[1]] << bindings[parameters[1]]
...@@ -29,5 +29,10 @@ namespace Sass { ...@@ -29,5 +29,10 @@ namespace Sass {
return color; return color;
} }
extern const char* the_curse = "Damn!";
Function_Descriptor curse_descriptor = { "curse", 0 };
Node curse(const vector<Token>& parameters, map<Token, Node>& bindings) {
return Node(Node::identifier, 0, Token::make(the_curse, the_curse + std::strlen(the_curse)));
}
} }
} }
\ No newline at end of file
...@@ -48,6 +48,9 @@ namespace Sass { ...@@ -48,6 +48,9 @@ namespace Sass {
extern Function_Descriptor rgba_descriptor; extern Function_Descriptor rgba_descriptor;
Node rgba(const vector<Token>& parameters, map<Token, Node>& bindings); Node rgba(const vector<Token>& parameters, map<Token, Node>& bindings);
extern Function_Descriptor curse_descriptor;
Node curse(const vector<Token>& parameters, map<Token, Node>& bindings);
} }
} }
div {
color: rgb(255, $blue: 0, $green: 255);
background: rgb(123, 45, 6);
}
div {
color: yellow;
background: #7b2d06; }
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