Commit 3850db0b by Aaron Leung

Renaming a file.

parent 19be8eea
build: sassc.cpp document.cpp node.cpp token.cpp prelexer.cpp
g++ -o bin/sassc sassc.cpp document.cpp document_parser.cpp document_evaluator.cpp evaluator.cpp document_emitter.cpp node.cpp token.cpp prelexer.cpp
g++ -o bin/sassc sassc.cpp document.cpp document_parser.cpp document_eval_pending.cpp evaluator.cpp document_emitter.cpp node.cpp token.cpp prelexer.cpp
test: build
ruby spec.rb spec/basic/
......
#include "document.hpp"
#include "evaluator.hpp"
namespace Sass {
void Document::eval_pending()
{
for (int i = 0; i < context.pending.size(); ++i) {
Node n(context.pending[i]);
switch (n.type)
{
case Node::assignment: {
Node val(n[1]);
if (val.type == Node::comma_list || val.type == Node::space_list) {
for (int i = 0; i < val.size(); ++i) {
if (val[i].eval_me) val[i] = eval(val[i], context.global_env);
}
}
else {
val = eval(val, context.global_env);
}
context.global_env[n[0].token] = val;
} break;
case Node::rule: {
// treat top-level lists differently from nested ones
Node rhs(n[1]);
if (rhs.type == Node::comma_list || rhs.type == Node::space_list) {
for (int i = 0; i < rhs.size(); ++i) {
if (rhs[i].eval_me) rhs[i] = eval(rhs[i], context.global_env);
}
}
else {
n[1] = eval(n[1], context.global_env);
}
} break;
case Node::mixin: {
context.global_env[n[0].token] = n;
} break;
case Node::expansion: {
Node body(context.global_env[n[0].token][2].clone());
n.children->pop_back();
n.children->pop_back();
n += body;
} break;
}
}
}
}
\ No newline at end of file
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