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
d1dd655c
Commit
d1dd655c
authored
Apr 27, 2012
by
Aaron Leung
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of github.com:hcatlin/libsass
Conflicts: document_parser.cpp
parents
8ba80922
d7b13615
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
48 additions
and
38 deletions
+48
-38
Makefile
Makefile
+2
-1
document.cpp
document.cpp
+3
-2
document_parser.cpp
document_parser.cpp
+15
-12
eval_apply.cpp
eval_apply.cpp
+10
-5
functions.cpp
functions.cpp
+6
-8
node.cpp
node.cpp
+2
-2
prelexer.hpp
prelexer.hpp
+2
-2
sass_interface.cpp
sass_interface.cpp
+8
-6
No files found.
Makefile
View file @
d1dd655c
...
...
@@ -24,7 +24,7 @@ libsass: libsass_objs
prelexer.o
libsass_objs
:
sass_interface.cpp $(CPP_FILES)
g++
-O2
-c
-combine
sass_interface.cpp
$(CPP_FILES)
g++
-O2
-
Wall
-
c
-combine
sass_interface.cpp
$(CPP_FILES)
clean
:
rm
-rf
*
.o
*
.a
\ No newline at end of file
document.cpp
View file @
d1dd655c
...
...
@@ -139,9 +139,11 @@ namespace Sass {
case
expanded
:
root
.
emit_expanded_css
(
output
,
""
);
break
;
default
:
break
;
}
string
retval
(
output
.
str
());
if
(
!
retval
.
empty
())
retval
.
resize
(
retval
.
size
()
-
1
);
return
retval
;
}
}
\ No newline at end of file
}
document_parser.cpp
View file @
d1dd655c
...
...
@@ -85,6 +85,8 @@ namespace Sass {
catch
(
string
&
path
)
{
read_error
(
"error reading file
\"
"
+
path
+
"
\"
"
);
}
// unreached statement
return
Node
(
Node
::
none
);
}
Node
Document
::
parse_mixin_definition
()
...
...
@@ -370,10 +372,9 @@ namespace Sass {
else
if
(
peek
<
exactly
<
'['
>
>
(
position
))
{
return
parse_attribute_selector
();
}
else
{
syntax_error
(
"invalid selector after "
+
lexed
.
to_string
());
}
}
syntax_error
(
"invalid selector after "
+
lexed
.
to_string
());
// unreached statement
return
Node
(
Node
::
none
);}
Node
Document
::
parse_pseudo
()
{
if
(
lex
<
pseudo_not
>
())
{
...
...
@@ -420,9 +421,9 @@ namespace Sass {
else
if
(
lex
<
sequence
<
pseudo_prefix
,
identifier
>
>
())
{
return
Node
(
Node
::
pseudo
,
line_number
,
lexed
);
}
else
{
syntax_error
(
"unrecognized pseudo-class or pseudo-element"
);
}
syntax_error
(
"unrecognized pseudo-class or pseudo-element"
);
// unreached statement
return
Node
(
Node
::
none
);
}
Node
Document
::
parse_attribute_selector
()
...
...
@@ -477,7 +478,7 @@ namespace Sass {
block
.
has_statements
=
true
;
}
else
{
for
(
in
t
i
=
0
;
i
<
imported_tree
.
size
();
++
i
)
{
for
(
size_
t
i
=
0
;
i
<
imported_tree
.
size
();
++
i
)
{
if
(
imported_tree
[
i
].
type
==
Node
::
comment
||
imported_tree
[
i
].
type
==
Node
::
rule
)
{
block
[
0
].
has_statements
=
true
;
...
...
@@ -503,7 +504,7 @@ namespace Sass {
block
<<
parse_propset
();
block
[
0
].
has_statements
=
true
;
}
else
if
(
const
char
*
p
=
lookahead_for_selector
(
position
))
{
else
if
(
lookahead_for_selector
(
position
))
{
block
<<
parse_ruleset
(
definition
);
block
[
0
].
has_blocks
=
true
;
}
...
...
@@ -825,6 +826,8 @@ namespace Sass {
}
syntax_error
(
"error reading values after "
+
lexed
.
to_string
());
// unreached statement
return
Node
(
Node
::
none
);
}
extern
const
char
hash_lbrace
[]
=
"#{"
;
...
...
@@ -843,7 +846,8 @@ namespace Sass {
Node
schema
(
Node
::
string_schema
,
context
.
registry
,
line_number
,
1
);
while
(
i
<
str
.
end
)
{
if
(
p
=
find_first_in_interval
<
sequence
<
negate
<
exactly
<
'\\'
>
>
,
exactly
<
hash_lbrace
>
>
>
(
i
,
str
.
end
))
{
p
=
find_first_in_interval
<
sequence
<
negate
<
exactly
<
'\\'
>
>
,
exactly
<
hash_lbrace
>
>
>
(
i
,
str
.
end
);
if
(
p
)
{
if
(
i
<
p
)
schema
<<
Node
(
Node
::
identifier
,
line_number
,
Token
::
make
(
i
,
p
));
// accumulate the preceding segment if it's nonempty
const
char
*
j
=
find_first_in_interval
<
exactly
<
rbrace
>
>
(
p
,
str
.
end
);
// find the closing brace
if
(
j
)
{
...
...
@@ -1113,4 +1117,4 @@ namespace Sass {
//
// return p;
// }
//
}
\ No newline at end of file
// }
eval_apply.cpp
View file @
d1dd655c
...
...
@@ -142,6 +142,9 @@ namespace Sass {
case
Node
:
:
gte
:
return
(
lhs
>=
rhs
)
?
T
:
F
;
case
Node
:
:
lt
:
return
(
lhs
<
rhs
)
?
T
:
F
;
case
Node
:
:
lte
:
return
(
lhs
<=
rhs
)
?
T
:
F
;
default:
eval_error
(
"unknown comparison operator "
+
expr
.
content
.
token
.
to_string
(),
expr
.
line_number
,
expr
.
file_name
);
return
Node
(
Node
::
none
);
}
}
break
;
...
...
@@ -150,7 +153,7 @@ namespace Sass {
acc
<<
eval
(
expr
[
0
],
env
,
f_env
,
registry
);
Node
rhs
(
eval
(
expr
[
2
],
env
,
f_env
,
registry
));
accumulate
(
expr
[
1
].
type
,
acc
,
rhs
,
registry
);
for
(
in
t
i
=
3
;
i
<
expr
.
size
();
i
+=
2
)
{
for
(
size_
t
i
=
3
;
i
<
expr
.
size
();
i
+=
2
)
{
Node
rhs
(
eval
(
expr
[
i
+
1
],
env
,
f_env
,
registry
));
accumulate
(
expr
[
i
].
type
,
acc
,
rhs
,
registry
);
}
...
...
@@ -163,7 +166,7 @@ namespace Sass {
acc
<<
eval
(
expr
[
0
],
env
,
f_env
,
registry
);
Node
rhs
(
eval
(
expr
[
2
],
env
,
f_env
,
registry
));
accumulate
(
expr
[
1
].
type
,
acc
,
rhs
,
registry
);
for
(
in
t
i
=
3
;
i
<
expr
.
size
();
i
+=
2
)
{
for
(
size_
t
i
=
3
;
i
<
expr
.
size
();
i
+=
2
)
{
Node
rhs
(
eval
(
expr
[
i
+
1
],
env
,
f_env
,
registry
));
accumulate
(
expr
[
i
].
type
,
acc
,
rhs
,
registry
);
}
...
...
@@ -248,7 +251,7 @@ namespace Sass {
case
Node
:
:
string_schema
:
case
Node
:
:
value_schema
:
{
// cerr << "evaluating schema of size " << expr.size() << endl;
for
(
in
t
i
=
0
;
i
<
expr
.
size
();
++
i
)
{
for
(
size_
t
i
=
0
;
i
<
expr
.
size
();
++
i
)
{
expr
[
i
]
=
eval
(
expr
[
i
],
env
,
f_env
,
registry
);
}
return
expr
;
...
...
@@ -258,6 +261,8 @@ namespace Sass {
return
expr
;
}
}
return
expr
;
}
Node
accumulate
(
Node
::
Type
op
,
Node
&
acc
,
Node
&
rhs
,
vector
<
vector
<
Node
>*>&
registry
)
...
...
@@ -400,7 +405,7 @@ namespace Sass {
}
}
// plug the holes with default arguments if any
for
(
in
t
i
=
0
;
i
<
params
.
size
();
++
i
)
{
for
(
size_
t
i
=
0
;
i
<
params
.
size
();
++
i
)
{
if
(
params
[
i
].
type
==
Node
::
assignment
)
{
Node
param
(
params
[
i
]);
Token
name
(
param
[
0
].
content
.
token
);
...
...
@@ -411,7 +416,7 @@ namespace Sass {
}
// lexically link the new environment and eval the mixin's body
bindings
.
link
(
env
.
global
?
*
env
.
global
:
env
);
for
(
in
t
i
=
0
;
i
<
body
.
size
();
++
i
)
{
for
(
size_
t
i
=
0
;
i
<
body
.
size
();
++
i
)
{
body
[
i
]
=
eval
(
body
[
i
],
bindings
,
f_env
,
registry
);
}
return
body
;
...
...
functions.cpp
View file @
d1dd655c
...
...
@@ -568,12 +568,11 @@ namespace Sass {
else
if
(
!
n1
.
is_numeric
()
&&
!
n2
.
is_numeric
())
{
eval_error
(
"arguments to comparable must be numeric"
,
n1
.
line_number
,
n1
.
file_name
);
}
else
{
Node
F
(
Node
::
boolean
);
F
.
line_number
=
n1
.
line_number
;
F
.
content
.
boolean_value
=
false
;
return
F
;
}
Node
F
(
Node
::
boolean
);
F
.
line_number
=
n1
.
line_number
;
F
.
content
.
boolean_value
=
false
;
return
F
;
}
// Boolean Functions ///////////////////////////////////////////////////
...
...
@@ -597,4 +596,4 @@ namespace Sass {
}
}
\ No newline at end of file
}
node.cpp
View file @
d1dd655c
...
...
@@ -60,11 +60,9 @@ namespace Sass {
// result += at(0).to_string(t == backref ? prefix : "");
// }
Node
::
Type
t
=
at
(
0
).
type
;
result
+=
at
(
0
).
to_string
(
at
(
0
).
has_backref
?
prefix
:
""
);
for
(
size_t
i
=
1
;
i
<
size
();
++
i
)
{
Node
::
Type
t
=
at
(
i
).
type
;
result
+=
" "
;
result
+=
at
(
i
).
to_string
(
at
(
i
).
has_backref
?
prefix
:
""
);
}
...
...
@@ -395,6 +393,8 @@ namespace Sass {
case
value
:
buf
<<
' '
<<
string
(
content
.
token
);
break
;
default
:
break
;
}
}
...
...
prelexer.hpp
View file @
d1dd655c
...
...
@@ -388,8 +388,8 @@ namespace Sass {
template
<
prelexer
mx
>
const
char
*
find_first_in_interval
(
const
char
*
beg
,
const
char
*
end
)
{
while
((
beg
<
end
)
&&
*
beg
)
{
const
char
*
p
;
if
(
p
=
mx
(
beg
)
)
return
p
;
const
char
*
p
=
mx
(
beg
)
;
if
(
p
)
return
p
;
++
beg
;
}
return
0
;
...
...
sass_interface.cpp
View file @
d1dd655c
...
...
@@ -13,26 +13,28 @@ extern "C" {
using
namespace
std
;
sass_context
*
sass_new_context
()
{
return
(
sass_context
*
)
malloc
(
sizeof
(
sass_context
));
}
{
return
(
sass_context
*
)
calloc
(
1
,
sizeof
(
sass_context
));
}
void
sass_free_context
(
sass_context
*
ctx
)
{
free
(
ctx
->
output_string
);
if
(
ctx
->
output_string
)
free
(
ctx
->
output_string
);
free
(
ctx
);
}
sass_file_context
*
sass_new_file_context
()
{
return
(
sass_file_context
*
)
malloc
(
sizeof
(
sass_file_context
));
}
{
return
(
sass_file_context
*
)
calloc
(
1
,
sizeof
(
sass_file_context
));
}
void
sass_free_file_context
(
sass_file_context
*
ctx
)
{
free
(
ctx
->
output_string
);
if
(
ctx
->
output_string
)
free
(
ctx
->
output_string
);
free
(
ctx
);
}
sass_folder_context
*
sass_new_folder_context
()
{
return
(
sass_folder_context
*
)
malloc
(
sizeof
(
sass_folder_context
));
}
{
return
(
sass_folder_context
*
)
calloc
(
1
,
sizeof
(
sass_folder_context
));
}
static
char
*
process_document
(
Sass
::
Document
&
doc
,
int
style
)
{
using
namespace
Sass
;
...
...
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