Commit 6cffdb9f by Aaron Leung

Trying to implement image-url as a primitive.

parent fd900192
......@@ -51,6 +51,7 @@ namespace Sass {
color_names_to_values(map<string, Node>()),
color_values_to_names(map<Node, string>()),
new_Node(Node_Factory()),
image_path(""),
ref_count(0),
has_extensions(false)
{
......
......@@ -50,9 +50,10 @@ namespace Sass {
map<string, Node> color_names_to_values;
map<Node, string> color_values_to_names;
Node_Factory new_Node;
string image_path;
size_t ref_count;
string sass_path;
string css_path;
// string sass_path;
// string css_path;
bool has_extensions;
void collect_include_paths(const char* paths_str);
......
......@@ -821,6 +821,15 @@ namespace Sass {
return result;
}
if (lex< image_url_prefix >())
{
Node url(parse_value());
if (!lex< exactly<')'> >()) throw_syntax_error("call to image-url is missing ')'");
Node the_call(context.new_Node(Node::image_url, path, line, 1));
the_call << url;
return the_call;
}
if (peek< functional >())
{ return parse_function_call(); }
......
......@@ -289,6 +289,11 @@ namespace Sass {
return env[expr.token()];
} break;
case Node::image_url: {
expr[0] = eval(expr[0], prefix, env, f_env, new_Node, ctx);
return expr;
} break;
case Node::function_call: {
// TO DO: default-constructed Function should be a generic callback (maybe)
......
......@@ -128,6 +128,7 @@ namespace Sass {
value,
identifier,
uri,
image_url,
textual_percentage,
textual_dimension,
textual_number,
......
......@@ -278,6 +278,11 @@ namespace Sass {
optional<spaces>,
exactly<')'> >(src);
}
// Match SCSS image-url function
extern const char image_url_kwd[] = "image-url(";
const char* image_url_prefix(const char* src) {
return exactly<image_url_kwd>(src);
}
// Match CSS "!important" keyword.
extern const char important_kwd[] = "important";
const char* important(const char* src) {
......
......@@ -354,6 +354,8 @@ namespace Sass {
// Match CSS uri specifiers.
const char* uri_prefix(const char* src);
const char* uri(const char* src);
// Match SCSS image-url function.
const char* image_url_prefix(const char* src);
// Match CSS "!important" keyword.
const char* important(const char* src);
// Match Sass "!default" keyword.
......
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