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
242e7bed
Commit
242e7bed
authored
May 25, 2012
by
Aaron Leung
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixing a bug in the refactored 'flatten' function.
parent
a4a0cb73
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
41 additions
and
10 deletions
+41
-10
eval_apply.cpp
eval_apply.cpp
+35
-1
node.cpp
node.cpp
+2
-3
node_emitters.cpp
node_emitters.cpp
+1
-3
sass_interface.cpp
sass_interface.cpp
+3
-3
No files found.
eval_apply.cpp
View file @
242e7bed
...
...
@@ -30,11 +30,26 @@ namespace Sass {
Node
args
(
expr
[
1
]);
if
(
!
env
.
query
(
name
))
throw_eval_error
(
"mixin "
+
name
.
to_string
()
+
" is undefined"
,
expr
.
path
(),
expr
.
line
());
Node
mixin
(
env
[
name
]);
Node
expansion
(
apply_mixin
(
mixin
,
args
,
env
,
f_env
,
new_Node
));
for
(
size_t
i
=
0
,
S
=
expansion
.
size
();
i
<
S
;
++
i
)
{
// cerr << expansion[i][0].to_string("") << expansion[i][1].to_string("") << endl;
}
expr
.
pop_back
();
expr
.
pop_back
();
expr
+=
expansion
;
for
(
size_t
i
=
0
,
S
=
expr
.
size
();
i
<
S
;
++
i
)
{
// cerr << expr[i][0].to_string("") << expr[i][1].to_string("") << endl;
}
return
expr
;
// Node evaluated_body(apply_mixin(mixin, args, env, f_env, new_Node));
// Node expansion(new_Node(Node::expansion, expr.path(), expr.line(), evaluated_body.size()));
// expansion += evaluated_body;
// return expansion;
}
break
;
case
Node
:
:
propset
:
...
...
@@ -47,6 +62,11 @@ namespace Sass {
for
(
size_t
i
=
0
,
S
=
expr
.
size
();
i
<
S
;
++
i
)
{
eval
(
expr
[
i
],
env
,
f_env
,
new_Node
);
}
// for (size_t i = 0; i < expr.size(); ++i) {
// if (expr[i].type() == Node::expansion) {
// expr.insert(expr.begin() + i + 1, expr[i].begin(), expr[i].end());
// }
// }
return
expr
;
}
break
;
...
...
@@ -56,6 +76,12 @@ namespace Sass {
for
(
size_t
i
=
0
,
S
=
expr
.
size
();
i
<
S
;
++
i
)
{
eval
(
expr
[
i
],
new_frame
,
f_env
,
new_Node
);
}
// for (size_t i = 0; i < expr.size(); ++i) {
// if (expr[i].type() == Node::expansion) {
// expr.insert(expr.begin() + i + 1, expr[i].begin(), expr[i].end());
// }
// }
// cerr << "EVALED?" << expr[1][0][1].to_string("") << endl;
return
expr
;
}
break
;
...
...
@@ -244,7 +270,7 @@ namespace Sass {
case
Node
:
:
string_schema
:
case
Node
:
:
value_schema
:
{
// cerr << "evaluating schema of size " << expr.size() << endl;
//
//
cerr << "evaluating schema of size " << expr.size() << endl;
for
(
size_t
i
=
0
,
S
=
expr
.
size
();
i
<
S
;
++
i
)
{
expr
[
i
]
=
eval
(
expr
[
i
],
env
,
f_env
,
new_Node
);
}
...
...
@@ -358,6 +384,12 @@ namespace Sass {
Node
apply_mixin
(
Node
&
mixin
,
const
Node
&
args
,
Environment
&
env
,
map
<
pair
<
string
,
size_t
>
,
Function
>&
f_env
,
Node_Factory
&
new_Node
)
{
// cerr << "applying mixin: " << mixin[0].token().to_string() << endl;
// cerr << "arguments:";
for
(
int
i
=
0
,
S
=
args
.
size
();
i
<
S
;
++
i
)
{
// cerr << " " << args[i].token().to_string();
}
// cerr << endl;
Node
params
(
mixin
[
1
]);
Node
body
(
new_Node
(
mixin
[
2
]));
// clone the body
Environment
bindings
;
...
...
@@ -391,6 +423,7 @@ namespace Sass {
Node
param
(
params
[
j
]);
Token
name
(
param
.
type
()
==
Node
::
variable
?
param
.
token
()
:
param
[
0
].
token
());
bindings
[
name
]
=
eval
(
args
[
i
],
env
,
f_env
,
new_Node
);
// cerr << "param " << name.to_string() << ": " << bindings[name].to_string("") << endl;
++
j
;
}
}
...
...
@@ -408,6 +441,7 @@ namespace Sass {
bindings
.
link
(
env
.
global
?
*
env
.
global
:
env
);
for
(
size_t
i
=
0
,
S
=
body
.
size
();
i
<
S
;
++
i
)
{
body
[
i
]
=
eval
(
body
[
i
],
bindings
,
f_env
,
new_Node
);
// cerr << "evaluated rule: " << body[i][0].to_string("") << ": " << body[i][1].to_string("") << endl;
}
return
body
;
}
...
...
node.cpp
View file @
242e7bed
...
...
@@ -9,11 +9,10 @@ namespace Sass {
// Node method implementations
// ------------------------------------------------------------------------
void
Node
::
flatten
()
{
if
(
type
()
!=
block
&&
type
()
!=
expansion
&&
type
()
!=
root
)
return
;
for
(
size_t
i
=
0
,
S
=
size
();
i
<
S
;
++
i
)
{
for
(
size_t
i
=
0
;
i
<
size
()
;
++
i
)
{
if
(
at
(
i
).
type
()
==
expansion
)
{
Node
expn
(
at
(
i
));
if
(
expn
.
has_expansions
())
expn
.
flatten
();
...
...
@@ -21,7 +20,7 @@ namespace Sass {
ip_
->
has_blocks
|=
expn
.
has_blocks
();
ip_
->
has_expansions
|=
expn
.
has_expansions
();
// leave the expansion node here and skip it during emission
insert
(
begin
()
+
i
,
expn
.
begin
(),
expn
.
end
());
insert
(
begin
()
+
i
+
1
,
expn
.
begin
(),
expn
.
end
());
}
}
}
...
...
node_emitters.cpp
View file @
242e7bed
...
...
@@ -323,9 +323,7 @@ namespace Sass {
switch
(
type
())
{
case
root
:
if
(
has_expansions
())
{
flatten
();
}
if
(
has_expansions
())
flatten
();
for
(
size_t
i
=
0
,
S
=
size
();
i
<
S
;
++
i
)
{
at
(
i
).
emit_nested_css
(
buf
,
depth
,
prefixes
);
}
...
...
sass_interface.cpp
View file @
242e7bed
...
...
@@ -49,9 +49,9 @@ extern "C" {
// cerr << "Destructions:\t" << Node::destructed << endl;
// cerr << "Registry size:\t" << doc.context.registry.size() << endl;
for
(
size_t
i
=
0
;
i
<
doc
.
context
.
registry
.
size
();
++
i
)
{
delete
doc
.
context
.
registry
[
i
];
}
//
for (size_t i = 0; i < doc.context.registry.size(); ++i) {
//
delete doc.context.registry[i];
//
}
// cerr << "Deallocations:\t" << i << endl;
char
*
c_output
=
(
char
*
)
malloc
(
output
.
size
()
+
1
);
...
...
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