hugo

Fork of github.com/gohugoio/hugo with reverse pagination support

git clone git://git.shimmy1996.com/hugo.git

client_extended.go (1850B)

    1 // Copyright 2018 The Hugo Authors. All rights reserved.
    2 //
    3 // Licensed under the Apache License, Version 2.0 (the "License");
    4 // you may not use this file except in compliance with the License.
    5 // You may obtain a copy of the License at
    6 // http://www.apache.org/licenses/LICENSE-2.0
    7 //
    8 // Unless required by applicable law or agreed to in writing, software
    9 // distributed under the License is distributed on an "AS IS" BASIS,
   10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   11 // See the License for the specific language governing permissions and
   12 // limitations under the License.
   13 
   14 //go:build extended
   15 // +build extended
   16 
   17 package scss
   18 
   19 import (
   20 	"github.com/bep/golibsass/libsass"
   21 	"github.com/gohugoio/hugo/resources"
   22 	"github.com/gohugoio/hugo/resources/internal"
   23 	"github.com/gohugoio/hugo/resources/resource"
   24 )
   25 
   26 type options struct {
   27 	// The options we receive from the end user.
   28 	from Options
   29 
   30 	// The options we send to the SCSS library.
   31 	to libsass.Options
   32 }
   33 
   34 func (c *Client) ToCSS(res resources.ResourceTransformer, opts Options) (resource.Resource, error) {
   35 	internalOptions := options{
   36 		from: opts,
   37 	}
   38 
   39 	// Transfer values from client.
   40 	internalOptions.to.Precision = opts.Precision
   41 	internalOptions.to.OutputStyle = libsass.ParseOutputStyle(opts.OutputStyle)
   42 
   43 	if internalOptions.to.Precision == 0 {
   44 		// bootstrap-sass requires 8 digits precision. The libsass default is 5.
   45 		// https://github.com/twbs/bootstrap-sass/blob/master/README.md#sass-number-precision
   46 		internalOptions.to.Precision = 8
   47 	}
   48 
   49 	return res.Transform(&toCSSTransformation{c: c, options: internalOptions})
   50 
   51 }
   52 
   53 type toCSSTransformation struct {
   54 	c       *Client
   55 	options options
   56 }
   57 
   58 func (t *toCSSTransformation) Key() internal.ResourceTransformationKey {
   59 	return internal.NewResourceTransformationKey(transformationName, t.options.from)
   60 }