diff options
author | Bjørn Erik Pedersen <[email protected]> | 2023-06-08 16:17:12 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2023-06-12 13:47:38 +0200 |
commit | c782ebd89c4e40f9c7ce363359efc64e8355ad17 (patch) | |
tree | 7e4b0768ed87b0aa15e416cfc9a4439e9487f256 | |
parent | 73779707a2d5fefd4915f8ee2021f265d841dea2 (diff) | |
download | hugo-c782ebd89c4e40f9c7ce363359efc64e8355ad17.tar.gz hugo-c782ebd89c4e40f9c7ce363359efc64e8355ad17.zip |
Fix indented SASS imports for Dart Sass
Fixes #11074
-rw-r--r-- | go.mod | 2 | ||||
-rw-r--r-- | go.sum | 4 | ||||
-rw-r--r-- | resources/resource_transformers/tocss/dartsass/integration_test.go | 32 | ||||
-rw-r--r-- | resources/resource_transformers/tocss/dartsass/transform.go | 17 |
4 files changed, 50 insertions, 5 deletions
@@ -10,7 +10,7 @@ require ( github.com/bep/debounce v1.2.0 github.com/bep/gitmap v1.1.2 github.com/bep/goat v0.5.0 - github.com/bep/godartsass v0.16.0 + github.com/bep/godartsass v1.1.0 github.com/bep/golibsass v1.1.1 github.com/bep/gowebp v0.2.0 github.com/bep/helpers v0.4.0 @@ -170,6 +170,10 @@ github.com/bep/goat v0.5.0 h1:S8jLXHCVy/EHIoCY+btKkmcxcXFd34a0Q63/0D4TKeA= github.com/bep/goat v0.5.0/go.mod h1:Md9x7gRxiWKs85yHlVTvHQw9rg86Bm+Y4SuYE8CTH7c= github.com/bep/godartsass v0.16.0 h1:nTpenrZBQjVSjLkCw3AgnYmBB2czauTJa4BLLv448qg= github.com/bep/godartsass v0.16.0/go.mod h1:6LvK9RftsXMxGfsA0LDV12AGc4Jylnu6NgHL+Q5/pE8= +github.com/bep/godartsass v1.0.0 h1:vL5TTtPkpEAZowsXydfJ3M1BatR9fH513FP3but9TEM= +github.com/bep/godartsass v1.0.0/go.mod h1:6LvK9RftsXMxGfsA0LDV12AGc4Jylnu6NgHL+Q5/pE8= +github.com/bep/godartsass v1.1.0 h1:MYNXVQMFoohxue9sCbHi+bWp4AeykvH40gQj1fd9q1c= +github.com/bep/godartsass v1.1.0/go.mod h1:6LvK9RftsXMxGfsA0LDV12AGc4Jylnu6NgHL+Q5/pE8= github.com/bep/golibsass v1.1.1 h1:xkaet75ygImMYjM+FnHIT3xJn7H0xBA9UxSOJjk8Khw= github.com/bep/golibsass v1.1.1/go.mod h1:DL87K8Un/+pWUS75ggYv41bliGiolxzDKWJAq3eJ1MA= github.com/bep/gowebp v0.2.0 h1:ZVfK8i9PpZqKHEmthQSt3qCnnHycbLzBPEsVtk2ch2Q= diff --git a/resources/resource_transformers/tocss/dartsass/integration_test.go b/resources/resource_transformers/tocss/dartsass/integration_test.go index aa71101a0..d76592336 100644 --- a/resources/resource_transformers/tocss/dartsass/integration_test.go +++ b/resources/resource_transformers/tocss/dartsass/integration_test.go @@ -109,6 +109,38 @@ T1: {{ $r.Content | safeHTML }} /* foo */`) } +func TestTransformImportIndentedSASS(t *testing.T) { + t.Parallel() + if !dartsass.Supports() { + t.Skip() + } + + files := ` +-- assets/scss/_moo.sass -- +#main + color: blue +-- assets/scss/main.scss -- +@import "moo"; + +/* foo */ +-- config.toml -- +-- layouts/index.html -- +{{ $r := resources.Get "scss/main.scss" | toCSS (dict "transpiler" "dartsass") }} +T1: {{ $r.Content | safeHTML }} + + ` + + b := hugolib.NewIntegrationTestBuilder( + hugolib.IntegrationTestConfig{ + T: t, + TxtarString: files, + NeedsOsFS: true, + }, + ).Build() + + b.AssertFileContent("public/index.html", "T1: #main {\n color: blue;\n}\n\n/* foo */") +} + // Issue 10592 func TestTransformImportMountedCSS(t *testing.T) { t.Parallel() diff --git a/resources/resource_transformers/tocss/dartsass/transform.go b/resources/resource_transformers/tocss/dartsass/transform.go index 61ea54437..95dfd5944 100644 --- a/resources/resource_transformers/tocss/dartsass/transform.go +++ b/resources/resource_transformers/tocss/dartsass/transform.go @@ -86,7 +86,7 @@ func (t *transform) Transform(ctx *resources.ResourceTransformationCtx) error { baseDir: baseDir, c: t.c, - varsStylesheet: sass.CreateVarsStyleSheet(opts.Vars), + varsStylesheet: godartsass.Import{Content: sass.CreateVarsStyleSheet(opts.Vars)}, }, OutputStyle: godartsass.ParseOutputStyle(opts.OutputStyle), EnableSourceMap: opts.EnableSourceMap, @@ -132,7 +132,7 @@ type importResolver struct { baseDir string c *Client - varsStylesheet string + varsStylesheet godartsass.Import } func (t importResolver) CanonicalizeURL(url string) (string, error) { @@ -184,11 +184,20 @@ func (t importResolver) CanonicalizeURL(url string) (string, error) { return "", nil } -func (t importResolver) Load(url string) (string, error) { +func (t importResolver) Load(url string) (godartsass.Import, error) { if url == sass.HugoVarsNamespace { return t.varsStylesheet, nil } filename, _ := paths.UrlToFilename(url) b, err := afero.ReadFile(hugofs.Os, filename) - return string(b), err + + sourceSyntax := godartsass.SourceSyntaxSCSS + if strings.HasSuffix(filename, ".sass") { + sourceSyntax = godartsass.SourceSyntaxSASS + } else if strings.HasSuffix(filename, ".css") { + sourceSyntax = godartsass.SourceSyntaxCSS + } + + return godartsass.Import{Content: string(b), SourceSyntax: sourceSyntax}, err + } |