nanoc-dart-sass 0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 40b93740b864b61bac9b890e3076e2f52ed675d85ec815296d22a29e3d3bb1cf
4
+ data.tar.gz: ccfc074b2ac62ed6172ead70e9f3c77311633885efaec81cf1b371bf45d68b51
5
+ SHA512:
6
+ metadata.gz: 665aabe49726e3ec886549f46331d343df41341568fadbc6cd1a4273601e32e41ae1b7d03a48a973ab08745a4ae2b8929b328ef2f4196827580ab92a04a9aecc
7
+ data.tar.gz: c0d0dcf3bf0ea5978886b544982e57bed7ff06649dd64e14367299f616d4915bdbd164b8a8f1b4f72bafffe5c5caebee9175656758fdfa4246998f8529a2bc69
data/NEWS.md ADDED
@@ -0,0 +1,5 @@
1
+ # nanoc-dart-sass news
2
+
3
+ ## 0.0.1 (2022-11-20)
4
+
5
+ Initial pre-release.
data/README.md ADDED
@@ -0,0 +1,31 @@
1
+ # nanoc-dart-sass
2
+
3
+ This provides a filter that allows [Nanoc](https://nanoc.app) to process content via [Dart Sass](https://sass-lang.com/dart-sass).
4
+
5
+ ## Installation
6
+
7
+ Add `nanoc-dart-sass` to the `nanoc` group of your Gemfile:
8
+
9
+ ```ruby
10
+ group :nanoc do
11
+ gem 'nanoc-dart-sass'
12
+ end
13
+ ```
14
+
15
+ ## Usage
16
+
17
+ Call the `:dart_sass` filter. For example:
18
+
19
+ ```ruby
20
+ filter :dart_sass
21
+ ```
22
+
23
+ Options passed to this filter will be passed on to Dart Sass. For example:
24
+
25
+ ```ruby
26
+ filter :dart_sass, syntax: 'scss'
27
+ ```
28
+
29
+ ```ruby
30
+ filter :dart_sass, syntax: 'scss'
31
+ ```
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'dart_sass'
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Nanoc
4
+ module DartSass
5
+ class Filter < Nanoc::Filter
6
+ identifier :dart_sass
7
+
8
+ # Runs the content through [Dart Sass](https://sass-lang.com/dart-sass).
9
+ # Parameters passed as `:args` will be passed on to Dart Sass.
10
+ #
11
+ # @param [String] content The content to filter
12
+ #
13
+ # @return [String] The filtered content
14
+ def run(content, params = {})
15
+ # Read syntax
16
+ syntax = params[:syntax]
17
+ syntax ||=
18
+ case item.identifier.ext
19
+ when 'sass'
20
+ :indented
21
+ when 'scss'
22
+ :scss
23
+ when 'css'
24
+ :css
25
+ else
26
+ nil
27
+ end
28
+
29
+ result = Sass.compile_string(
30
+ content,
31
+ importer: make_dart_sass_importer(@items),
32
+ **params,
33
+ syntax: syntax,
34
+ )
35
+ result.css
36
+ rescue StandardError => e
37
+ # TODO: use full_message for syntax errors
38
+ raise e
39
+ end
40
+
41
+ private
42
+
43
+ def make_dart_sass_importer(items)
44
+ {
45
+ canonicalize: lambda do |param, **|
46
+ "nanoc:#{items[param.sub(/\Ananoc:/, '')].identifier}"
47
+ end,
48
+ load: lambda { |url|
49
+ param = url.sub(/\Ananoc:/, '')
50
+ item = items[param]
51
+ return {
52
+ contents: item.raw_content,
53
+ syntax: item.identifier.ext,
54
+ }
55
+ },
56
+ }
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Nanoc
4
+ module DartSass
5
+ VERSION = '0.0.1'
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Nanoc
4
+ module DartSass
5
+ end
6
+ end
7
+
8
+ require 'sass-embedded'
9
+
10
+ require 'nanoc/dart_sass/version'
11
+ require 'nanoc/dart_sass/filter'
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'nanoc/dart_sass'
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nanoc-dart-sass
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Denis Defreyne
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-11-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nanoc-core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.12'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.12'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sass-embedded
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.56'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.56'
41
+ description: Provides a :dart_sass filter for Nanoc
42
+ email: denis+rubygems@denis.ws
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - NEWS.md
48
+ - README.md
49
+ - lib/nanoc-dart-sass.rb
50
+ - lib/nanoc/dart-sass.rb
51
+ - lib/nanoc/dart_sass.rb
52
+ - lib/nanoc/dart_sass/filter.rb
53
+ - lib/nanoc/dart_sass/version.rb
54
+ homepage: https://nanoc.ws/
55
+ licenses:
56
+ - MIT
57
+ metadata:
58
+ rubygems_mfa_required: 'true'
59
+ post_install_message:
60
+ rdoc_options: []
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '2.7'
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ requirements: []
74
+ rubygems_version: 3.3.26
75
+ signing_key:
76
+ specification_version: 4
77
+ summary: Dart Sass filter for Nanoc
78
+ test_files: []