sassc 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/ext/libsass/.gitignore +13 -6
- data/ext/libsass/Makefile +42 -26
- data/ext/libsass/Makefile.am +43 -30
- data/ext/libsass/Readme.md +4 -2
- data/ext/libsass/appveyor.yml +10 -14
- data/ext/libsass/ast.cpp +54 -44
- data/ext/libsass/ast.hpp +404 -236
- data/ext/libsass/ast_def_macros.hpp +5 -0
- data/ext/libsass/ast_factory.hpp +6 -3
- data/ext/libsass/ast_fwd_decl.hpp +12 -0
- data/ext/libsass/b64/encode.h +2 -2
- data/ext/libsass/backtrace.hpp +13 -17
- data/ext/libsass/base64vlq.hpp +4 -1
- data/ext/libsass/bind.cpp +12 -15
- data/ext/libsass/bind.hpp +6 -6
- data/ext/libsass/color_names.hpp +4 -1
- data/ext/libsass/configure.ac +7 -21
- data/ext/libsass/constants.cpp +6 -4
- data/ext/libsass/constants.hpp +10 -4
- data/ext/libsass/context.cpp +89 -58
- data/ext/libsass/context.hpp +28 -35
- data/ext/libsass/contextualize.cpp +20 -10
- data/ext/libsass/contextualize.hpp +8 -23
- data/ext/libsass/contrib/libsass.spec +66 -0
- data/ext/libsass/cssize.cpp +547 -0
- data/ext/libsass/cssize.hpp +82 -0
- data/ext/libsass/debug.hpp +3 -3
- data/ext/libsass/debugger.hpp +358 -0
- data/ext/libsass/emitter.cpp +255 -0
- data/ext/libsass/emitter.hpp +83 -0
- data/ext/libsass/environment.hpp +7 -3
- data/ext/libsass/error_handling.cpp +11 -14
- data/ext/libsass/error_handling.hpp +9 -7
- data/ext/libsass/eval.cpp +253 -161
- data/ext/libsass/eval.hpp +13 -13
- data/ext/libsass/expand.cpp +135 -64
- data/ext/libsass/expand.hpp +11 -13
- data/ext/libsass/extend.cpp +66 -20
- data/ext/libsass/extend.hpp +6 -11
- data/ext/libsass/file.cpp +31 -26
- data/ext/libsass/file.hpp +6 -1
- data/ext/libsass/functions.cpp +270 -287
- data/ext/libsass/functions.hpp +8 -11
- data/ext/libsass/inspect.cpp +385 -255
- data/ext/libsass/inspect.hpp +15 -26
- data/ext/libsass/kwd_arg_macros.hpp +5 -0
- data/ext/libsass/mapping.hpp +4 -3
- data/ext/libsass/memory_manager.hpp +5 -2
- data/ext/libsass/node.cpp +50 -50
- data/ext/libsass/node.hpp +26 -27
- data/ext/libsass/operation.hpp +15 -4
- data/ext/libsass/output.cpp +401 -0
- data/ext/libsass/output.hpp +56 -0
- data/ext/libsass/parser.cpp +573 -399
- data/ext/libsass/parser.hpp +122 -88
- data/ext/libsass/paths.hpp +7 -2
- data/ext/libsass/plugins.cpp +155 -0
- data/ext/libsass/plugins.hpp +56 -0
- data/ext/libsass/position.cpp +128 -0
- data/ext/libsass/position.hpp +108 -11
- data/ext/libsass/prelexer.cpp +184 -110
- data/ext/libsass/prelexer.hpp +131 -24
- data/ext/libsass/remove_placeholders.cpp +1 -1
- data/ext/libsass/remove_placeholders.hpp +6 -6
- data/ext/libsass/sass.cpp +3 -3
- data/ext/libsass/sass.h +12 -4
- data/ext/libsass/sass2scss.cpp +3 -2
- data/ext/libsass/sass2scss.h +5 -0
- data/ext/libsass/sass_context.cpp +136 -37
- data/ext/libsass/sass_context.h +19 -10
- data/ext/libsass/sass_functions.cpp +29 -2
- data/ext/libsass/sass_functions.h +8 -2
- data/ext/libsass/sass_interface.cpp +32 -23
- data/ext/libsass/sass_interface.h +9 -4
- data/ext/libsass/sass_util.cpp +19 -23
- data/ext/libsass/sass_util.hpp +28 -27
- data/ext/libsass/sass_values.cpp +6 -4
- data/ext/libsass/sass_values.h +3 -3
- data/ext/libsass/script/ci-build-libsass +13 -1
- data/ext/libsass/script/ci-report-coverage +2 -1
- data/ext/libsass/source_map.cpp +79 -28
- data/ext/libsass/source_map.hpp +35 -16
- data/ext/libsass/subset_map.hpp +6 -4
- data/ext/libsass/to_c.hpp +4 -4
- data/ext/libsass/to_string.cpp +13 -8
- data/ext/libsass/to_string.hpp +6 -4
- data/ext/libsass/units.cpp +2 -1
- data/ext/libsass/units.hpp +6 -1
- data/ext/libsass/utf8_string.cpp +0 -5
- data/ext/libsass/utf8_string.hpp +3 -2
- data/ext/libsass/util.cpp +461 -49
- data/ext/libsass/util.hpp +34 -13
- data/ext/libsass/version.sh +10 -0
- data/ext/libsass/win/libsass.filters +20 -11
- data/ext/libsass/win/libsass.vcxproj +11 -8
- data/lib/sassc/importer.rb +1 -8
- data/lib/sassc/native.rb +7 -0
- data/lib/sassc/native/native_context_api.rb +5 -5
- data/lib/sassc/version.rb +1 -1
- data/test/native_test.rb +1 -1
- metadata +14 -10
- data/ext/libsass/copy_c_str.cpp +0 -13
- data/ext/libsass/copy_c_str.hpp +0 -5
- data/ext/libsass/output_compressed.cpp +0 -401
- data/ext/libsass/output_compressed.hpp +0 -95
- data/ext/libsass/output_nested.cpp +0 -364
- data/ext/libsass/output_nested.hpp +0 -108
- data/ext/libsass/test-driver +0 -127
- data/ext/libsass/token.hpp +0 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84e3ac644262800f310def2ddd6a33b788173644
|
4
|
+
data.tar.gz: 60a9b9684751c114079664615eac210ca91b50f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 447d7bf985003fb37bf86ae08e9b7f2aca73b440ff073926f809225eec7ccb152a9a8361111e2349f3894bda5b4c6f2c2a52a781ebb5cebe9873f37ebe90edfc
|
7
|
+
data.tar.gz: d5f9074a354e20f40b43cb48ae8ce8cae436f6c9b1a7cf7a5c3f3b8f6b6ba81bdd4ca5dd375ac921f565786e44e316885a6596ffab7f13f9173873b467d12a26
|
data/Rakefile
CHANGED
data/ext/libsass/.gitignore
CHANGED
@@ -14,23 +14,25 @@
|
|
14
14
|
Makefile.in
|
15
15
|
/aclocal.m4
|
16
16
|
/autom4te.cache/
|
17
|
-
/config.guess
|
18
17
|
/config.h
|
19
18
|
/config.h.in
|
20
19
|
/config.log
|
21
20
|
/config.status
|
22
|
-
/config.sub
|
23
21
|
/configure
|
24
|
-
/depcomp
|
25
|
-
/install-sh
|
26
22
|
/libtool
|
27
|
-
/ltmain.sh
|
28
23
|
/m4/libtool.m4
|
29
24
|
/m4/ltoptions.m4
|
30
25
|
/m4/ltsugar.m4
|
31
26
|
/m4/ltversion.m4
|
32
27
|
/m4/lt~obsolete.m4
|
33
|
-
/
|
28
|
+
/script/compile
|
29
|
+
/script/config.guess
|
30
|
+
/script/config.sub
|
31
|
+
/script/depcomp
|
32
|
+
/script/install-sh
|
33
|
+
/script/ltmain.sh
|
34
|
+
/script/missing
|
35
|
+
/script/test-driver
|
34
36
|
/stamp-h1
|
35
37
|
src/Makefile
|
36
38
|
libsass/*
|
@@ -44,6 +46,11 @@ libsass/*
|
|
44
46
|
*.a
|
45
47
|
a.out
|
46
48
|
libsass.js
|
49
|
+
tester
|
50
|
+
tester.exe
|
51
|
+
build/
|
52
|
+
config.h.in*
|
53
|
+
lib/pkgconfig/
|
47
54
|
|
48
55
|
bin/*
|
49
56
|
.deps/
|
data/ext/libsass/Makefile
CHANGED
@@ -2,11 +2,12 @@ CC ?= gcc
|
|
2
2
|
CXX ?= g++
|
3
3
|
RM ?= rm -f
|
4
4
|
CP ?= cp -a
|
5
|
-
MKDIR ?= mkdir
|
5
|
+
MKDIR ?= mkdir
|
6
6
|
WINDRES ?= windres
|
7
7
|
CFLAGS ?= -Wall -O2
|
8
8
|
CXXFLAGS ?= -Wall -O2
|
9
|
-
LDFLAGS ?= -Wall -O2
|
9
|
+
LDFLAGS ?= -Wall -O2 -Wl,--no-undefined
|
10
|
+
CAT ?= $(if $(filter $(OS),Windows_NT),type,cat)
|
10
11
|
|
11
12
|
ifneq (,$(findstring /cygdrive/,$(PATH)))
|
12
13
|
UNAME := Cygwin
|
@@ -17,20 +18,30 @@ else
|
|
17
18
|
ifneq (,$(findstring mingw32,$(MAKE)))
|
18
19
|
UNAME := MinGW
|
19
20
|
else
|
20
|
-
|
21
|
+
ifneq (,$(findstring MINGW32,$(shell uname -s)))
|
22
|
+
UNAME = MinGW
|
23
|
+
else
|
24
|
+
UNAME := $(shell uname -s)
|
25
|
+
endif
|
21
26
|
endif
|
22
27
|
endif
|
23
28
|
endif
|
24
29
|
|
25
30
|
ifeq "$(LIBSASS_VERSION)" ""
|
26
|
-
|
27
|
-
|
28
|
-
|
31
|
+
ifneq "$(wildcard ./.git/ )" ""
|
32
|
+
LIBSASS_VERSION ?= $(shell git describe --abbrev=4 --dirty --always --tags)
|
33
|
+
endif
|
34
|
+
endif
|
35
|
+
|
36
|
+
ifeq "$(LIBSASS_VERSION)" ""
|
37
|
+
ifneq ("$(wildcard VERSION)","")
|
38
|
+
LIBSASS_VERSION ?= $(shell $(CAT) VERSION)
|
39
|
+
endif
|
29
40
|
endif
|
30
41
|
|
31
42
|
ifneq "$(LIBSASS_VERSION)" ""
|
32
|
-
|
33
|
-
|
43
|
+
CFLAGS += -DLIBSASS_VERSION="\"$(LIBSASS_VERSION)\""
|
44
|
+
CXXFLAGS += -DLIBSASS_VERSION="\"$(LIBSASS_VERSION)\""
|
34
45
|
endif
|
35
46
|
|
36
47
|
# enable mandatory flag
|
@@ -43,18 +54,18 @@ else
|
|
43
54
|
endif
|
44
55
|
|
45
56
|
ifneq "$(SASS_LIBSASS_PATH)" ""
|
46
|
-
|
47
|
-
|
57
|
+
CFLAGS += -I $(SASS_LIBSASS_PATH)
|
58
|
+
CXXFLAGS += -I $(SASS_LIBSASS_PATH)
|
48
59
|
endif
|
49
60
|
|
50
61
|
ifneq "$(EXTRA_CFLAGS)" ""
|
51
|
-
|
62
|
+
CFLAGS += $(EXTRA_CFLAGS)
|
52
63
|
endif
|
53
64
|
ifneq "$(EXTRA_CXXFLAGS)" ""
|
54
|
-
|
65
|
+
CXXFLAGS += $(EXTRA_CXXFLAGS)
|
55
66
|
endif
|
56
67
|
ifneq "$(EXTRA_LDFLAGS)" ""
|
57
|
-
|
68
|
+
LDFLAGS += $(EXTRA_LDFLAGS)
|
58
69
|
endif
|
59
70
|
|
60
71
|
LDLIBS = -lstdc++ -lm
|
@@ -64,6 +75,11 @@ ifeq ($(UNAME),Darwin)
|
|
64
75
|
LDFLAGS += -stdlib=libc++
|
65
76
|
endif
|
66
77
|
|
78
|
+
ifneq (MinGW,$(UNAME))
|
79
|
+
LDFLAGS += -ldl
|
80
|
+
LDLIBS += -ldl
|
81
|
+
endif
|
82
|
+
|
67
83
|
ifneq ($(BUILD),shared)
|
68
84
|
BUILD = static
|
69
85
|
endif
|
@@ -96,7 +112,7 @@ SOURCES = \
|
|
96
112
|
constants.cpp \
|
97
113
|
context.cpp \
|
98
114
|
contextualize.cpp \
|
99
|
-
|
115
|
+
cssize.cpp \
|
100
116
|
error_handling.cpp \
|
101
117
|
eval.cpp \
|
102
118
|
expand.cpp \
|
@@ -106,9 +122,11 @@ SOURCES = \
|
|
106
122
|
inspect.cpp \
|
107
123
|
node.cpp \
|
108
124
|
json.cpp \
|
109
|
-
|
110
|
-
|
125
|
+
emitter.cpp \
|
126
|
+
output.cpp \
|
111
127
|
parser.cpp \
|
128
|
+
plugins.cpp \
|
129
|
+
position.cpp \
|
112
130
|
prelexer.cpp \
|
113
131
|
remove_placeholders.cpp \
|
114
132
|
sass.cpp \
|
@@ -127,14 +145,14 @@ SOURCES = \
|
|
127
145
|
|
128
146
|
CSOURCES = cencode.c
|
129
147
|
|
130
|
-
RESOURCES =
|
148
|
+
RESOURCES =
|
131
149
|
|
132
150
|
LIBRARIES = lib/libsass.so
|
133
151
|
|
134
152
|
ifeq (MinGW,$(UNAME))
|
135
153
|
ifeq (shared,$(BUILD))
|
136
|
-
CFLAGS += -D ADD_EXPORTS
|
137
|
-
CXXFLAGS += -D ADD_EXPORTS
|
154
|
+
CFLAGS += -D ADD_EXPORTS
|
155
|
+
CXXFLAGS += -D ADD_EXPORTS
|
138
156
|
LIBRARIES += lib/libsass.dll
|
139
157
|
RESOURCES += res/resource.rc
|
140
158
|
endif
|
@@ -167,16 +185,16 @@ debug-shared: shared
|
|
167
185
|
static: lib/libsass.a
|
168
186
|
shared: $(LIBRARIES)
|
169
187
|
|
170
|
-
lib
|
188
|
+
lib:
|
171
189
|
$(MKDIR) lib
|
190
|
+
|
191
|
+
lib/libsass.a: lib $(COBJECTS) $(OBJECTS)
|
172
192
|
$(AR) rcvs $@ $(COBJECTS) $(OBJECTS)
|
173
193
|
|
174
|
-
lib/libsass.so: $(COBJECTS) $(OBJECTS)
|
175
|
-
$(MKDIR) lib
|
194
|
+
lib/libsass.so: lib $(COBJECTS) $(OBJECTS)
|
176
195
|
$(CXX) -shared $(LDFLAGS) -o $@ $(COBJECTS) $(OBJECTS) $(LDLIBS)
|
177
196
|
|
178
|
-
lib/libsass.dll: $(COBJECTS) $(OBJECTS) $(RCOBJECTS)
|
179
|
-
$(MKDIR) lib
|
197
|
+
lib/libsass.dll: lib $(COBJECTS) $(OBJECTS) $(RCOBJECTS)
|
180
198
|
$(CXX) -shared $(LDFLAGS) -o $@ $(COBJECTS) $(OBJECTS) $(RCOBJECTS) $(LDLIBS) -s -Wl,--subsystem,windows,--out-implib,lib/libsass.a
|
181
199
|
|
182
200
|
%.o: %.c
|
@@ -194,11 +212,9 @@ lib/libsass.dll: $(COBJECTS) $(OBJECTS) $(RCOBJECTS)
|
|
194
212
|
install: install-$(BUILD)
|
195
213
|
|
196
214
|
install-static: lib/libsass.a
|
197
|
-
$(MKDIR) $(DESTDIR)$(PREFIX)\/lib/
|
198
215
|
install -pm0755 $< $(DESTDIR)$(PREFIX)/$<
|
199
216
|
|
200
217
|
install-shared: lib/libsass.so
|
201
|
-
$(MKDIR) $(DESTDIR)$(PREFIX)\/lib/
|
202
218
|
install -pm0755 $< $(DESTDIR)$(PREFIX)/$<
|
203
219
|
|
204
220
|
$(SASSC_BIN): $(BUILD)
|
data/ext/libsass/Makefile.am
CHANGED
@@ -1,12 +1,20 @@
|
|
1
1
|
ACLOCAL_AMFLAGS = -I m4
|
2
2
|
|
3
3
|
AM_LDFLAGS = -lstdc++ -lm
|
4
|
-
AM_CFLAGS = -Wall
|
5
|
-
AM_CXXFLAGS = -Wall
|
6
|
-
AM_CFLAGS += -DLIBSASS_VERSION="\"$(LIBSASS_VERSION)\""
|
7
|
-
AM_CXXFLAGS += -DLIBSASS_VERSION="\"$(LIBSASS_VERSION)\""
|
4
|
+
AM_CFLAGS = -Wall
|
5
|
+
AM_CXXFLAGS = -Wall
|
8
6
|
|
9
|
-
|
7
|
+
if COMPILER_IS_MINGW32
|
8
|
+
AM_CXXFLAGS += -std=gnu++0x
|
9
|
+
else
|
10
|
+
AM_CFLAGS += -fPIC
|
11
|
+
AM_CXXFLAGS += -fPIC
|
12
|
+
AM_CXXFLAGS += -std=c++0x
|
13
|
+
AM_LDFLAGS += -ldl
|
14
|
+
endif
|
15
|
+
|
16
|
+
AM_CFLAGS += -DLIBSASS_VERSION="\"$(VERSION)\""
|
17
|
+
AM_CXXFLAGS += -DLIBSASS_VERSION="\"$(VERSION)\""
|
10
18
|
|
11
19
|
if ENABLE_COVERAGE
|
12
20
|
AM_CFLAGS += -O0 --coverage
|
@@ -18,8 +26,6 @@ else
|
|
18
26
|
AM_LDFLAGS += -O2
|
19
27
|
endif
|
20
28
|
|
21
|
-
VERSION = $(LIBSASS_VERSION)
|
22
|
-
|
23
29
|
EXTRA_DIST = \
|
24
30
|
COPYING \
|
25
31
|
INSTALL \
|
@@ -34,7 +40,8 @@ lib_LTLIBRARIES = libsass.la
|
|
34
40
|
libsass_la_SOURCES = \
|
35
41
|
ast_fwd_decl.hpp ast_def_macros.hpp \
|
36
42
|
kwd_arg_macros.hpp memory_manager.hpp \
|
37
|
-
position.
|
43
|
+
position.cpp position.hpp \
|
44
|
+
operation.hpp \
|
38
45
|
subset_map.hpp mapping.hpp \
|
39
46
|
color_names.hpp backtrace.hpp \
|
40
47
|
cencode.c b64/cencode.h b64/encode.h \
|
@@ -48,19 +55,20 @@ libsass_la_SOURCES = \
|
|
48
55
|
constants.cpp constants.hpp \
|
49
56
|
context.cpp context.hpp \
|
50
57
|
contextualize.cpp contextualize.hpp \
|
51
|
-
copy_c_str.cpp copy_c_str.hpp \
|
52
58
|
error_handling.cpp error_handling.hpp \
|
53
59
|
eval.cpp eval.hpp \
|
54
60
|
expand.cpp expand.hpp \
|
55
61
|
extend.cpp extend.hpp \
|
62
|
+
cssize.cpp cssize.hpp \
|
56
63
|
file.cpp file.hpp \
|
57
64
|
functions.cpp functions.hpp \
|
58
65
|
inspect.cpp inspect.hpp \
|
59
66
|
node.cpp node.hpp \
|
60
67
|
json.cpp json.hpp \
|
61
|
-
|
62
|
-
|
68
|
+
emitter.cpp emitter.hpp \
|
69
|
+
output.cpp output.hpp \
|
63
70
|
parser.cpp parser.hpp \
|
71
|
+
plugins.cpp plugins.hpp \
|
64
72
|
prelexer.cpp prelexer.hpp \
|
65
73
|
remove_placeholders.cpp remove_placeholders.hpp \
|
66
74
|
sass.cpp sass.h \
|
@@ -85,22 +93,22 @@ include_HEADERS = sass2scss.h sass_context.h sass_functions.h sass_values.h sass
|
|
85
93
|
|
86
94
|
if ENABLE_TESTS
|
87
95
|
|
88
|
-
noinst_PROGRAMS =
|
96
|
+
noinst_PROGRAMS = tester
|
89
97
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
98
|
+
tester_LDADD = libsass.la
|
99
|
+
tester_SOURCES = $(SASS_SASSC_PATH)/sassc.c
|
100
|
+
SASSC_VERSION=`cd "$(SASS_SASSC_PATH)" && ./version.sh`
|
101
|
+
tester_CFLAGS = $(AM_CFLAGS) -DSASSC_VERSION="\"$(SASSC_VERSION)\""
|
102
|
+
tester_CXXFLAGS = $(AM_CXXFLAGS) -DSASSC_VERSION="\"$(SASSC_VERSION)\""
|
103
|
+
tester_LDFLAGS = $(AM_LDFLAGS) -no-install
|
95
104
|
|
96
105
|
if ENABLE_COVERAGE
|
97
|
-
|
106
|
+
nodist_EXTRA_tester_SOURCES = non-existent-file-to-force-CXX-linking.cxx
|
98
107
|
nodist_EXTRA_libsass_la_SOURCES = non-existent-file-to-force-CXX-linking.cxx
|
99
108
|
endif
|
100
109
|
|
101
110
|
SASS_SASSC_PATH ?= sassc
|
102
111
|
SASS_SPEC_PATH ?= sass-spec
|
103
|
-
SASSC_BIN = $(SASS_SASSC_PATH)/bin/sassc
|
104
112
|
|
105
113
|
TESTS = \
|
106
114
|
$(SASS_SPEC_PATH)/spec/basic \
|
@@ -118,7 +126,7 @@ TESTS = \
|
|
118
126
|
|
119
127
|
SASS_TEST_FLAGS =
|
120
128
|
LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) ./script/tap-driver
|
121
|
-
AM_LOG_FLAGS = -c ./
|
129
|
+
AM_LOG_FLAGS = -c ./tester --ignore-todo $(LOG_FLAGS)
|
122
130
|
if USE_TAP
|
123
131
|
AM_LOG_FLAGS += -t
|
124
132
|
SASS_TEST_FLAGS += -t | tapout
|
@@ -127,19 +135,24 @@ else
|
|
127
135
|
LOG_COMPILER = $(RUBY) $(SASS_SPEC_PATH)/sass-spec.rb
|
128
136
|
endif
|
129
137
|
|
130
|
-
$(
|
131
|
-
|
138
|
+
SASS_TESTER = $(RUBY) $(SASS_SPEC_PATH)/sass-spec.rb
|
139
|
+
|
140
|
+
if COMPILER_IS_MINGW32
|
141
|
+
SASS_TESTER += -c $(SASS_LIBSASS_PATH)/tester.exe
|
142
|
+
else
|
143
|
+
SASS_TESTER += -c $(SASS_LIBSASS_PATH)/tester
|
144
|
+
endif
|
132
145
|
|
133
|
-
test:
|
134
|
-
$(
|
146
|
+
test:
|
147
|
+
$(SASS_TESTER) --ignore-todo $(LOG_FLAGS) $(SASS_SPEC_PATH) $(SASS_TEST_FLAGS)
|
135
148
|
|
136
|
-
test_build:
|
137
|
-
$(
|
149
|
+
test_build:
|
150
|
+
$(SASS_TESTER) --ignore-todo $(LOG_FLAGS) $(SASS_SPEC_PATH) $(SASS_TEST_FLAGS)
|
138
151
|
|
139
|
-
test_full:
|
140
|
-
$(
|
152
|
+
test_full:
|
153
|
+
$(SASS_TESTER) $(LOG_FLAGS) $(SASS_SPEC_PATH) $(SASS_TEST_FLAGS)
|
141
154
|
|
142
|
-
test_issues:
|
143
|
-
$(
|
155
|
+
test_issues:
|
156
|
+
$(SASS_TESTER) $(LOG_FLAGS) $(SASS_SPEC_PATH)/spec/issues $(SASS_TEST_FLAGS)
|
144
157
|
|
145
158
|
endif
|
data/ext/libsass/Readme.md
CHANGED
@@ -15,7 +15,9 @@ then go to https://github.com/sass/sassc or
|
|
15
15
|
https://github.com/sass/ruby-libsass or
|
16
16
|
[find your local implementer](https://github.com/sass/libsass/wiki/Implementations).
|
17
17
|
|
18
|
-
LibSass requires GCC 4.
|
18
|
+
LibSass requires GCC 4.6+ or Clang/LLVM. If your OS is older, this version may not compile.
|
19
|
+
|
20
|
+
On Windows, you need MinGW with GCC 4.6+ or VS 2013 Update 4+. It is also possible to build LibSass with Clang/LLVM on Windows.
|
19
21
|
|
20
22
|
About
|
21
23
|
-----
|
@@ -87,7 +89,7 @@ Our MIT license is designed to be as simple, and liberal as possible.
|
|
87
89
|
[@chriseppstein]: https://github.com/chriseppstein
|
88
90
|
[@nex3]: https://github.com/nex3
|
89
91
|
|
90
|
-
sass2scss was originally written by Marcel Greter
|
92
|
+
sass2scss was originally written by [Marcel Greter](@mgreter)
|
91
93
|
and he happily agreed to have it merged into the project.
|
92
94
|
|
93
95
|
[sass_interface.h]: sass_interface.h
|
data/ext/libsass/appveyor.yml
CHANGED
@@ -15,26 +15,23 @@ environment:
|
|
15
15
|
ruby_version: "21-x64"
|
16
16
|
|
17
17
|
cache:
|
18
|
-
-
|
19
|
-
- C:\
|
20
|
-
- C:\Ruby21-x64\bin
|
18
|
+
- C:\mingw64
|
19
|
+
- C:\Ruby%ruby_version%\lib\ruby\gems
|
21
20
|
|
22
21
|
install:
|
23
22
|
- git clone https://github.com/sass/sassc.git
|
24
23
|
- git clone https://github.com/sass/sass-spec.git
|
25
24
|
- set PATH=C:\Ruby%ruby_version%\bin;%PATH%
|
26
25
|
- set SASS_LIBSASS_PATH=..
|
27
|
-
- gem install minitest
|
28
26
|
- ps: |
|
29
|
-
if
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
}
|
27
|
+
if(!(gem which minitest 2>$nul)) { gem install minitest }
|
28
|
+
if ($env:Compiler -eq "mingw" -AND -Not (Test-Path "C:\mingw64")) {
|
29
|
+
# Install MinGW.
|
30
|
+
$url = "http://sourceforge.net/projects/mingw-w64/files/"
|
31
|
+
$url += "Toolchains%20targetting%20Win64/Personal%20Builds/"
|
32
|
+
$url += "mingw-builds/4.9.2/threads-win32/seh/"
|
33
|
+
$url += "x86_64-4.9.2-release-win32-seh-rt_v3-rev0.7z/download"
|
34
|
+
Invoke-WebRequest -UserAgent wget -Uri $url -OutFile x86_64-4.9.2-release-win32-seh-rt_v3-rev0.7z
|
38
35
|
&7z x -oC:\ x86_64-4.9.2-release-win32-seh-rt_v3-rev0.7z > $null
|
39
36
|
}
|
40
37
|
- set PATH=C:\mingw64\bin;%PATH%
|
@@ -73,4 +70,3 @@ test_script:
|
|
73
70
|
ruby sass-spec\sass-spec.rb -c win\bin\sassc.exe -s --ignore-todo sass-spec/spec
|
74
71
|
}
|
75
72
|
}
|
76
|
-
|
data/ext/libsass/ast.cpp
CHANGED
@@ -22,13 +22,13 @@ namespace Sass {
|
|
22
22
|
return const_cast<Complex_Selector*>(this)->perform(&to_string) <
|
23
23
|
const_cast<Complex_Selector&>(rhs).perform(&to_string);
|
24
24
|
}
|
25
|
-
|
25
|
+
|
26
26
|
bool Complex_Selector::operator==(const Complex_Selector& rhs) const {
|
27
27
|
// TODO: We have to access the tail directly using tail_ since ADD_PROPERTY doesn't provide a const version.
|
28
28
|
|
29
29
|
const Complex_Selector* pOne = this;
|
30
30
|
const Complex_Selector* pTwo = &rhs;
|
31
|
-
|
31
|
+
|
32
32
|
// Consume any empty references at the beginning of the Complex_Selector
|
33
33
|
if (pOne->combinator() == Complex_Selector::ANCESTOR_OF && pOne->head()->is_empty_reference()) {
|
34
34
|
pOne = pOne->tail_;
|
@@ -36,12 +36,12 @@ namespace Sass {
|
|
36
36
|
if (pTwo->combinator() == Complex_Selector::ANCESTOR_OF && pTwo->head()->is_empty_reference()) {
|
37
37
|
pTwo = pTwo->tail_;
|
38
38
|
}
|
39
|
-
|
39
|
+
|
40
40
|
while (pOne && pTwo) {
|
41
41
|
if (pOne->combinator() != pTwo->combinator()) {
|
42
42
|
return false;
|
43
43
|
}
|
44
|
-
|
44
|
+
|
45
45
|
if (*(pOne->head()) != *(pTwo->head())) {
|
46
46
|
return false;
|
47
47
|
}
|
@@ -49,7 +49,7 @@ namespace Sass {
|
|
49
49
|
pOne = pOne->tail_;
|
50
50
|
pTwo = pTwo->tail_;
|
51
51
|
}
|
52
|
-
|
52
|
+
|
53
53
|
return pOne == NULL && pTwo == NULL;
|
54
54
|
}
|
55
55
|
|
@@ -63,7 +63,7 @@ namespace Sass {
|
|
63
63
|
}
|
64
64
|
return unified;
|
65
65
|
}
|
66
|
-
|
66
|
+
|
67
67
|
bool Simple_Selector::operator==(const Simple_Selector& rhs) const
|
68
68
|
{
|
69
69
|
// Compare the string representations for equality.
|
@@ -75,21 +75,21 @@ namespace Sass {
|
|
75
75
|
To_String to_string;
|
76
76
|
return pLHS->perform(&to_string) == pRHS->perform(&to_string);
|
77
77
|
}
|
78
|
-
|
78
|
+
|
79
79
|
bool Simple_Selector::operator<(const Simple_Selector& rhs) const {
|
80
80
|
// Use the string representation for ordering.
|
81
81
|
|
82
82
|
// Cast away const here. To_String should take a const object, but it doesn't.
|
83
83
|
Simple_Selector* pLHS = const_cast<Simple_Selector*>(this);
|
84
84
|
Simple_Selector* pRHS = const_cast<Simple_Selector*>(&rhs);
|
85
|
-
|
85
|
+
|
86
86
|
To_String to_string;
|
87
87
|
return pLHS->perform(&to_string) < pRHS->perform(&to_string);
|
88
88
|
}
|
89
89
|
|
90
90
|
Compound_Selector* Simple_Selector::unify_with(Compound_Selector* rhs, Context& ctx)
|
91
91
|
{
|
92
|
-
To_String to_string;
|
92
|
+
To_String to_string(&ctx);
|
93
93
|
for (size_t i = 0, L = rhs->length(); i < L; ++i)
|
94
94
|
{ if (perform(&to_string) == (*rhs)[i]->perform(&to_string)) return rhs; }
|
95
95
|
|
@@ -102,7 +102,7 @@ namespace Sass {
|
|
102
102
|
{
|
103
103
|
if ((typeid(*(*rhs)[i]) == typeid(Pseudo_Selector) || typeid(*(*rhs)[i]) == typeid(Wrapped_Selector)) && (*rhs)[L-1]->is_pseudo_element())
|
104
104
|
{ found = true; break; }
|
105
|
-
}
|
105
|
+
}
|
106
106
|
}
|
107
107
|
else
|
108
108
|
{
|
@@ -118,7 +118,7 @@ namespace Sass {
|
|
118
118
|
(*cpy) << this;
|
119
119
|
return cpy;
|
120
120
|
}
|
121
|
-
Compound_Selector* cpy = new (ctx.mem) Compound_Selector(rhs->
|
121
|
+
Compound_Selector* cpy = new (ctx.mem) Compound_Selector(rhs->pstate());
|
122
122
|
for (size_t j = 0; j < i; ++j)
|
123
123
|
{ (*cpy) << (*rhs)[j]; }
|
124
124
|
(*cpy) << this;
|
@@ -133,7 +133,7 @@ namespace Sass {
|
|
133
133
|
|
134
134
|
// if the rhs is empty, just return a copy of this
|
135
135
|
if (rhs->length() == 0) {
|
136
|
-
Compound_Selector* cpy = new (ctx.mem) Compound_Selector(rhs->
|
136
|
+
Compound_Selector* cpy = new (ctx.mem) Compound_Selector(rhs->pstate());
|
137
137
|
(*cpy) << this;
|
138
138
|
return cpy;
|
139
139
|
}
|
@@ -141,7 +141,7 @@ namespace Sass {
|
|
141
141
|
// if this is a universal selector and rhs is not empty, just return the rhs
|
142
142
|
if (name() == "*")
|
143
143
|
{ return new (ctx.mem) Compound_Selector(*rhs); }
|
144
|
-
|
144
|
+
|
145
145
|
|
146
146
|
Simple_Selector* rhs_0 = (*rhs)[0];
|
147
147
|
// otherwise, this is a tag name
|
@@ -150,7 +150,7 @@ namespace Sass {
|
|
150
150
|
// if rhs is universal, just return this tagname + rhs's qualifiers
|
151
151
|
if (static_cast<Type_Selector*>(rhs_0)->name() == "*")
|
152
152
|
{
|
153
|
-
Compound_Selector* cpy = new (ctx.mem) Compound_Selector(rhs->
|
153
|
+
Compound_Selector* cpy = new (ctx.mem) Compound_Selector(rhs->pstate());
|
154
154
|
(*cpy) << this;
|
155
155
|
for (size_t i = 1, L = rhs->length(); i < L; ++i)
|
156
156
|
{ (*cpy) << (*rhs)[i]; }
|
@@ -164,7 +164,7 @@ namespace Sass {
|
|
164
164
|
{ return 0; }
|
165
165
|
}
|
166
166
|
// else it's a tag name and a bunch of qualifiers -- just append them
|
167
|
-
Compound_Selector* cpy = new (ctx.mem) Compound_Selector(rhs->
|
167
|
+
Compound_Selector* cpy = new (ctx.mem) Compound_Selector(rhs->pstate());
|
168
168
|
(*cpy) << this;
|
169
169
|
(*cpy) += rhs;
|
170
170
|
return cpy;
|
@@ -183,6 +183,7 @@ namespace Sass {
|
|
183
183
|
return 0;
|
184
184
|
}
|
185
185
|
}
|
186
|
+
rhs->has_line_break(has_line_break());
|
186
187
|
return Simple_Selector::unify_with(rhs, ctx);
|
187
188
|
}
|
188
189
|
|
@@ -208,9 +209,9 @@ namespace Sass {
|
|
208
209
|
|
209
210
|
Simple_Selector* lbase = base();
|
210
211
|
Simple_Selector* rbase = rhs->base();
|
211
|
-
|
212
|
+
|
212
213
|
// Check if pseudo-elements are the same between the selectors
|
213
|
-
|
214
|
+
|
214
215
|
set<string> lpsuedoset, rpsuedoset;
|
215
216
|
for (size_t i = 0, L = length(); i < L; ++i)
|
216
217
|
{
|
@@ -262,12 +263,12 @@ namespace Sass {
|
|
262
263
|
// catch-all
|
263
264
|
return false;
|
264
265
|
}
|
265
|
-
|
266
|
+
|
266
267
|
bool Compound_Selector::operator==(const Compound_Selector& rhs) const {
|
267
268
|
To_String to_string;
|
268
|
-
|
269
|
+
|
269
270
|
// Check if pseudo-elements are the same between the selectors
|
270
|
-
|
271
|
+
|
271
272
|
set<string> lpsuedoset, rpsuedoset;
|
272
273
|
for (size_t i = 0, L = length(); i < L; ++i)
|
273
274
|
{
|
@@ -290,33 +291,33 @@ namespace Sass {
|
|
290
291
|
}
|
291
292
|
|
292
293
|
// Check the base
|
293
|
-
|
294
|
+
|
294
295
|
const Simple_Selector* const lbase = base();
|
295
296
|
const Simple_Selector* const rbase = rhs.base();
|
296
|
-
|
297
|
+
|
297
298
|
if ((lbase && !rbase) ||
|
298
299
|
(!lbase && rbase) ||
|
299
300
|
((lbase && rbase) && (*lbase != *rbase))) {
|
300
301
|
return false;
|
301
302
|
}
|
302
|
-
|
303
|
-
|
303
|
+
|
304
|
+
|
304
305
|
// Check the rest of the SimpleSelectors
|
305
306
|
// Use string representations. We can't create a set of Simple_Selector pointers because std::set == std::set is going to call ==
|
306
307
|
// on the pointers to determine equality. I don't know of a way to pass in a comparison object. The one you can specify as part of
|
307
308
|
// the template type is used for ordering, but not equality. We also can't just put in non-pointer Simple_Selectors because the
|
308
309
|
// class is intended to be subclassed, and we'd get splicing.
|
309
|
-
|
310
|
+
|
310
311
|
set<string> lset, rset;
|
311
|
-
|
312
|
+
|
312
313
|
for (size_t i = 0, L = length(); i < L; ++i)
|
313
314
|
{ lset.insert((*this)[i]->perform(&to_string)); }
|
314
315
|
for (size_t i = 0, L = rhs.length(); i < L; ++i)
|
315
316
|
{ rset.insert(rhs[i]->perform(&to_string)); }
|
316
|
-
|
317
|
+
|
317
318
|
return lset == rset;
|
318
319
|
}
|
319
|
-
|
320
|
+
|
320
321
|
bool Complex_Selector_Pointer_Compare::operator() (const Complex_Selector* const pLeft, const Complex_Selector* const pRight) const {
|
321
322
|
return *pLeft < *pRight;
|
322
323
|
}
|
@@ -361,7 +362,7 @@ namespace Sass {
|
|
361
362
|
if (!found)
|
362
363
|
{ return false; }
|
363
364
|
|
364
|
-
/*
|
365
|
+
/*
|
365
366
|
Hmm, I hope I have the logic right:
|
366
367
|
|
367
368
|
if lhs has a combinator:
|
@@ -413,7 +414,10 @@ namespace Sass {
|
|
413
414
|
{
|
414
415
|
if (!tail()) return 0;
|
415
416
|
if (!head()) return tail()->context(ctx);
|
416
|
-
|
417
|
+
Complex_Selector* cpy = new (ctx.mem) Complex_Selector(pstate(), combinator(), head(), tail()->context(ctx));
|
418
|
+
cpy->media_block(media_block());
|
419
|
+
cpy->last_block(last_block());
|
420
|
+
return cpy;
|
417
421
|
}
|
418
422
|
|
419
423
|
Complex_Selector* Complex_Selector::innermost()
|
@@ -446,12 +450,12 @@ namespace Sass {
|
|
446
450
|
if (tail()) cpy->tail(tail()->clone(ctx));
|
447
451
|
return cpy;
|
448
452
|
}
|
449
|
-
|
453
|
+
|
450
454
|
Complex_Selector* Complex_Selector::cloneFully(Context& ctx) const
|
451
455
|
{
|
452
456
|
Complex_Selector* cpy = new (ctx.mem) Complex_Selector(*this);
|
453
457
|
|
454
|
-
|
458
|
+
if (head()) {
|
455
459
|
cpy->head(head()->clone(ctx));
|
456
460
|
}
|
457
461
|
|
@@ -461,20 +465,21 @@ namespace Sass {
|
|
461
465
|
|
462
466
|
return cpy;
|
463
467
|
}
|
464
|
-
|
468
|
+
|
465
469
|
Compound_Selector* Compound_Selector::clone(Context& ctx) const
|
466
470
|
{
|
467
471
|
Compound_Selector* cpy = new (ctx.mem) Compound_Selector(*this);
|
468
472
|
return cpy;
|
469
473
|
}
|
470
|
-
|
471
474
|
|
472
475
|
|
476
|
+
|
477
|
+
/* not used anymore - remove?
|
473
478
|
Selector_Placeholder* Selector::find_placeholder()
|
474
479
|
{
|
475
480
|
return 0;
|
476
|
-
}
|
477
|
-
|
481
|
+
}*/
|
482
|
+
|
478
483
|
void Selector_List::adjust_after_pushing(Complex_Selector* c)
|
479
484
|
{
|
480
485
|
if (c->has_reference()) has_reference(true);
|
@@ -486,6 +491,7 @@ namespace Sass {
|
|
486
491
|
#endif
|
487
492
|
}
|
488
493
|
|
494
|
+
/* not used anymore - remove?
|
489
495
|
Selector_Placeholder* Selector_List::find_placeholder()
|
490
496
|
{
|
491
497
|
if (has_placeholder()) {
|
@@ -494,8 +500,9 @@ namespace Sass {
|
|
494
500
|
}
|
495
501
|
}
|
496
502
|
return 0;
|
497
|
-
}
|
503
|
+
}*/
|
498
504
|
|
505
|
+
/* not used anymore - remove?
|
499
506
|
Selector_Placeholder* Complex_Selector::find_placeholder()
|
500
507
|
{
|
501
508
|
if (has_placeholder()) {
|
@@ -503,8 +510,9 @@ namespace Sass {
|
|
503
510
|
else if (tail() && tail()->has_placeholder()) return tail()->find_placeholder();
|
504
511
|
}
|
505
512
|
return 0;
|
506
|
-
}
|
513
|
+
}*/
|
507
514
|
|
515
|
+
/* not used anymore - remove?
|
508
516
|
Selector_Placeholder* Compound_Selector::find_placeholder()
|
509
517
|
{
|
510
518
|
if (has_placeholder()) {
|
@@ -514,12 +522,13 @@ namespace Sass {
|
|
514
522
|
// return this;
|
515
523
|
}
|
516
524
|
return 0;
|
517
|
-
}
|
525
|
+
}*/
|
518
526
|
|
527
|
+
/* not used anymore - remove?
|
519
528
|
Selector_Placeholder* Selector_Placeholder::find_placeholder()
|
520
529
|
{
|
521
530
|
return this;
|
522
|
-
}
|
531
|
+
}*/
|
523
532
|
|
524
533
|
vector<string> Compound_Selector::to_str_vec()
|
525
534
|
{
|
@@ -533,8 +542,8 @@ namespace Sass {
|
|
533
542
|
|
534
543
|
Compound_Selector* Compound_Selector::minus(Compound_Selector* rhs, Context& ctx)
|
535
544
|
{
|
536
|
-
To_String to_string;
|
537
|
-
Compound_Selector* result = new (ctx.mem) Compound_Selector(
|
545
|
+
To_String to_string(&ctx);
|
546
|
+
Compound_Selector* result = new (ctx.mem) Compound_Selector(pstate());
|
538
547
|
|
539
548
|
// not very efficient because it needs to preserve order
|
540
549
|
for (size_t i = 0, L = length(); i < L; ++i)
|
@@ -554,7 +563,7 @@ namespace Sass {
|
|
554
563
|
|
555
564
|
return result;
|
556
565
|
}
|
557
|
-
|
566
|
+
|
558
567
|
void Compound_Selector::mergeSources(SourcesSet& sources, Context& ctx)
|
559
568
|
{
|
560
569
|
for (SourcesSet::iterator iterator = sources.begin(), endIterator = sources.end(); iterator != endIterator; ++iterator) {
|
@@ -562,6 +571,7 @@ namespace Sass {
|
|
562
571
|
}
|
563
572
|
}
|
564
573
|
|
574
|
+
/* not used anymore - remove?
|
565
575
|
vector<Compound_Selector*> Complex_Selector::to_vector()
|
566
576
|
{
|
567
577
|
vector<Compound_Selector*> result;
|
@@ -575,7 +585,7 @@ namespace Sass {
|
|
575
585
|
if (h) result.push_back(h);
|
576
586
|
}
|
577
587
|
return result;
|
578
|
-
}
|
588
|
+
}*/
|
579
589
|
|
580
590
|
}
|
581
591
|
|