sassc 1.7.1 → 1.8.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (164) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -1
  3. data/ext/libsass/.gitignore +10 -6
  4. data/ext/libsass/.travis.yml +4 -1
  5. data/ext/libsass/GNUmakefile.am +88 -0
  6. data/ext/libsass/Makefile +157 -76
  7. data/ext/libsass/Makefile.conf +47 -0
  8. data/ext/libsass/Readme.md +13 -14
  9. data/ext/libsass/appveyor.yml +25 -41
  10. data/ext/libsass/configure.ac +20 -7
  11. data/ext/libsass/contrib/plugin.cpp +1 -1
  12. data/ext/libsass/include/sass.h +15 -0
  13. data/ext/libsass/{sass.h → include/sass/base.h} +17 -9
  14. data/ext/libsass/{sass_context.h → include/sass/context.h} +3 -1
  15. data/ext/libsass/{sass_functions.h → include/sass/functions.h} +4 -4
  16. data/ext/libsass/{sass_interface.h → include/sass/interface.h} +5 -2
  17. data/ext/libsass/{sass_values.h → include/sass/values.h} +15 -1
  18. data/ext/libsass/{sass_version.h → include/sass/version.h} +0 -0
  19. data/ext/libsass/{sass_version.h.in → include/sass/version.h.in} +0 -0
  20. data/ext/libsass/{sass2scss.h → include/sass2scss.h} +6 -7
  21. data/ext/libsass/m4/m4-ax_cxx_compile_stdcxx_11.m4 +167 -0
  22. data/ext/libsass/script/ci-build-libsass +67 -23
  23. data/ext/libsass/src/GNUmakefile.am +54 -0
  24. data/ext/libsass/src/ast.cpp +2029 -0
  25. data/ext/libsass/{ast.hpp → src/ast.hpp} +832 -660
  26. data/ext/libsass/src/ast_def_macros.hpp +47 -0
  27. data/ext/libsass/src/ast_factory.hpp +93 -0
  28. data/ext/libsass/{ast_fwd_decl.hpp → src/ast_fwd_decl.hpp} +9 -4
  29. data/ext/libsass/{b64 → src/b64}/cencode.h +1 -1
  30. data/ext/libsass/{b64 → src/b64}/encode.h +0 -0
  31. data/ext/libsass/{backtrace.hpp → src/backtrace.hpp} +9 -10
  32. data/ext/libsass/{base64vlq.cpp → src/base64vlq.cpp} +2 -2
  33. data/ext/libsass/{base64vlq.hpp → src/base64vlq.hpp} +1 -2
  34. data/ext/libsass/{bind.cpp → src/bind.cpp} +96 -59
  35. data/ext/libsass/{bind.hpp → src/bind.hpp} +1 -1
  36. data/ext/libsass/src/c99func.c +54 -0
  37. data/ext/libsass/{cencode.c → src/cencode.c} +5 -5
  38. data/ext/libsass/src/color_maps.cpp +643 -0
  39. data/ext/libsass/src/color_maps.hpp +333 -0
  40. data/ext/libsass/{constants.cpp → src/constants.cpp} +10 -1
  41. data/ext/libsass/{constants.hpp → src/constants.hpp} +7 -0
  42. data/ext/libsass/{context.cpp → src/context.cpp} +152 -122
  43. data/ext/libsass/src/context.hpp +150 -0
  44. data/ext/libsass/{cssize.cpp → src/cssize.cpp} +123 -109
  45. data/ext/libsass/{cssize.hpp → src/cssize.hpp} +9 -13
  46. data/ext/libsass/{debug.hpp → src/debug.hpp} +9 -9
  47. data/ext/libsass/src/debugger.hpp +683 -0
  48. data/ext/libsass/{emitter.cpp → src/emitter.cpp} +13 -13
  49. data/ext/libsass/{emitter.hpp → src/emitter.hpp} +10 -11
  50. data/ext/libsass/src/environment.cpp +184 -0
  51. data/ext/libsass/src/environment.hpp +92 -0
  52. data/ext/libsass/src/error_handling.cpp +46 -0
  53. data/ext/libsass/src/error_handling.hpp +34 -0
  54. data/ext/libsass/src/eval.cpp +1462 -0
  55. data/ext/libsass/src/eval.hpp +107 -0
  56. data/ext/libsass/src/expand.cpp +653 -0
  57. data/ext/libsass/{expand.hpp → src/expand.hpp} +17 -16
  58. data/ext/libsass/{extend.cpp → src/extend.cpp} +198 -139
  59. data/ext/libsass/{extend.hpp → src/extend.hpp} +7 -8
  60. data/ext/libsass/{file.cpp → src/file.cpp} +103 -57
  61. data/ext/libsass/{file.hpp → src/file.hpp} +23 -14
  62. data/ext/libsass/{functions.cpp → src/functions.cpp} +642 -333
  63. data/ext/libsass/{functions.hpp → src/functions.hpp} +17 -4
  64. data/ext/libsass/{inspect.cpp → src/inspect.cpp} +147 -260
  65. data/ext/libsass/{inspect.hpp → src/inspect.hpp} +7 -7
  66. data/ext/libsass/{json.cpp → src/json.cpp} +33 -43
  67. data/ext/libsass/{json.hpp → src/json.hpp} +1 -1
  68. data/ext/libsass/{kwd_arg_macros.hpp → src/kwd_arg_macros.hpp} +0 -0
  69. data/ext/libsass/{lexer.cpp → src/lexer.cpp} +28 -0
  70. data/ext/libsass/{lexer.hpp → src/lexer.hpp} +25 -10
  71. data/ext/libsass/{listize.cpp → src/listize.cpp} +17 -13
  72. data/ext/libsass/{listize.hpp → src/listize.hpp} +0 -2
  73. data/ext/libsass/{mapping.hpp → src/mapping.hpp} +0 -0
  74. data/ext/libsass/src/memory_manager.cpp +76 -0
  75. data/ext/libsass/src/memory_manager.hpp +48 -0
  76. data/ext/libsass/{node.cpp → src/node.cpp} +89 -18
  77. data/ext/libsass/{node.hpp → src/node.hpp} +5 -6
  78. data/ext/libsass/{operation.hpp → src/operation.hpp} +18 -12
  79. data/ext/libsass/{output.cpp → src/output.cpp} +47 -55
  80. data/ext/libsass/{output.hpp → src/output.hpp} +5 -4
  81. data/ext/libsass/src/parser.cpp +2529 -0
  82. data/ext/libsass/{parser.hpp → src/parser.hpp} +84 -60
  83. data/ext/libsass/{paths.hpp → src/paths.hpp} +10 -13
  84. data/ext/libsass/{plugins.cpp → src/plugins.cpp} +14 -17
  85. data/ext/libsass/{plugins.hpp → src/plugins.hpp} +10 -11
  86. data/ext/libsass/{position.cpp → src/position.cpp} +5 -6
  87. data/ext/libsass/{position.hpp → src/position.hpp} +19 -22
  88. data/ext/libsass/{prelexer.cpp → src/prelexer.cpp} +401 -53
  89. data/ext/libsass/{prelexer.hpp → src/prelexer.hpp} +50 -10
  90. data/ext/libsass/{remove_placeholders.cpp → src/remove_placeholders.cpp} +12 -16
  91. data/ext/libsass/{remove_placeholders.hpp → src/remove_placeholders.hpp} +1 -7
  92. data/ext/libsass/{sass.cpp → src/sass.cpp} +3 -5
  93. data/ext/libsass/{sass2scss.cpp → src/sass2scss.cpp} +51 -46
  94. data/ext/libsass/{sass_context.cpp → src/sass_context.cpp} +114 -112
  95. data/ext/libsass/{sass_functions.cpp → src/sass_functions.cpp} +11 -18
  96. data/ext/libsass/{sass_interface.cpp → src/sass_interface.cpp} +44 -81
  97. data/ext/libsass/{sass_util.cpp → src/sass_util.cpp} +26 -8
  98. data/ext/libsass/{sass_util.hpp → src/sass_util.hpp} +14 -18
  99. data/ext/libsass/{sass_values.cpp → src/sass_values.cpp} +91 -20
  100. data/ext/libsass/{source_map.cpp → src/source_map.cpp} +13 -13
  101. data/ext/libsass/{source_map.hpp → src/source_map.hpp} +9 -9
  102. data/ext/libsass/{subset_map.hpp → src/subset_map.hpp} +29 -31
  103. data/ext/libsass/{support → src/support}/libsass.pc.in +0 -0
  104. data/ext/libsass/src/to_c.cpp +73 -0
  105. data/ext/libsass/src/to_c.hpp +41 -0
  106. data/ext/libsass/src/to_string.cpp +47 -0
  107. data/ext/libsass/{to_string.hpp → src/to_string.hpp} +9 -7
  108. data/ext/libsass/src/to_value.cpp +109 -0
  109. data/ext/libsass/src/to_value.hpp +50 -0
  110. data/ext/libsass/{units.cpp → src/units.cpp} +56 -51
  111. data/ext/libsass/{units.hpp → src/units.hpp} +8 -9
  112. data/ext/libsass/{utf8.h → src/utf8.h} +0 -0
  113. data/ext/libsass/{utf8 → src/utf8}/checked.h +0 -0
  114. data/ext/libsass/{utf8 → src/utf8}/core.h +12 -12
  115. data/ext/libsass/{utf8 → src/utf8}/unchecked.h +0 -0
  116. data/ext/libsass/{utf8_string.cpp → src/utf8_string.cpp} +0 -0
  117. data/ext/libsass/{utf8_string.hpp → src/utf8_string.hpp} +6 -6
  118. data/ext/libsass/{util.cpp → src/util.cpp} +144 -86
  119. data/ext/libsass/src/util.hpp +59 -0
  120. data/ext/libsass/src/values.cpp +137 -0
  121. data/ext/libsass/src/values.hpp +12 -0
  122. data/ext/libsass/test/test_node.cpp +33 -33
  123. data/ext/libsass/test/test_paths.cpp +5 -6
  124. data/ext/libsass/test/test_selector_difference.cpp +4 -5
  125. data/ext/libsass/test/test_specificity.cpp +4 -5
  126. data/ext/libsass/test/test_subset_map.cpp +91 -91
  127. data/ext/libsass/test/test_superselector.cpp +11 -11
  128. data/ext/libsass/test/test_unification.cpp +4 -4
  129. data/ext/libsass/win/libsass.targets +101 -0
  130. data/ext/libsass/win/libsass.vcxproj +45 -127
  131. data/ext/libsass/win/libsass.vcxproj.filters +303 -0
  132. data/lib/sassc/import_handler.rb +1 -1
  133. data/lib/sassc/native/native_functions_api.rb +3 -3
  134. data/lib/sassc/version.rb +1 -1
  135. data/test/custom_importer_test.rb +1 -4
  136. data/test/functions_test.rb +3 -2
  137. data/test/native_test.rb +4 -3
  138. metadata +117 -110
  139. data/ext/libsass/Makefile.am +0 -146
  140. data/ext/libsass/ast.cpp +0 -945
  141. data/ext/libsass/ast_def_macros.hpp +0 -21
  142. data/ext/libsass/ast_factory.hpp +0 -92
  143. data/ext/libsass/color_names.hpp +0 -327
  144. data/ext/libsass/context.hpp +0 -157
  145. data/ext/libsass/contextualize.cpp +0 -148
  146. data/ext/libsass/contextualize.hpp +0 -46
  147. data/ext/libsass/contextualize_eval.cpp +0 -93
  148. data/ext/libsass/contextualize_eval.hpp +0 -44
  149. data/ext/libsass/debugger.hpp +0 -558
  150. data/ext/libsass/environment.hpp +0 -163
  151. data/ext/libsass/error_handling.cpp +0 -35
  152. data/ext/libsass/error_handling.hpp +0 -32
  153. data/ext/libsass/eval.cpp +0 -1392
  154. data/ext/libsass/eval.hpp +0 -88
  155. data/ext/libsass/expand.cpp +0 -575
  156. data/ext/libsass/memory_manager.hpp +0 -57
  157. data/ext/libsass/parser.cpp +0 -2403
  158. data/ext/libsass/posix/getopt.c +0 -562
  159. data/ext/libsass/posix/getopt.h +0 -95
  160. data/ext/libsass/to_c.cpp +0 -61
  161. data/ext/libsass/to_c.hpp +0 -44
  162. data/ext/libsass/to_string.cpp +0 -34
  163. data/ext/libsass/util.hpp +0 -54
  164. data/ext/libsass/win/libsass.filters +0 -312
@@ -0,0 +1,109 @@
1
+ #include "ast.hpp"
2
+ #include "to_value.hpp"
3
+ #include "to_string.hpp"
4
+
5
+ namespace Sass {
6
+
7
+ Value* To_Value::fallback_impl(AST_Node* n)
8
+ {
9
+ // throw a runtime error if this happens
10
+ // we want a well defined set of possible nodes
11
+ throw std::runtime_error("invalid node for to_value");
12
+ // mute warning
13
+ return 0;
14
+ }
15
+
16
+ // Custom_Error is a valid value
17
+ Value* To_Value::operator()(Custom_Error* e)
18
+ {
19
+ return e;
20
+ }
21
+
22
+ // Custom_Warning is a valid value
23
+ Value* To_Value::operator()(Custom_Warning* w)
24
+ {
25
+ return w;
26
+ }
27
+
28
+ // Boolean is a valid value
29
+ Value* To_Value::operator()(Boolean* b)
30
+ {
31
+ return b;
32
+ }
33
+
34
+ // Number is a valid value
35
+ Value* To_Value::operator()(Number* n)
36
+ {
37
+ return n;
38
+ }
39
+
40
+ // Color is a valid value
41
+ Value* To_Value::operator()(Color* c)
42
+ {
43
+ return c;
44
+ }
45
+
46
+ // String_Constant is a valid value
47
+ Value* To_Value::operator()(String_Constant* s)
48
+ {
49
+ return s;
50
+ }
51
+
52
+ // String_Quoted is a valid value
53
+ Value* To_Value::operator()(String_Quoted* s)
54
+ {
55
+ return s;
56
+ }
57
+
58
+ // List is a valid value
59
+ Value* To_Value::operator()(List* l)
60
+ {
61
+ List* ll = SASS_MEMORY_NEW(mem, List,
62
+ l->pstate(),
63
+ l->length(),
64
+ l->separator(),
65
+ l->is_arglist());
66
+ for (size_t i = 0, L = l->length(); i < L; ++i) {
67
+ *ll << (*l)[i]->perform(this);
68
+ }
69
+ return ll;
70
+ }
71
+
72
+ // Map is a valid value
73
+ Value* To_Value::operator()(Map* m)
74
+ {
75
+ return m;
76
+ }
77
+
78
+ // Null is a valid value
79
+ Value* To_Value::operator()(Null* n)
80
+ {
81
+ return n;
82
+ }
83
+
84
+ // Argument returns its value
85
+ Value* To_Value::operator()(Argument* arg)
86
+ {
87
+ if (!arg->name().empty()) return 0;
88
+ return arg->value()->perform(this);
89
+ }
90
+
91
+ // Selector_List is converted to a string
92
+ Value* To_Value::operator()(Selector_List* s)
93
+ {
94
+ To_String to_string(&ctx);
95
+ return SASS_MEMORY_NEW(mem, String_Quoted,
96
+ s->pstate(),
97
+ s->perform(&to_string));
98
+ }
99
+
100
+ // Binary_Expression is converted to a string
101
+ Value* To_Value::operator()(Binary_Expression* s)
102
+ {
103
+ To_String to_string(&ctx);
104
+ return SASS_MEMORY_NEW(mem, String_Quoted,
105
+ s->pstate(),
106
+ s->perform(&to_string));
107
+ }
108
+
109
+ };
@@ -0,0 +1,50 @@
1
+ #ifndef SASS_TO_VALUE_H
2
+ #define SASS_TO_VALUE_H
3
+
4
+ #include "operation.hpp"
5
+ #include "sass/values.h"
6
+ #include "ast_fwd_decl.hpp"
7
+
8
+ namespace Sass {
9
+
10
+ class To_Value : public Operation_CRTP<Value*, To_Value> {
11
+
12
+ Value* fallback_impl(AST_Node* n);
13
+
14
+ private:
15
+
16
+ Context& ctx;
17
+ Memory_Manager& mem;
18
+
19
+ public:
20
+
21
+ To_Value(Context& ctx, Memory_Manager& mem)
22
+ : ctx(ctx), mem(mem)
23
+ { }
24
+ virtual ~To_Value() { }
25
+ using Operation<Value*>::operator();
26
+
27
+ Value* operator()(Argument*);
28
+ Value* operator()(Boolean*);
29
+ Value* operator()(Number*);
30
+ Value* operator()(Color*);
31
+ Value* operator()(String_Constant*);
32
+ Value* operator()(String_Quoted*);
33
+ Value* operator()(Custom_Warning*);
34
+ Value* operator()(Custom_Error*);
35
+ Value* operator()(List*);
36
+ Value* operator()(Map*);
37
+ Value* operator()(Null*);
38
+
39
+ // convert to string via `To_String`
40
+ Value* operator()(Selector_List*);
41
+ Value* operator()(Binary_Expression*);
42
+
43
+ // fallback throws error
44
+ template <typename U>
45
+ Value* fallback(U x) { return fallback_impl(x); }
46
+ };
47
+
48
+ }
49
+
50
+ #endif
@@ -1,6 +1,10 @@
1
1
  #include <stdexcept>
2
2
  #include "units.hpp"
3
3
 
4
+ #ifdef IN
5
+ #undef IN
6
+ #endif
7
+
4
8
  namespace Sass {
5
9
 
6
10
  /* the conversion matrix can be readed the following way */
@@ -52,75 +56,75 @@ namespace Sass {
52
56
  {
53
57
  switch (unit & 0xFF00)
54
58
  {
55
- case SIZE: return SIZE; break;
56
- case ANGLE: return ANGLE; break;
57
- case TIME: return TIME; break;
58
- case FREQUENCY: return FREQUENCY; break;
59
- case RESOLUTION: return RESOLUTION; break;
60
- default: return INCOMMENSURABLE; break;
59
+ case SassUnitType::LENGTH: return SassUnitType::LENGTH; break;
60
+ case SassUnitType::ANGLE: return SassUnitType::ANGLE; break;
61
+ case SassUnitType::TIME: return SassUnitType::TIME; break;
62
+ case SassUnitType::FREQUENCY: return SassUnitType::FREQUENCY; break;
63
+ case SassUnitType::RESOLUTION: return SassUnitType::RESOLUTION; break;
64
+ default: return SassUnitType::INCOMMENSURABLE; break;
61
65
  }
62
66
  };
63
67
 
64
- SassUnit string_to_unit(const string& s)
68
+ SassUnit string_to_unit(const std::string& s)
65
69
  {
66
70
  // size units
67
- if (s == "px") return PX;
68
- else if (s == "pt") return PT;
69
- else if (s == "pc") return PC;
70
- else if (s == "mm") return MM;
71
- else if (s == "cm") return CM;
72
- else if (s == "in") return IN;
71
+ if (s == "px") return SassUnit::PX;
72
+ else if (s == "pt") return SassUnit::PT;
73
+ else if (s == "pc") return SassUnit::PC;
74
+ else if (s == "mm") return SassUnit::MM;
75
+ else if (s == "cm") return SassUnit::CM;
76
+ else if (s == "in") return SassUnit::IN;
73
77
  // angle units
74
- else if (s == "deg") return DEG;
75
- else if (s == "grad") return GRAD;
76
- else if (s == "rad") return RAD;
77
- else if (s == "turn") return TURN;
78
+ else if (s == "deg") return SassUnit::DEG;
79
+ else if (s == "grad") return SassUnit::GRAD;
80
+ else if (s == "rad") return SassUnit::RAD;
81
+ else if (s == "turn") return SassUnit::TURN;
78
82
  // time units
79
- else if (s == "s") return SEC;
80
- else if (s == "ms") return MSEC;
83
+ else if (s == "s") return SassUnit::SEC;
84
+ else if (s == "ms") return SassUnit::MSEC;
81
85
  // frequency units
82
- else if (s == "Hz") return HERTZ;
83
- else if (s == "kHz") return KHERTZ;
86
+ else if (s == "Hz") return SassUnit::HERTZ;
87
+ else if (s == "kHz") return SassUnit::KHERTZ;
84
88
  // resolutions units
85
- else if (s == "dpi") return DPI;
86
- else if (s == "dpcm") return DPCM;
87
- else if (s == "dppx") return DPPX;
89
+ else if (s == "dpi") return SassUnit::DPI;
90
+ else if (s == "dpcm") return SassUnit::DPCM;
91
+ else if (s == "dppx") return SassUnit::DPPX;
88
92
  // for unknown units
89
- else return UNKNOWN;
93
+ else return SassUnit::UNKNOWN;
90
94
  }
91
95
 
92
96
  const char* unit_to_string(SassUnit unit)
93
97
  {
94
98
  switch (unit) {
95
99
  // size units
96
- case PX: return "px"; break;
97
- case PT: return "pt"; break;
98
- case PC: return "pc"; break;
99
- case MM: return "mm"; break;
100
- case CM: return "cm"; break;
101
- case IN: return "in"; break;
100
+ case SassUnit::PX: return "px"; break;
101
+ case SassUnit::PT: return "pt"; break;
102
+ case SassUnit::PC: return "pc"; break;
103
+ case SassUnit::MM: return "mm"; break;
104
+ case SassUnit::CM: return "cm"; break;
105
+ case SassUnit::IN: return "in"; break;
102
106
  // angle units
103
- case DEG: return "deg"; break;
104
- case GRAD: return "grad"; break;
105
- case RAD: return "rad"; break;
106
- case TURN: return "turn"; break;
107
+ case SassUnit::DEG: return "deg"; break;
108
+ case SassUnit::GRAD: return "grad"; break;
109
+ case SassUnit::RAD: return "rad"; break;
110
+ case SassUnit::TURN: return "turn"; break;
107
111
  // time units
108
- case SEC: return "s"; break;
109
- case MSEC: return "ms"; break;
112
+ case SassUnit::SEC: return "s"; break;
113
+ case SassUnit::MSEC: return "ms"; break;
110
114
  // frequency units
111
- case HERTZ: return "Hz"; break;
112
- case KHERTZ: return "kHz"; break;
115
+ case SassUnit::HERTZ: return "Hz"; break;
116
+ case SassUnit::KHERTZ: return "kHz"; break;
113
117
  // resolutions units
114
- case DPI: return "dpi"; break;
115
- case DPCM: return "dpcm"; break;
116
- case DPPX: return "dppx"; break;
118
+ case SassUnit::DPI: return "dpi"; break;
119
+ case SassUnit::DPCM: return "dpcm"; break;
120
+ case SassUnit::DPPX: return "dppx"; break;
117
121
  // for unknown units
118
- default: return ""; break;;
122
+ default: return ""; break;
119
123
  }
120
124
  }
121
125
 
122
126
  // throws incompatibleUnits exceptions
123
- double conversion_factor(const string& s1, const string& s2)
127
+ double conversion_factor(const std::string& s1, const std::string& s2, bool strict)
124
128
  {
125
129
  // assert for same units
126
130
  if (s1 == s2) return 1;
@@ -135,17 +139,18 @@ namespace Sass {
135
139
  size_t i1 = u1 - t1;
136
140
  size_t i2 = u2 - t2;
137
141
  // error if units are not of the same group
138
- if (t1 != t2) throw incompatibleUnits(u1, u2);
142
+ // don't error for multiplication and division
143
+ if (strict && t1 != t2) throw incompatibleUnits(u1, u2);
139
144
  // only process known units
140
145
  if (u1 != UNKNOWN && u2 != UNKNOWN) {
141
146
  switch (t1) {
142
- case SIZE: return size_conversion_factors[i1][i2]; break;
143
- case ANGLE: return angle_conversion_factors[i1][i2]; break;
144
- case TIME: return time_conversion_factors[i1][i2]; break;
145
- case FREQUENCY: return frequency_conversion_factors[i1][i2]; break;
146
- case RESOLUTION: return resolution_conversion_factors[i1][i2]; break;
147
+ case SassUnitType::LENGTH: return size_conversion_factors[i1][i2]; break;
148
+ case SassUnitType::ANGLE: return angle_conversion_factors[i1][i2]; break;
149
+ case SassUnitType::TIME: return time_conversion_factors[i1][i2]; break;
150
+ case SassUnitType::FREQUENCY: return frequency_conversion_factors[i1][i2]; break;
151
+ case SassUnitType::RESOLUTION: return resolution_conversion_factors[i1][i2]; break;
147
152
  // ToDo: should we throw error here?
148
- case INCOMMENSURABLE: return 0; break;
153
+ case SassUnitType::INCOMMENSURABLE: return 0; break;
149
154
  }
150
155
  }
151
156
  // fallback
@@ -6,12 +6,11 @@
6
6
  #include <sstream>
7
7
 
8
8
  namespace Sass {
9
- using namespace std;
10
9
 
11
10
  const double PI = acos(-1);
12
11
 
13
12
  enum SassUnitType {
14
- SIZE = 0x000,
13
+ LENGTH = 0x000,
15
14
  ANGLE = 0x100,
16
15
  TIME = 0x200,
17
16
  FREQUENCY = 0x300,
@@ -22,7 +21,7 @@ namespace Sass {
22
21
  enum SassUnit {
23
22
 
24
23
  // size units
25
- IN = SIZE,
24
+ IN = SassUnitType::LENGTH,
26
25
  CM,
27
26
  PC,
28
27
  MM,
@@ -59,25 +58,25 @@ namespace Sass {
59
58
  extern const double frequency_conversion_factors[2][2];
60
59
  extern const double resolution_conversion_factors[3][3];
61
60
 
62
- SassUnit string_to_unit(const string&);
61
+ enum SassUnit string_to_unit(const std::string&);
63
62
  const char* unit_to_string(SassUnit unit);
64
- SassUnitType get_unit_type(SassUnit unit);
63
+ enum SassUnitType get_unit_type(SassUnit unit);
65
64
  // throws incompatibleUnits exceptions
66
- double conversion_factor(const string&, const string&);
65
+ double conversion_factor(const std::string&, const std::string&, bool = true);
67
66
 
68
- class incompatibleUnits: public exception
67
+ class incompatibleUnits: public std::exception
69
68
  {
70
69
  public:
71
70
  const char* msg;
72
71
  incompatibleUnits(SassUnit a, SassUnit b)
73
72
  : exception()
74
73
  {
75
- stringstream ss;
74
+ std::stringstream ss;
76
75
  ss << "Incompatible units: ";
77
76
  ss << "'" << unit_to_string(a) << "' and ";
78
77
  ss << "'" << unit_to_string(b) << "'";
79
78
  msg = ss.str().c_str();
80
- };
79
+ }
81
80
  virtual const char* what() const throw()
82
81
  {
83
82
  return msg;
File without changes
File without changes
@@ -116,15 +116,15 @@ namespace internal
116
116
  inline bool is_overlong_sequence(uint32_t cp, octet_difference_type length)
117
117
  {
118
118
  if (cp < 0x80) {
119
- if (length != 1)
119
+ if (length != 1)
120
120
  return true;
121
121
  }
122
122
  else if (cp < 0x800) {
123
- if (length != 2)
123
+ if (length != 2)
124
124
  return true;
125
125
  }
126
126
  else if (cp < 0x10000) {
127
- if (length != 3)
127
+ if (length != 3)
128
128
  return true;
129
129
  }
130
130
 
@@ -142,11 +142,11 @@ namespace internal
142
142
 
143
143
  if (!utf8::internal::is_trail(*it))
144
144
  return INCOMPLETE_SEQUENCE;
145
-
145
+
146
146
  return UTF8_OK;
147
147
  }
148
148
 
149
- #define UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(IT, END) {utf_error ret = increase_safely(IT, END); if (ret != UTF8_OK) return ret;}
149
+ #define UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(IT, END) {utf_error ret = increase_safely(IT, END); if (ret != UTF8_OK) return ret;}
150
150
 
151
151
  /// get_sequence_x functions decode utf-8 sequences of the length x
152
152
  template <typename octet_iterator>
@@ -163,9 +163,9 @@ namespace internal
163
163
  template <typename octet_iterator>
164
164
  utf_error get_sequence_2(octet_iterator& it, octet_iterator end, uint32_t& code_point)
165
165
  {
166
- if (it == end)
166
+ if (it == end)
167
167
  return NOT_ENOUGH_ROOM;
168
-
168
+
169
169
  code_point = utf8::internal::mask8(*it);
170
170
 
171
171
  UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end)
@@ -180,7 +180,7 @@ namespace internal
180
180
  {
181
181
  if (it == end)
182
182
  return NOT_ENOUGH_ROOM;
183
-
183
+
184
184
  code_point = utf8::internal::mask8(*it);
185
185
 
186
186
  UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end)
@@ -234,7 +234,7 @@ namespace internal
234
234
  // Get trail octets and calculate the code point
235
235
  utf_error err = UTF8_OK;
236
236
  switch (length) {
237
- case 0:
237
+ case 0:
238
238
  return INVALID_LEAD;
239
239
  case 1:
240
240
  err = utf8::internal::get_sequence_1(it, end, cp);
@@ -262,7 +262,7 @@ namespace internal
262
262
  else
263
263
  err = OVERLONG_SEQUENCE;
264
264
  }
265
- else
265
+ else
266
266
  err = INVALID_CODE_POINT;
267
267
  }
268
268
 
@@ -311,8 +311,8 @@ namespace internal
311
311
  ((it != end) && (utf8::internal::mask8(*it)) == bom[2])
312
312
  );
313
313
  }
314
-
315
- //Deprecated in release 2.3
314
+
315
+ //Deprecated in release 2.3
316
316
  template <typename octet_iterator>
317
317
  inline bool is_bom (octet_iterator it)
318
318
  {