sassc 1.8.0 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +3 -1
- data/ext/libsass/include/sass2scss.h +10 -4
- data/ext/libsass/src/bind.cpp +1 -1
- data/ext/libsass/src/constants.cpp +0 -1
- data/ext/libsass/src/constants.hpp +0 -1
- data/ext/libsass/src/eval.cpp +8 -1
- data/ext/libsass/src/functions.cpp +9 -9
- data/ext/libsass/src/lexer.cpp +8 -0
- data/ext/libsass/src/lexer.hpp +2 -0
- data/ext/libsass/src/prelexer.cpp +8 -2
- data/ext/libsass/src/sass2scss.cpp +14 -9
- data/lib/sassc/version.rb +1 -1
- data/test/native_test.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91b3f5152e03b21d9b101c9ee37e998565a900fe
|
4
|
+
data.tar.gz: a872b4b0599925f217186897efa68c68e536837c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f81496b861e719e6aad4efb4fa392ced9503967a155e405680d278b5d10c8add33f1a4bcc2bd97d3bbce847d447ce9171e9c6762776ec0fd0d6ac217d64a6ec7
|
7
|
+
data.tar.gz: c3093d1aae7a2f0ffd6c192d5e6d198f75be5e2a6d8b9d094e33bd167b23ccbc6346858dd922bf4a17620cb890cf4ac7e246c660eea82fb8daaa79581717f22c
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@ This gem combines the speed of `libsass`, the [Sass C implementation](https://gi
|
|
6
6
|
|
7
7
|
### libsass Version
|
8
8
|
|
9
|
-
[3.3.
|
9
|
+
[3.3.1](https://github.com/sass/libsass/releases/tag/3.3.1)
|
10
10
|
|
11
11
|
## Usage
|
12
12
|
|
@@ -25,6 +25,8 @@ and [awesome contributors](https://github.com/bolandrm/sassc-ruby/graphs/contrib
|
|
25
25
|
|
26
26
|
## Changelog
|
27
27
|
|
28
|
+
- **1.8.1**
|
29
|
+
- Update to Libsass 3.3.1
|
28
30
|
- **1.8.0**
|
29
31
|
- Update to Libsass 3.3.0
|
30
32
|
- **1.8.0.pre2**
|
@@ -1,3 +1,9 @@
|
|
1
|
+
/**
|
2
|
+
* sass2scss
|
3
|
+
* Licensed under the MIT License
|
4
|
+
* Copyright (c) Marcel Greter
|
5
|
+
*/
|
6
|
+
|
1
7
|
#ifndef SASS2SCSS_H
|
2
8
|
#define SASS2SCSS_H
|
3
9
|
|
@@ -29,11 +35,11 @@
|
|
29
35
|
#include <iostream>
|
30
36
|
|
31
37
|
#ifndef SASS2SCSS_VERSION
|
32
|
-
|
38
|
+
// Hardcode once the file is copied from
|
39
|
+
// https://github.com/mgreter/sass2scss
|
40
|
+
#define SASS2SCSS_VERSION "1.0.5"
|
33
41
|
#endif
|
34
42
|
|
35
|
-
// using std::string
|
36
|
-
|
37
43
|
// add namespace for c++
|
38
44
|
namespace Sass
|
39
45
|
{
|
@@ -111,4 +117,4 @@ extern "C" {
|
|
111
117
|
} // __cplusplus defined.
|
112
118
|
#endif
|
113
119
|
|
114
|
-
#endif
|
120
|
+
#endif
|
data/ext/libsass/src/bind.cpp
CHANGED
@@ -125,7 +125,7 @@ namespace Sass {
|
|
125
125
|
// maybe we have another list as argument
|
126
126
|
List* ls = dynamic_cast<List*>(a->value());
|
127
127
|
// skip any list completely if empty
|
128
|
-
if (ls && ls->empty()) continue;
|
128
|
+
if (ls && ls->empty() && a->is_rest_argument()) continue;
|
129
129
|
// flatten all nested arglists
|
130
130
|
if (ls && ls->is_arglist()) {
|
131
131
|
for (size_t i = 0, L = ls->size(); i < L; ++i) {
|
@@ -127,7 +127,6 @@ namespace Sass {
|
|
127
127
|
extern const char hyphen[] = "-";
|
128
128
|
extern const char ellipsis[] = "...";
|
129
129
|
// extern const char url_space_chars[] = " \t\r\n\f";
|
130
|
-
extern const char escape_chars[] = " -~"; // need to include unicode spaces too
|
131
130
|
// type names
|
132
131
|
extern const char numeric_name[] = "numeric value";
|
133
132
|
extern const char number_name[] = "number";
|
data/ext/libsass/src/eval.cpp
CHANGED
@@ -1325,6 +1325,12 @@ namespace Sass {
|
|
1325
1325
|
if (ltype == Expression::NULL_VAL) error("Invalid null operation: \"null plus "+quote(unquote(rstr), '"')+"\".", lhs.pstate());
|
1326
1326
|
if (rtype == Expression::NULL_VAL) error("Invalid null operation: \""+quote(unquote(lstr), '"')+" plus null\".", rhs.pstate());
|
1327
1327
|
|
1328
|
+
if (ltype == Expression::NUMBER && sep == "/" && rtype == Expression::STRING)
|
1329
|
+
{
|
1330
|
+
return SASS_MEMORY_NEW(mem, String_Constant, lhs.pstate(),
|
1331
|
+
lhs.to_string() + sep + rhs.to_string());
|
1332
|
+
}
|
1333
|
+
|
1328
1334
|
if ( (ltype == Expression::STRING || sep == "") &&
|
1329
1335
|
(sep != "/" || !rqstr || !rqstr->quote_mark())
|
1330
1336
|
) {
|
@@ -1439,7 +1445,8 @@ namespace Sass {
|
|
1439
1445
|
{
|
1440
1446
|
To_String to_string;
|
1441
1447
|
// the parser will look for a brace to end the selector
|
1442
|
-
std::string result_str(s->contents()->perform(this)->perform(&to_string)
|
1448
|
+
std::string result_str(s->contents()->perform(this)->perform(&to_string));
|
1449
|
+
result_str = unquote(Util::rtrim(result_str)) + "{";
|
1443
1450
|
Parser p = Parser::from_c_str(result_str.c_str(), ctx, s->pstate());
|
1444
1451
|
return operator()(p.parse_selector_list(exp.block_stack.back()->is_root()));
|
1445
1452
|
}
|
@@ -1588,17 +1588,17 @@ namespace Sass {
|
|
1588
1588
|
List* arglist = SASS_MEMORY_NEW(ctx.mem, List, *ARG("$args", List));
|
1589
1589
|
|
1590
1590
|
Arguments* args = SASS_MEMORY_NEW(ctx.mem, Arguments, pstate);
|
1591
|
-
std::string full_name(name + "[f]");
|
1592
|
-
Definition* def = d_env.has(full_name) ? static_cast<Definition*>((d_env)[full_name]) : 0;
|
1593
|
-
Parameters* params = def ? def->parameters() : 0;
|
1594
|
-
size_t param_size = params ? params->length() : 0;
|
1591
|
+
// std::string full_name(name + "[f]");
|
1592
|
+
// Definition* def = d_env.has(full_name) ? static_cast<Definition*>((d_env)[full_name]) : 0;
|
1593
|
+
// Parameters* params = def ? def->parameters() : 0;
|
1594
|
+
// size_t param_size = params ? params->length() : 0;
|
1595
1595
|
for (size_t i = 0, L = arglist->length(); i < L; ++i) {
|
1596
1596
|
Expression* expr = arglist->value_at_index(i);
|
1597
|
-
if (params && params->has_rest_parameter()) {
|
1598
|
-
|
1599
|
-
|
1600
|
-
|
1601
|
-
}
|
1597
|
+
// if (params && params->has_rest_parameter()) {
|
1598
|
+
// Parameter* p = param_size > i ? (*params)[i] : 0;
|
1599
|
+
// List* list = dynamic_cast<List*>(expr);
|
1600
|
+
// if (list && p && !p->is_rest_parameter()) expr = (*list)[0];
|
1601
|
+
// }
|
1602
1602
|
if (arglist->is_arglist()) {
|
1603
1603
|
Argument* arg = dynamic_cast<Argument*>((*arglist)[i]);
|
1604
1604
|
*args << SASS_MEMORY_NEW(ctx.mem, Argument,
|
data/ext/libsass/src/lexer.cpp
CHANGED
@@ -93,6 +93,13 @@ namespace Sass {
|
|
93
93
|
return unsigned(chr) > 41 && unsigned(chr) < 127;
|
94
94
|
}
|
95
95
|
|
96
|
+
// check if char is within a reduced ascii range
|
97
|
+
// valid for escaping (copied from Ruby Sass)
|
98
|
+
bool is_escapable_character(const char& chr)
|
99
|
+
{
|
100
|
+
return unsigned(chr) > 31 && unsigned(chr) < 127;
|
101
|
+
}
|
102
|
+
|
96
103
|
// Match word character (look ahead)
|
97
104
|
bool is_character(const char& chr)
|
98
105
|
{
|
@@ -115,6 +122,7 @@ namespace Sass {
|
|
115
122
|
const char* punct(const char* src) { return is_punct(*src) ? src + 1 : 0; }
|
116
123
|
const char* character(const char* src) { return is_character(*src) ? src + 1 : 0; }
|
117
124
|
const char* uri_character(const char* src) { return is_uri_character(*src) ? src + 1 : 0; }
|
125
|
+
const char* escapable_character(const char* src) { return is_escapable_character(*src) ? src + 1 : 0; }
|
118
126
|
|
119
127
|
// Match multiple ctype characters.
|
120
128
|
const char* spaces(const char* src) { return one_plus<space>(src); }
|
data/ext/libsass/src/lexer.hpp
CHANGED
@@ -35,6 +35,7 @@ namespace Sass {
|
|
35
35
|
bool is_nonascii(const char& src);
|
36
36
|
bool is_character(const char& src);
|
37
37
|
bool is_uri_character(const char& src);
|
38
|
+
bool escapable_character(const char& src);
|
38
39
|
|
39
40
|
// Match a single ctype predicate.
|
40
41
|
const char* space(const char* src);
|
@@ -47,6 +48,7 @@ namespace Sass {
|
|
47
48
|
const char* nonascii(const char* src);
|
48
49
|
const char* character(const char* src);
|
49
50
|
const char* uri_character(const char* src);
|
51
|
+
const char* escapable_character(const char* src);
|
50
52
|
|
51
53
|
// Match multiple ctype characters.
|
52
54
|
const char* spaces(const char* src);
|
@@ -91,6 +91,8 @@ namespace Sass {
|
|
91
91
|
unicode,
|
92
92
|
exactly<'-'>,
|
93
93
|
exactly<'_'>,
|
94
|
+
NONASCII,
|
95
|
+
ESCAPE,
|
94
96
|
escape_seq
|
95
97
|
>(src);
|
96
98
|
}
|
@@ -104,6 +106,8 @@ namespace Sass {
|
|
104
106
|
unicode,
|
105
107
|
exactly<'-'>,
|
106
108
|
exactly<'_'>,
|
109
|
+
NONASCII,
|
110
|
+
ESCAPE,
|
107
111
|
escape_seq
|
108
112
|
>(src);
|
109
113
|
}
|
@@ -944,8 +948,10 @@ namespace Sass {
|
|
944
948
|
UUNICODE,
|
945
949
|
sequence<
|
946
950
|
exactly<'\\'>,
|
947
|
-
|
948
|
-
|
951
|
+
alternatives<
|
952
|
+
NONASCII,
|
953
|
+
escapable_character
|
954
|
+
>
|
949
955
|
>
|
950
956
|
>(src);
|
951
957
|
}
|
@@ -1,3 +1,9 @@
|
|
1
|
+
/**
|
2
|
+
* sass2scss
|
3
|
+
* Licensed under the MIT License
|
4
|
+
* Copyright (c) Marcel Greter
|
5
|
+
*/
|
6
|
+
|
1
7
|
#ifdef _MSC_VER
|
2
8
|
#define _CRT_SECURE_NO_WARNINGS
|
3
9
|
#define _CRT_NONSTDC_NO_DEPRECATE
|
@@ -26,8 +32,6 @@
|
|
26
32
|
// our own header
|
27
33
|
#include "sass2scss.h"
|
28
34
|
|
29
|
-
// using std::string
|
30
|
-
|
31
35
|
// add namespace for c++
|
32
36
|
namespace Sass
|
33
37
|
{
|
@@ -609,15 +613,16 @@ namespace Sass
|
|
609
613
|
sass.substr(pos_left, 8) != "@content"
|
610
614
|
) {
|
611
615
|
|
612
|
-
//
|
613
|
-
|
614
|
-
//
|
616
|
+
// probably a selector anyway
|
617
|
+
converter.selector = true;
|
618
|
+
// try to find first colon in the current line
|
619
|
+
size_t pos_colon = sass.find_first_of(":", pos_left);
|
620
|
+
// assertion that we have a colon
|
615
621
|
if (pos_colon != std::string::npos)
|
616
622
|
{
|
617
|
-
//
|
618
|
-
pos_colon
|
619
|
-
|
620
|
-
converter.selector = pos_colon == std::string::npos;
|
623
|
+
// it is not a selector if we have a space after a colon
|
624
|
+
if (sass[pos_colon+1] == ' ') converter.selector = false;
|
625
|
+
if (sass[pos_colon+1] == ' ') converter.selector = false;
|
621
626
|
}
|
622
627
|
|
623
628
|
}
|
data/lib/sassc/version.rb
CHANGED
data/test/native_test.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sassc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Boland
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|