]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Fix indented SASS imports for Dart Sass
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 8 Jun 2023 14:17:12 +0000 (16:17 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 12 Jun 2023 11:47:38 +0000 (13:47 +0200)
Fixes #11074

go.mod
go.sum
resources/resource_transformers/tocss/dartsass/integration_test.go
resources/resource_transformers/tocss/dartsass/transform.go

diff --git a/go.mod b/go.mod
index d19c1b0ba146045435f6de74dd0f6398fd7c6a92..0144c0959f47549cecb6c28333ce0824851c12c2 100644 (file)
--- a/go.mod
+++ b/go.mod
@@ -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
diff --git a/go.sum b/go.sum
index ec96735a68562315baf7d9bd1c2bcdc0bccb3bc7..2a672cc1915e1ceadb8b524bcb90a9c67e695d02 100644 (file)
--- a/go.sum
+++ b/go.sum
@@ -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=
index aa71101a04e69de59535019d989872cccf1e5756..d765923360c98fb28bd898edec9d27530abd9cd7 100644 (file)
@@ -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()
index 61ea54437ad91fb7c7699201ddacc26ba5905bdf..95dfd5944920a6e4ca5b447f1d2d2427f024ce6c 100644 (file)
@@ -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
+
 }