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
022b477f
Commit
022b477f
authored
Apr 05, 2012
by
Aaron Leung
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Numeric builtins.
parent
45820803
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
91 additions
and
0 deletions
+91
-0
context.cpp
context.cpp
+7
-0
document_parser.cpp
document_parser.cpp
+2
-0
functions.cpp
functions.cpp
+59
-0
functions.hpp
functions.hpp
+23
-0
No files found.
context.cpp
View file @
022b477f
...
@@ -51,6 +51,12 @@ namespace Sass {
...
@@ -51,6 +51,12 @@ namespace Sass {
// String Functions
// String Functions
register_function
(
unquote_descriptor
,
unquote
);
register_function
(
unquote_descriptor
,
unquote
);
register_function
(
quote_descriptor
,
quote
);
register_function
(
quote_descriptor
,
quote
);
// Number Functions
register_function
(
percentage_descriptor
,
percentage
);
register_function
(
round_descriptor
,
round
);
register_function
(
ceil_descriptor
,
ceil
);
register_function
(
floor_descriptor
,
floor
);
register_function
(
abs_descriptor
,
abs
);
}
}
}
}
\ No newline at end of file
document_parser.cpp
View file @
022b477f
...
@@ -106,8 +106,10 @@ namespace Sass {
...
@@ -106,8 +106,10 @@ namespace Sass {
if
(
lex
<
exactly
<
'('
>
>
())
{
if
(
lex
<
exactly
<
'('
>
>
())
{
if
(
!
peek
<
exactly
<
')'
>
>
(
position
))
{
if
(
!
peek
<
exactly
<
')'
>
>
(
position
))
{
args
<<
parse_argument
();
args
<<
parse_argument
();
args
.
content
.
children
->
back
().
eval_me
=
true
;
while
(
lex
<
exactly
<
','
>
>
())
{
while
(
lex
<
exactly
<
','
>
>
())
{
args
<<
parse_argument
();
args
<<
parse_argument
();
args
.
content
.
children
->
back
().
eval_me
=
true
;
}
}
}
}
lex
<
exactly
<
')'
>
>
();
lex
<
exactly
<
')'
>
>
();
...
...
functions.cpp
View file @
022b477f
...
@@ -155,10 +155,69 @@ namespace Sass {
...
@@ -155,10 +155,69 @@ namespace Sass {
return
cpy
;
return
cpy
;
}
}
// Number Functions ////////////////////////////////////////////////////
Function_Descriptor
percentage_descriptor
=
{
"percentage"
,
"$value"
,
0
};
Node
percentage
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
)
{
Node
cpy
(
bindings
[
parameters
[
0
]].
clone
());
// TO DO: make sure it's not already a percentage
cpy
.
content
.
numeric_value
=
cpy
.
content
.
numeric_value
*
100
;
cpy
.
type
=
Node
::
numeric_percentage
;
return
cpy
;
}
Function_Descriptor
round_descriptor
=
{
"round"
,
"$value"
,
0
};
Node
round
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
)
{
Node
cpy
(
bindings
[
parameters
[
0
]].
clone
());
if
(
cpy
.
type
==
Node
::
numeric_dimension
)
{
cpy
.
content
.
dimension
.
numeric_value
=
std
::
floor
(
cpy
.
content
.
dimension
.
numeric_value
+
0.5
);
}
else
{
cpy
.
content
.
numeric_value
=
std
::
floor
(
cpy
.
content
.
numeric_value
+
0.5
);
}
return
cpy
;
}
Function_Descriptor
ceil_descriptor
=
{
"ceil"
,
"$value"
,
0
};
Node
ceil
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
)
{
Node
cpy
(
bindings
[
parameters
[
0
]].
clone
());
if
(
cpy
.
type
==
Node
::
numeric_dimension
)
{
cpy
.
content
.
dimension
.
numeric_value
=
std
::
ceil
(
cpy
.
content
.
dimension
.
numeric_value
);
}
else
{
cpy
.
content
.
numeric_value
=
std
::
ceil
(
cpy
.
content
.
numeric_value
);
}
return
cpy
;
}
Function_Descriptor
floor_descriptor
=
{
"floor"
,
"$value"
,
0
};
Node
floor
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
)
{
Node
cpy
(
bindings
[
parameters
[
0
]].
clone
());
if
(
cpy
.
type
==
Node
::
numeric_dimension
)
{
cpy
.
content
.
dimension
.
numeric_value
=
std
::
floor
(
cpy
.
content
.
dimension
.
numeric_value
);
}
else
{
cpy
.
content
.
numeric_value
=
std
::
floor
(
cpy
.
content
.
numeric_value
);
}
return
cpy
;
}
Function_Descriptor
abs_descriptor
=
{
"abs"
,
"$value"
,
0
};
Node
abs
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
)
{
Node
cpy
(
bindings
[
parameters
[
0
]].
clone
());
if
(
cpy
.
type
==
Node
::
numeric_dimension
)
{
cpy
.
content
.
dimension
.
numeric_value
=
std
::
fabs
(
cpy
.
content
.
dimension
.
numeric_value
);
}
else
{
cpy
.
content
.
numeric_value
=
std
::
fabs
(
cpy
.
content
.
numeric_value
);
}
return
cpy
;
}
...
...
functions.hpp
View file @
022b477f
...
@@ -43,7 +43,9 @@ namespace Sass {
...
@@ -43,7 +43,9 @@ namespace Sass {
};
};
namespace
Functions
{
namespace
Functions
{
// RGB Functions ///////////////////////////////////////////////////////
// RGB Functions ///////////////////////////////////////////////////////
extern
Function_Descriptor
rgb_descriptor
;
extern
Function_Descriptor
rgb_descriptor
;
Node
rgb
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
Node
rgb
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
...
@@ -69,10 +71,12 @@ namespace Sass {
...
@@ -69,10 +71,12 @@ namespace Sass {
Node
mix_3
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
Node
mix_3
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
// HSL Functions ///////////////////////////////////////////////////////
// HSL Functions ///////////////////////////////////////////////////////
extern
Function_Descriptor
invert_descriptor
;
extern
Function_Descriptor
invert_descriptor
;
Node
invert
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
Node
invert
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
// Opacity Functions ///////////////////////////////////////////////////
// Opacity Functions ///////////////////////////////////////////////////
extern
Function_Descriptor
alpha_descriptor
;
extern
Function_Descriptor
alpha_descriptor
;
extern
Function_Descriptor
opacity_descriptor
;
extern
Function_Descriptor
opacity_descriptor
;
Node
alpha
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
Node
alpha
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
...
@@ -86,11 +90,30 @@ namespace Sass {
...
@@ -86,11 +90,30 @@ namespace Sass {
Node
transparentize
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
Node
transparentize
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
// String Functions ////////////////////////////////////////////////////
// String Functions ////////////////////////////////////////////////////
extern
Function_Descriptor
unquote_descriptor
;
extern
Function_Descriptor
unquote_descriptor
;
Node
unquote
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
Node
unquote
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
extern
Function_Descriptor
quote_descriptor
;
extern
Function_Descriptor
quote_descriptor
;
Node
quote
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
Node
quote
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
// Number Functions ////////////////////////////////////////////////////
extern
Function_Descriptor
percentage_descriptor
;
Node
percentage
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
extern
Function_Descriptor
round_descriptor
;
Node
round
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
extern
Function_Descriptor
ceil_descriptor
;
Node
ceil
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
extern
Function_Descriptor
floor_descriptor
;
Node
floor
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
extern
Function_Descriptor
abs_descriptor
;
Node
abs
(
const
vector
<
Token
>&
parameters
,
map
<
Token
,
Node
>&
bindings
);
}
}
}
}
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