sassc 1.12.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/CHANGELOG.md +61 -0
  4. data/Gemfile +1 -3
  5. data/LICENSE.txt +1 -1
  6. data/README.md +3 -59
  7. data/lib/sassc.rb +20 -1
  8. data/lib/sassc/dependency.rb +2 -0
  9. data/lib/sassc/engine.rb +2 -0
  10. data/lib/sassc/error.rb +9 -3
  11. data/lib/sassc/functions_handler.rb +3 -2
  12. data/lib/sassc/import_handler.rb +2 -0
  13. data/lib/sassc/importer.rb +2 -0
  14. data/lib/sassc/native.rb +3 -2
  15. data/lib/sassc/native/lib_c.rb +2 -0
  16. data/lib/sassc/native/native_context_api.rb +2 -0
  17. data/lib/sassc/native/native_functions_api.rb +2 -0
  18. data/lib/sassc/native/sass2scss_api.rb +2 -0
  19. data/lib/sassc/native/sass_input_style.rb +2 -0
  20. data/lib/sassc/native/sass_output_style.rb +2 -0
  21. data/lib/sassc/native/sass_value.rb +2 -0
  22. data/lib/sassc/native/string_list.rb +2 -0
  23. data/lib/sassc/sass_2_scss.rb +2 -0
  24. data/lib/sassc/script.rb +5 -35
  25. data/lib/sassc/script/functions.rb +2 -0
  26. data/lib/sassc/script/value.rb +137 -0
  27. data/lib/sassc/script/value/bool.rb +32 -0
  28. data/lib/sassc/script/value/color.rb +95 -0
  29. data/lib/sassc/script/value/list.rb +136 -0
  30. data/lib/sassc/script/value/map.rb +69 -0
  31. data/lib/sassc/script/value/number.rb +389 -0
  32. data/lib/sassc/script/value/string.rb +96 -0
  33. data/lib/sassc/script/value_conversion.rb +62 -82
  34. data/lib/sassc/script/value_conversion/base.rb +2 -0
  35. data/lib/sassc/script/value_conversion/bool.rb +2 -0
  36. data/lib/sassc/script/value_conversion/color.rb +2 -0
  37. data/lib/sassc/script/value_conversion/list.rb +2 -0
  38. data/lib/sassc/script/value_conversion/map.rb +2 -0
  39. data/lib/sassc/script/value_conversion/number.rb +2 -0
  40. data/lib/sassc/script/value_conversion/string.rb +2 -0
  41. data/lib/sassc/util.rb +231 -0
  42. data/lib/sassc/util/normalized_map.rb +117 -0
  43. data/lib/sassc/version.rb +3 -1
  44. data/lib/tasks/libsass.rb +2 -0
  45. data/sassc.gemspec +9 -5
  46. data/test/custom_importer_test.rb +2 -0
  47. data/test/engine_test.rb +5 -3
  48. data/test/error_test.rb +2 -0
  49. data/test/functions_test.rb +31 -37
  50. data/test/native_test.rb +2 -4
  51. data/test/output_style_test.rb +2 -0
  52. data/test/sass_2_scss_test.rb +2 -0
  53. data/test/test_helper.rb +2 -0
  54. metadata +23 -29
  55. data/lib/sassc/cache_stores.rb +0 -6
  56. data/lib/sassc/cache_stores/base.rb +0 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '04176064892f9e9a76a5817dbcee82dbe97ed15550fce3079221c86093103670'
4
- data.tar.gz: 48a3cb002d56556c76e520d873ec276c9d69bdae858b0586c9cee3cf4d5acc8c
3
+ metadata.gz: 728b06267e365e493048b5367d344608392997c5beee20e7606d763b655514e7
4
+ data.tar.gz: c418fc06a5d8badec39fe2abf134c8297fa7d96679fa3af145f9718004b3e35b
5
5
  SHA512:
6
- metadata.gz: d22d06995c99d8c72a7887a3c432689683a17987dbd60c682571be0f7f97ad7ca5cc6de83738a1c44e348da3fe98f87728594b633fc85a9d7907b31cf241e645
7
- data.tar.gz: a61ebd11b851d986ac24bf9180cc3830082068da3b3e3096d12cc1ce8308ebf70d2f75a8224797e4c134576cdc67cd88824db97d39f4b30ef91c5bf3672a72c8
6
+ metadata.gz: 37937f49272650f5efc95eda412f8487050171a6fe31eae775cdf6ff03aa293458388a22a352a5dd59f3f4141d83a7f32f91b571513cdb14468a11f6176b69ea
7
+ data.tar.gz: e25e7d5a7b9049802c35e456cb35e22c801028ca93c5efceaea1e7cf80c14ba84ec3ceb7660d6323146cc5b09a9fb8e1843aa678bc3076d2231cf48d84bae197
@@ -3,7 +3,7 @@ language: ruby
3
3
  bundler_args: "--binstubs --standalone --without documentation --path ../bundle"
4
4
  script: "bundle exec rake test"
5
5
  rvm:
6
- - 2.3.3
6
+ - 2.3.7
7
7
  - 2.4.4
8
8
  - 2.5.1
9
9
  notifications:
@@ -0,0 +1,61 @@
1
+ - **2.0.0**
2
+ - [Remove dependency on Ruby Sass](https://github.com/sass/sassc-ruby/pull/85)
3
+ - [frozen_string_literal all files](https://github.com/sass/sassc-ruby/pull/85)
4
+ - **1.12.1**
5
+ - [Downgrade to libsass 3.5.2 to fix css imports](https://github.com/sass/sassc-ruby/pull/81)
6
+ - **1.12.0**
7
+ - [Update Libsass to 3.5.4](https://github.com/sass/sassc-ruby/pull/78)
8
+ - [bundler is a development dependency](https://github.com/sass/sassc-ruby/pull/51)
9
+ - **1.11.4**
10
+ - Fix `Value::List` related issue with sass 3.5.0
11
+ - **1.11.3**
12
+ - [Require Sass::Deprecation module](https://github.com/sass/sassc-ruby/pull/68)
13
+ - **1.11.2**
14
+ - [Update to libsass 3.4.3](https://github.com/sass/sassc-ruby/pull/65)
15
+ - **1.11.1**
16
+ - [Update to libsass 3.4.1](https://github.com/sass/sassc-ruby/pull/61)
17
+ - **1.11.0**
18
+ - [Add support for lists in functions](https://github.com/sass/sassc-ruby/pull/55)
19
+ - [Update to libsass 3.4.0](https://github.com/sass/sassc-ruby/pull/57)
20
+ - **1.10.1**
21
+ - [Add sourcemap getter](https://github.com/sass/sassc-ruby/pull/48)
22
+ - **1.10.0**
23
+ - [Improved error messages](https://github.com/sass/sassc-ruby/pull/34)
24
+ - Update to Libsass 3.3.6
25
+ - **1.9.0**
26
+ - Support boolean script support
27
+ - **1.8.5**
28
+ - Update to Libsass 3.3.4
29
+ - **1.8.4**
30
+ - Update to Libsass 3.3.3
31
+ - **1.8.3**
32
+ - [Passing empty string into engine does not raise error](https://github.com/sass/sassc-ruby/pull/31)
33
+ - **1.8.2**
34
+ - Update to Libsass 3.3.2
35
+ - **1.8.1**
36
+ - Update to Libsass 3.3.1
37
+ - **1.8.0**
38
+ - Update to Libsass 3.3.0
39
+ - **1.8.0.pre2**
40
+ - Fix bug with looking up gem_path
41
+ - **1.8.0.pre1**
42
+ - [Update to Libsass 3.3.0-beta3](https://github.com/sass/sassc-ruby/pull/20)
43
+ - **1.7.1**
44
+ - Some updates to `Engine` API.
45
+ - **1.7.0**
46
+ - [Support Precision](https://github.com/sass/sassc-ruby/pull/19)
47
+ - **1.6.0**
48
+ - [Support Sass Color types](https://github.com/bolandrm/sassc-ruby/pull/14)
49
+ - [Support quoted strings](https://github.com/bolandrm/sassc-ruby/pull/13)
50
+ - [Improve custom function error handling](https://github.com/bolandrm/sassc-ruby/pull/15)
51
+ - **1.5.1**
52
+ - 2nd attempt at fixing compilation bug (issue [#12](https://github.com/bolandrm/sassc-ruby/issues/12))
53
+ - **1.5.0**
54
+ - Add support for inline source maps
55
+ - Fix compilation bug (issue [#12](https://github.com/bolandrm/sassc-ruby/issues/12))
56
+ - **1.4.0**
57
+ - Add support for line number comments
58
+ - **1.3.0**
59
+ - Support Sass color custom function arguments
60
+ - Adds error handling for exceptions in custom functions
61
+ - Custom functions may have optional/default arguments
data/Gemfile CHANGED
@@ -1,4 +1,2 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in sassc.gemspec
1
+ source "https://rubygems.org"
4
2
  gemspec
@@ -1,4 +1,4 @@
1
- Copyright (c) 2015 Ryan Boland
1
+ Copyright (c) Ryan Boland & Contributors
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Use `libsass` with Ruby!
4
4
 
5
- This gem combines the speed of `libsass`, the [Sass C implementation](https://github.com/sass/libsass), with the ease of use of the original [Ruby Sass](https://github.com/sass/sass) library.
5
+ This gem combines the speed of `libsass`, the [Sass C implementation](https://github.com/sass/libsass), with the ease of use of the original [Ruby Sass](https://github.com/sass/ruby-sass) library.
6
6
 
7
7
  ### libsass Version
8
8
 
@@ -48,64 +48,8 @@ This gem is maintained by [Ryan Boland](https://ryanboland.com)
48
48
  and [awesome contributors](https://github.com/bolandrm/sassc-ruby/graphs/contributors).
49
49
 
50
50
  ## Changelog
51
- - **1.12.1**
52
- - [Downgrade to libsass 3.5.2 to fix css imports](https://github.com/sass/sassc-ruby/pull/81)
53
- - **1.12.0**
54
- - [Update Libsass to 3.5.4](https://github.com/sass/sassc-ruby/pull/78)
55
- - [bundler is a development dependency](https://github.com/sass/sassc-ruby/pull/51)
56
- - **1.11.4**
57
- - Fix `Value::List` related issue with sass 3.5.0
58
- - **1.11.3**
59
- - [Require Sass::Deprecation module](https://github.com/sass/sassc-ruby/pull/68)
60
- - **1.11.2**
61
- - [Update to libsass 3.4.3](https://github.com/sass/sassc-ruby/pull/65)
62
- - **1.11.1**
63
- - [Update to libsass 3.4.1](https://github.com/sass/sassc-ruby/pull/61)
64
- - **1.11.0**
65
- - [Add support for lists in functions](https://github.com/sass/sassc-ruby/pull/55)
66
- - [Update to libsass 3.4.0](https://github.com/sass/sassc-ruby/pull/57)
67
- - **1.10.1**
68
- - [Add sourcemap getter](https://github.com/sass/sassc-ruby/pull/48)
69
- - **1.10.0**
70
- - [Improved error messages](https://github.com/sass/sassc-ruby/pull/34)
71
- - Update to Libsass 3.3.6
72
- - **1.9.0**
73
- - Support boolean script support
74
- - **1.8.5**
75
- - Update to Libsass 3.3.4
76
- - **1.8.4**
77
- - Update to Libsass 3.3.3
78
- - **1.8.3**
79
- - [Passing empty string into engine does not raise error](https://github.com/sass/sassc-ruby/pull/31)
80
- - **1.8.2**
81
- - Update to Libsass 3.3.2
82
- - **1.8.1**
83
- - Update to Libsass 3.3.1
84
- - **1.8.0**
85
- - Update to Libsass 3.3.0
86
- - **1.8.0.pre2**
87
- - Fix bug with looking up gem_path
88
- - **1.8.0.pre1**
89
- - [Update to Libsass 3.3.0-beta3](https://github.com/sass/sassc-ruby/pull/20)
90
- - **1.7.1**
91
- - Some updates to `Engine` API.
92
- - **1.7.0**
93
- - [Support Precision](https://github.com/sass/sassc-ruby/pull/19)
94
- - **1.6.0**
95
- - [Support Sass Color types](https://github.com/bolandrm/sassc-ruby/pull/14)
96
- - [Support quoted strings](https://github.com/bolandrm/sassc-ruby/pull/13)
97
- - [Improve custom function error handling](https://github.com/bolandrm/sassc-ruby/pull/15)
98
- - **1.5.1**
99
- - 2nd attempt at fixing compilation bug (issue [#12](https://github.com/bolandrm/sassc-ruby/issues/12))
100
- - **1.5.0**
101
- - Add support for inline source maps
102
- - Fix compilation bug (issue [#12](https://github.com/bolandrm/sassc-ruby/issues/12))
103
- - **1.4.0**
104
- - Add support for line number comments
105
- - **1.3.0**
106
- - Support Sass color custom function arguments
107
- - Adds error handling for exceptions in custom functions
108
- - Custom functions may have optional/default arguments
51
+
52
+ See [CHANGELOG.md](CHANGELOG.md).
109
53
 
110
54
  ## Contributing
111
55
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SassC
2
4
  end
3
5
 
@@ -5,9 +7,26 @@ require_relative "sassc/version"
5
7
  require_relative "sassc/native"
6
8
  require_relative "sassc/import_handler"
7
9
  require_relative "sassc/importer"
10
+ require_relative "sassc/util"
11
+ require_relative "sassc/util/normalized_map"
8
12
  require_relative "sassc/script"
13
+ require_relative "sassc/script/value"
14
+ require_relative "sassc/script/value/bool"
15
+ require_relative "sassc/script/value/number"
16
+ require_relative "sassc/script/value/color"
17
+ require_relative "sassc/script/value/string"
18
+ require_relative "sassc/script/value/list"
19
+ require_relative "sassc/script/value/map"
20
+ require_relative "sassc/script/functions"
21
+ require_relative "sassc/script/value_conversion"
22
+ require_relative "sassc/script/value_conversion/base"
23
+ require_relative "sassc/script/value_conversion/string"
24
+ require_relative "sassc/script/value_conversion/number"
25
+ require_relative "sassc/script/value_conversion/color"
26
+ require_relative "sassc/script/value_conversion/map"
27
+ require_relative "sassc/script/value_conversion/list"
28
+ require_relative "sassc/script/value_conversion/bool"
9
29
  require_relative "sassc/functions_handler"
10
- require_relative "sassc/cache_stores"
11
30
  require_relative "sassc/dependency"
12
31
  require_relative "sassc/error"
13
32
  require_relative "sassc/engine"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SassC
2
4
  class Dependency
3
5
  attr_reader :filename
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative "error"
2
4
 
3
5
  module SassC
@@ -1,7 +1,9 @@
1
- require 'pathname'
2
- require 'sass/error'
1
+ # frozen_string_literal: true
2
+
3
+ require "pathname"
3
4
 
4
5
  module SassC
6
+
5
7
  class BaseError < StandardError; end
6
8
  class NotRenderedError < BaseError; end
7
9
  class InvalidStyleError < BaseError; end
@@ -9,8 +11,10 @@ module SassC
9
11
 
10
12
  # When dealing with SyntaxErrors,
11
13
  # it's important to provide filename and line number information.
12
- # This will be used in various error reports to users, including backtraces;
14
+ # This will be used in various error reports to users, including backtraces.
15
+
13
16
  class SyntaxError < BaseError
17
+
14
18
  def initialize(message, filename: nil, line: nil)
15
19
  @filename = filename
16
20
  @line = line
@@ -27,5 +31,7 @@ module SassC
27
31
  return [] unless @filename && @line
28
32
  ["#{@filename}:#{@line}"]
29
33
  end
34
+
30
35
  end
36
+
31
37
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SassC
2
4
  class FunctionsHandler
3
5
  def initialize(options)
@@ -54,8 +56,7 @@ module SassC
54
56
  def to_native_value(sass_value)
55
57
  # if the custom function returns nil, we provide a "default" return
56
58
  # value of an empty string
57
- sass_value ||= Script::String.new("")
58
-
59
+ sass_value ||= SassC::Script::Value::String.new("")
59
60
  sass_value.options = @options
60
61
  Script::ValueConversion.to_native(sass_value)
61
62
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SassC
2
4
  class ImportHandler
3
5
  def initialize(options)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SassC
2
4
  class Importer
3
5
  attr_reader :options
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "ffi"
2
4
 
3
5
  module SassC
@@ -48,8 +50,7 @@ module SassC
48
50
  end
49
51
 
50
52
  def self.native_string(string)
51
- string = string.to_s
52
- string << "\0"
53
+ string = "#{string}\0"
53
54
  data = Native::LibC.malloc(string.bytesize)
54
55
  data.write_string(string)
55
56
  data
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SassC
2
4
  module Native
3
5
  module LibC
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SassC
2
4
  module Native
3
5
  attach_function :version, :libsass_version, [], :string
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SassC
2
4
  module Native
3
5
  # Creators for sass function list and function descriptors
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SassC
2
4
  module Native
3
5
  # ADDAPI char* ADDCALL sass2scss (const char* sass, const int options);
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SassC
2
4
  module Native
3
5
  SassInputStyle = enum(
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SassC
2
4
  module Native
3
5
  SassOutputStyle = enum(
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SassC
2
4
  module Native
3
5
  class SassValue < FFI::Union; end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SassC
2
4
  module Native
3
5
  class StringList < FFI::Struct
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SassC
2
4
  class Sass2Scss
3
5
  def self.convert(sass)
@@ -1,5 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SassC
2
4
  module Script
5
+
3
6
  def self.custom_functions
4
7
  Functions.instance_methods.select do |function|
5
8
  Functions.public_method_defined?(function)
@@ -8,42 +11,9 @@ module SassC
8
11
 
9
12
  def self.formatted_function_name(function_name)
10
13
  params = Functions.instance_method(function_name).parameters
11
- params = params.map { |param_type, name| "$#{name}#{': null' if param_type == :opt}" }
12
- .join(", ")
13
-
14
- "#{function_name}(#{params})"
15
- end
16
-
17
- module Value
14
+ params = params.map { |param_type, name| "$#{name}#{': null' if param_type == :opt}" }.join(", ")
15
+ return "#{function_name}(#{params})"
18
16
  end
19
- end
20
- end
21
-
22
- require_relative "script/functions"
23
- require_relative "script/value_conversion"
24
17
 
25
- module Sass
26
- module Script
27
18
  end
28
19
  end
29
-
30
- require 'sass/util'
31
-
32
- begin
33
- require 'sass/deprecation'
34
- rescue LoadError
35
- end
36
-
37
- require 'sass/script/value/base'
38
- require 'sass/script/value/string'
39
- require 'sass/script/value/color'
40
- require 'sass/script/value/bool'
41
-
42
- SassC::Script::String = Sass::Script::Value::String
43
- SassC::Script::Value::String = Sass::Script::Value::String
44
-
45
- SassC::Script::Color = Sass::Script::Value::Color
46
- SassC::Script::Value::Color = Sass::Script::Value::Color
47
-
48
- SassC::Script::Bool = Sass::Script::Value::Bool
49
- SassC::Script::Value::Bool = Sass::Script::Value::Bool
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SassC
2
4
  module Script
3
5
  module Functions
@@ -0,0 +1,137 @@
1
+ # frozen_string_literal: true
2
+
3
+ # The abstract superclass for SassScript objects.
4
+ # Many of these methods, especially the ones that correspond to SassScript operations,
5
+ # are designed to be overridden by subclasses which may change the semantics somewhat.
6
+ # The operations listed here are just the defaults.
7
+
8
+ class SassC::Script::Value
9
+
10
+ # Returns the pure Ruby value of the value.
11
+ # The type of this value varies based on the subclass.
12
+ attr_reader :value
13
+
14
+ # The source range in the document on which this node appeared.
15
+ attr_accessor :source_range
16
+
17
+ # Creates a new value.
18
+ def initialize(value = nil)
19
+ value.freeze unless value.nil? || value == true || value == false
20
+ @value = value
21
+ @options = nil
22
+ end
23
+
24
+ # Sets the options hash for this node,
25
+ # as well as for all child nodes.
26
+ # See the official Sass reference for options.
27
+ attr_writer :options
28
+
29
+ # Returns the options hash for this node.
30
+ # Raises SassC::SyntaxError if the value was created
31
+ # outside of the parser and \{#to\_s} was called on it
32
+ def options
33
+ return @options if @options
34
+ raise SassC::SyntaxError.new("The #options attribute is not set on this #{self.class}. This error is probably occurring because #to_s was called on this value within a custom Sass function without first setting the #options attribute.")
35
+ end
36
+
37
+ # Returns the hash code of this value. Two objects' hash codes should be
38
+ # equal if the objects are equal.
39
+ def hash
40
+ value.hash
41
+ end
42
+
43
+ # True if this Value is the same as `other`
44
+ def eql?(other)
45
+ self == other
46
+ end
47
+
48
+ # Returns a system inspect value for this object
49
+ def inspect
50
+ value.inspect
51
+ end
52
+
53
+ # Returns `true` (all Values are truthy)
54
+ def to_bool
55
+ true
56
+ end
57
+
58
+ # Compares this object to `other`
59
+ def ==(other)
60
+ self.class == other.class && value == other.value
61
+ end
62
+
63
+ # Returns the integer value of this value.
64
+ # Raises SassC::SyntaxError if this value doesn’t implment integer conversion.
65
+ def to_i
66
+ raise SassC::SyntaxError.new("#{inspect} is not an integer.")
67
+ end
68
+
69
+ # @raise [SassC::SyntaxError] if this value isn't an integer
70
+ def assert_int!; to_i; end
71
+
72
+ # Returns the separator for this value. For non-list-like values or the
73
+ # empty list, this will be `nil`. For lists or maps, it will be `:space` or `:comma`.
74
+ def separator
75
+ nil
76
+ end
77
+
78
+ # Whether the value is surrounded by square brackets. For non-list values,
79
+ # this will be `false`.
80
+ def bracketed
81
+ false
82
+ end
83
+
84
+ # Returns the value of this Value as an array.
85
+ # Single Values are considered the same as single-element arrays.
86
+ def to_a
87
+ [self]
88
+ end
89
+
90
+ # Returns the value of this value as a hash. Most values don't have hash
91
+ # representations, but [Map]s and empty [List]s do.
92
+ #
93
+ # @return [Hash<Value, Value>] This value as a hash
94
+ # @raise [SassC::SyntaxError] if this value doesn't have a hash representation
95
+ def to_h
96
+ raise SassC::SyntaxError.new("#{inspect} is not a map.")
97
+ end
98
+
99
+ # Returns the string representation of this value
100
+ # as it would be output to the CSS document.
101
+ #
102
+ # @options opts :quote [String]
103
+ # The preferred quote style for quoted strings. If `:none`, strings are
104
+ # always emitted unquoted.
105
+ # @return [String]
106
+ def to_s(opts = {})
107
+ SassC::Util.abstract(self)
108
+ end
109
+ alias_method :to_sass, :to_s
110
+
111
+ # Returns `false` (all Values are truthy)
112
+ def null?
113
+ false
114
+ end
115
+
116
+ # Creates a new list containing `contents` but with the same brackets and
117
+ # separators as this object, when interpreted as a list.
118
+ #
119
+ # @param contents [Array<Value>] The contents of the new list.
120
+ # @param separator [Symbol] The separator of the new list. Defaults to \{#separator}.
121
+ # @param bracketed [Boolean] Whether the new list is bracketed. Defaults to \{#bracketed}.
122
+ # @return [Sass::Script::Value::List]
123
+ def with_contents(contents, separator: self.separator, bracketed: self.bracketed)
124
+ SassC::Script::Value::List.new(contents, separator: separator, bracketed: bracketed)
125
+ end
126
+
127
+ protected
128
+
129
+ # Evaluates the value.
130
+ #
131
+ # @param environment [Sass::Environment] The environment in which to evaluate the SassScript
132
+ # @return [Value] This value
133
+ def _perform(environment)
134
+ self
135
+ end
136
+
137
+ end