Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
node-sass
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
楚学文
node-sass
Commits
23351ddb
Commit
23351ddb
authored
Sep 21, 2012
by
Aaron Leung
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Un-jankifying image-url.
parent
5a145434
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
41 additions
and
43 deletions
+41
-43
constants.cpp
constants.cpp
+3
-0
constants.hpp
constants.hpp
+3
-2
context.cpp
context.cpp
+5
-1
document_parser.cpp
document_parser.cpp
+0
-10
eval_apply.cpp
eval_apply.cpp
+0
-10
functions.cpp
functions.cpp
+26
-3
functions.hpp
functions.hpp
+4
-1
node.hpp
node.hpp
+0
-1
node_emitters.cpp
node_emitters.cpp
+0
-9
prelexer.cpp
prelexer.cpp
+0
-4
prelexer.hpp
prelexer.hpp
+0
-2
No files found.
constants.cpp
View file @
23351ddb
...
...
@@ -81,11 +81,14 @@ namespace Sass {
extern
const
char
star_slash
[]
=
"*/"
;
extern
const
char
hash_lbrace
[]
=
"#{"
;
extern
const
char
rbrace
[]
=
"}"
;
extern
const
char
rparen
[]
=
")"
;
extern
const
char
sign_chars
[]
=
"-+"
;
// type names
extern
const
char
numeric_name
[]
=
"numeric value"
;
extern
const
char
number_name
[]
=
"number"
;
extern
const
char
percentage_name
[]
=
"percentage"
;
extern
const
char
dimension_name
[]
=
"numeric dimension"
;
extern
const
char
string_name
[]
=
"string"
;
extern
const
char
bool_name
[]
=
"bool"
;
extern
const
char
color_name
[]
=
"color"
;
...
...
constants.hpp
View file @
23351ddb
...
...
@@ -81,15 +81,17 @@ namespace Sass {
extern
const
char
star_slash
[];
extern
const
char
hash_lbrace
[];
extern
const
char
rbrace
[];
extern
const
char
rparen
[];
extern
const
char
sign_chars
[];
// type names
extern
const
char
numeric_name
[];
extern
const
char
number_name
[];
extern
const
char
percentage_name
[];
extern
const
char
dimension_name
[];
extern
const
char
string_name
[];
extern
const
char
bool_name
[];
extern
const
char
color_name
[];
extern
const
char
list_name
[];
}
}
\ No newline at end of file
context.cpp
View file @
23351ddb
...
...
@@ -67,7 +67,9 @@ namespace Sass {
path_string
=
"'"
+
path_string
+
"/'"
;
image_path
=
new
char
[
path_string
.
length
()
+
1
];
std
::
strcpy
(
image_path
,
path_string
.
c_str
());
global_env
[
Token
::
make
(
image_path_var
)]
=
new_Node
(
Node
::
string_constant
,
""
,
0
,
Token
::
make
(
image_path
));
// stash this hidden variable for the image-url built-in to use
global_env
[
Token
::
make
(
image_path_var
)]
=
new_Node
(
Node
::
string_constant
,
"[IMAGE PATH]"
,
0
,
Token
::
make
(
image_path
));
}
Context
::~
Context
()
...
...
@@ -159,6 +161,8 @@ namespace Sass {
// Boolean Functions
register_function
(
not_sig
,
not_impl
);
register_function
(
if_sig
,
if_impl
);
// Path Functions
register_function
(
image_url_sig
,
image_url
);
}
void
Context
::
setup_color_map
()
...
...
document_parser.cpp
View file @
23351ddb
...
...
@@ -889,16 +889,6 @@ 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
;
the_call
.
should_eval
()
=
true
;
return
the_call
;
}
if
(
peek
<
functional
>
())
{
return
parse_function_call
();
}
...
...
eval_apply.cpp
View file @
23351ddb
...
...
@@ -304,16 +304,6 @@ namespace Sass {
return
expr
;
}
break
;
case
Node
:
:
image_url
:
{
Node
base
(
eval
(
expr
[
0
],
prefix
,
env
,
f_env
,
new_Node
,
ctx
));
Node
prefix
(
new_Node
(
Node
::
identifier
,
base
.
path
(),
base
.
line
(),
Token
::
make
(
ctx
.
image_path
)));
Node
fullpath
(
new_Node
(
Node
::
concatenation
,
base
.
path
(),
base
.
line
(),
2
));
fullpath
<<
prefix
<<
base
;
expr
.
pop_back
();
expr
<<
fullpath
;
return
expr
;
}
break
;
case
Node
:
:
function_call
:
{
// TO DO: default-constructed Function should be a generic callback (maybe)
...
...
functions.cpp
View file @
23351ddb
...
...
@@ -62,12 +62,18 @@ namespace Sass {
return
numeric_name
;
}
break
;
case
Node
:
:
number
:
case
Node
:
:
numeric_percentage
:
case
Node
:
:
numeric_dimension
:
{
case
Node
:
:
number
:
{
return
number_name
;
}
break
;
case
Node
:
:
numeric_percentage
:
{
return
percentage_name
;
}
break
;
case
Node
:
:
numeric_dimension
:
{
return
dimension_name
;
}
break
;
case
Node
:
:
string_t
:
case
Node
:
:
identifier
:
case
Node
:
:
value_schema
:
...
...
@@ -1163,5 +1169,22 @@ namespace Sass {
return
consequent
;
}
////////////////////////////////////////////////////////////////////////
// Path Functions //////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
extern
Signature
image_url_sig
=
"image-url($path, $only-path: false, $cache-buster: false)"
;
Node
image_url
(
const
Node
parameter_names
,
Environment
&
bindings
,
Node_Factory
&
new_Node
,
string
&
path
,
size_t
line
)
{
Node
base_path
(
bindings
[
parameter_names
[
0
].
token
()]);
bool
only_path
=
!
bindings
[
parameter_names
[
1
].
token
()].
is_false
();
Node
image_path_val
(
bindings
[
Token
::
make
(
image_path_var
)]);
Node
result
(
new_Node
(
Node
::
concatenation
,
path
,
line
,
2
));
result
<<
image_path_val
;
result
<<
base_path
;
if
(
!
only_path
)
result
=
(
new_Node
(
Node
::
uri
,
path
,
line
,
1
)
<<
result
);
return
result
;
}
}
}
functions.hpp
View file @
23351ddb
...
...
@@ -218,6 +218,9 @@ namespace Sass {
extern
Signature
if_sig
;
Node
if_impl
(
const
Node
,
Environment
&
,
Node_Factory
&
,
string
&
path
,
size_t
line
);
}
// Path Functions //////////////////////////////////////////////////////
extern
Signature
image_url_sig
;
Node
image_url
(
const
Node
,
Environment
&
,
Node_Factory
&
,
string
&
path
,
size_t
line
);
}
}
node.hpp
View file @
23351ddb
...
...
@@ -134,7 +134,6 @@ namespace Sass {
value
,
identifier
,
uri
,
image_url
,
textual_percentage
,
textual_dimension
,
textual_number
,
...
...
node_emitters.cpp
View file @
23351ddb
...
...
@@ -279,15 +279,6 @@ namespace Sass {
return
result
;
}
break
;
case
image_url
:
{
Node
fullpath
(
at
(
0
));
string
result
(
"url(
\"
"
);
result
+=
fullpath
[
0
].
unquote
();
result
+=
fullpath
[
1
].
unquote
();
result
+=
"
\"
)"
;
return
result
;
}
break
;
case
expansion
:
{
// ignore it
return
""
;
...
...
prelexer.cpp
View file @
23351ddb
...
...
@@ -283,10 +283,6 @@ namespace Sass {
return
sequence
<
optional
<
sequence
<
identifier
,
exactly
<
':'
>
>
>
,
// optional protocol
filename_schema
>
(
src
);
// optional trailing slash
}
// Match SCSS image-url function
const
char
*
image_url_prefix
(
const
char
*
src
)
{
return
exactly
<
image_url_kwd
>
(
src
);
}
// Match CSS "!important" keyword.
const
char
*
important
(
const
char
*
src
)
{
return
sequence
<
exactly
<
'!'
>
,
...
...
prelexer.hpp
View file @
23351ddb
...
...
@@ -359,8 +359,6 @@ namespace Sass {
const
char
*
uri_prefix
(
const
char
*
src
);
const
char
*
uri
(
const
char
*
src
);
const
char
*
url
(
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.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment