sassc-embedded 0.1.2 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fe03b54e8132123c3163daf289d2a5c5159048f6fb11fe5ca4e1dd07ce863085
4
- data.tar.gz: 1bf0ac9a65e8754b49fc33475806fc04da1e96c22c082d878291db7fedcb5a1e
3
+ metadata.gz: 9fa48bc9c63a5d180324a991c7b8ceb33889b158d96a46260d7426c393406ecd
4
+ data.tar.gz: 66e8b53ea62239dbcc8ddfb00a41b332d9569384b0275df0f0e572d3c4bb091c
5
5
  SHA512:
6
- metadata.gz: c766e3c592a2624689cd5d6f5d9e2865c3b2bd866711cd8fc22b7e62ea6b0e9baea17d693e756e204360d0b3f6564180161f8ea99759821dde111e5f280f10f1
7
- data.tar.gz: dd6c13854965b5826cbc64406c8c81a09024c584b24efdb87e131dc7b30753233085121bfa5080a8100ce5f975ee928d2b9b6e365d979e110e3acae9ceb8f463
6
+ metadata.gz: 533e3f95958424301761fd4c599c59717c008307d0aea4fcdd2a12d89684369f590b8e003044ee967a8ac6aa21207eae530188802bd2c5c1a6a9c2efbf7e1289
7
+ data.tar.gz: a93ac934bd5229337a3a4daa2740624fd2d1e19c8b37764bc98cdb51f43ce964544487be3b184a962ca8c8f4c17061763d6bafb2f3daacd668c02af7e3e863ab
data/README.md CHANGED
@@ -19,7 +19,7 @@ gem install sassc-embedded
19
19
  This polyfill utilizes `sass-embedded` to allow you to compile SCSS or SASS syntax to CSS. To compile, use a `SassC::Engine`, e.g.:
20
20
 
21
21
  ``` ruby
22
- require 'sassc/embedded'
22
+ require 'sassc-embedded'
23
23
 
24
24
  SassC::Engine.new(sass, style: :compressed).render
25
25
  ```
@@ -2,6 +2,6 @@
2
2
 
3
3
  module SassC
4
4
  module Embedded
5
- VERSION = '0.1.2'
5
+ VERSION = '1.0.1'
6
6
  end
7
7
  end
@@ -22,7 +22,7 @@ module SassC
22
22
  syntax: syntax,
23
23
  url: file_url,
24
24
 
25
- source_map: !source_map_file.nil?,
25
+ source_map: source_map_embed? || !source_map_file.nil?,
26
26
  source_map_include_sources: source_map_contents?,
27
27
  style: output_style,
28
28
 
@@ -46,12 +46,19 @@ module SassC
46
46
  line = e.span&.start&.line
47
47
  line += 1 unless line.nil?
48
48
  path = Util.file_url_to_path(e.span&.url)
49
- path = relative_path(Dir.pwd, path)
49
+ path = relative_path(Dir.pwd, path) unless path.nil?
50
50
  raise SyntaxError.new(e.message, filename: path, line: line)
51
51
  end
52
52
 
53
53
  private
54
54
 
55
+ def output_path
56
+ @output_path ||= @options.fetch(
57
+ :output_path,
58
+ ("#{File.basename(filename, File.extname(filename))}.css" if filename)
59
+ )
60
+ end
61
+
55
62
  def file_url
56
63
  @file_url ||= Util.path_to_file_url(filename || 'stdin')
57
64
  end
@@ -89,9 +96,17 @@ module SassC
89
96
 
90
97
  data = JSON.parse(source_map)
91
98
 
99
+ source_map_dir = File.dirname(source_map_file || '')
100
+
101
+ if output_path
102
+ data['file'] = Util::URI_PARSER.escape(
103
+ relative_path(source_map_dir, output_path)
104
+ )
105
+ end
106
+
92
107
  data['sources'].map! do |source|
93
108
  if source.start_with? 'file:'
94
- relative_path(Dir.pwd, Util.file_url_to_path(source))
109
+ relative_path(source_map_dir, Util.file_url_to_path(source))
95
110
  else
96
111
  source
97
112
  end
@@ -106,7 +121,9 @@ module SassC
106
121
  url = if source_map_embed?
107
122
  "data:application/json;base64,#{Base64.strict_encode64(@source_map)}"
108
123
  else
109
- URI::DEFAULT_PARSER.escape(source_map_file)
124
+ Util::URI_PARSER.escape(
125
+ relative_path(File.dirname(output_path || ''), source_map_file)
126
+ )
110
127
  end
111
128
  css += "\n/*# sourceMappingURL=#{url} */"
112
129
  end
@@ -114,7 +131,7 @@ module SassC
114
131
  end
115
132
 
116
133
  def relative_path(from, to)
117
- Pathname.new(to).relative_path_from(Pathname.new(from)).to_s
134
+ Pathname.new(File.absolute_path(to)).relative_path_from(Pathname.new(File.absolute_path(from))).to_s
118
135
  end
119
136
  end
120
137
 
@@ -383,10 +400,12 @@ module SassC
383
400
  module Util
384
401
  module_function
385
402
 
403
+ URI_PARSER = URI::Parser.new({ RESERVED: ';/?:@&=+$,' })
404
+
386
405
  def file_url_to_path(url)
387
406
  return if url.nil?
388
407
 
389
- path = URI::DEFAULT_PARSER.unescape(URI.parse(url).path)
408
+ path = URI_PARSER.unescape(URI.parse(url).path)
390
409
  path = path[1..] if Gem.win_platform? && path[0].chr == '/' && path[1].chr =~ /[a-z]/i && path[2].chr == ':'
391
410
  path
392
411
  end
@@ -396,7 +415,7 @@ module SassC
396
415
 
397
416
  path = File.absolute_path(path)
398
417
  path = "/#{path}" unless path.start_with? '/'
399
- URI::File.build([nil, URI::DEFAULT_PARSER.escape(path)]).to_s
418
+ URI::File.build([nil, URI_PARSER.escape(path)]).to_s
400
419
  end
401
420
  end
402
421
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sassc-embedded
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - なつき
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.1'
33
+ version: '1.2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.1'
40
+ version: '1.2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -138,8 +138,8 @@ homepage: https://github.com/ntkme/sassc-embedded-polyfill-ruby
138
138
  licenses:
139
139
  - MIT
140
140
  metadata:
141
- documentation_uri: https://rubydoc.info/gems/sassc-embedded/0.1.2
142
- source_code_uri: https://github.com/ntkme/sassc-embedded-polyfill-ruby/tree/v0.1.2
141
+ documentation_uri: https://rubydoc.info/gems/sassc-embedded/1.0.1
142
+ source_code_uri: https://github.com/ntkme/sassc-embedded-polyfill-ruby/tree/v1.0.1
143
143
  funding_uri: https://github.com/sponsors/ntkme
144
144
  post_install_message:
145
145
  rdoc_options: []