Commit 38b47f2f by Aaron Leung

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

parent d008daf9
......@@ -21,17 +21,14 @@ namespace Sass {
}
inline void Context::register_function(Function_Descriptor d, Implementation ip)
{
function_env[d[0]] = Function(d, ip);
cerr << "Registered function: " << d[0] << endl;
cerr << "Verifying " << function_env[string(d[0])].name << endl;
}
{ function_env[d[0]] = Function(d, ip); }
void Context::register_functions()
{
using namespace Functions;
register_function(rgb_descriptor, rgb);
register_function(rgba_descriptor, rgba);
register_function(curse_descriptor, curse);
}
}
\ No newline at end of file
......@@ -148,7 +148,6 @@ namespace Sass {
case Node::function_call: {
// 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);
} break;
......
#include "functions.hpp"
#include <iostream>
#
using std::cerr; using std::endl;
namespace Sass {
namespace Functions {
// TO DO: functions need to check the types of their arguments
// TO DO: functions need to check the types of their arguments
Function_Descriptor rgb_descriptor =
{ "rgb", "$red", "$green", "$blue", 0 };
Node rgb(const vector<Token>& parameters, map<Token, Node>& bindings) {
cerr << "rgb arg count: " << bindings.size() << endl;
Node color(Node::numeric_color, 0, 3);
color << bindings[parameters[0]]
<< bindings[parameters[1]]
......@@ -28,6 +28,11 @@ namespace Sass {
<< bindings[parameters[3]];
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 {
extern Function_Descriptor rgba_descriptor;
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