Esempio n. 1
0
 protected override void SetOverriddenOptions(IntPtr sassOptionsInternal, ISassOptions sassOptions)
 {
     if (!string.IsNullOrWhiteSpace(sassOptions.InputPath))
     {
         sass_option_set_input_path(sassOptionsInternal, new SassSafeStringHandle(sassOptions.InputPath));
     }
 }
Esempio n. 2
0
        private static SassList GetTada(ISassOptions sassOptions, string signature, params ISassType[] sassValues)
        {
            SassList list = (SassList)sassValues[0];
            SassMap  map  = (SassMap)sassValues[1];

            WriteLine($"list: {list}");
            WriteLine($"map: {map}");

            list.Separator = SassListSeparator.Comma;

            return(list);
        }
Esempio n. 3
0
        /// <summary>
        /// Provides an instance of LibSass wrapper class.
        /// </summary>
        /// <param name="sassOptions">Sass options object for compilation.</param>
        /// <remarks>
        /// Replicates LibSass behaviour for context resolution, that is;
        /// if data is provided, make data context and set input file as
        /// supplementary option. Otherwise make a file context.
        /// </remarks>
        public SassCompiler(ISassOptions sassOptions)
        {
            if (string.IsNullOrEmpty(sassOptions.Data))
            {
                _internalContext = new SassSafeFileContextHandle(sassOptions);
            }
            else
            {
                _internalContext = new SassSafeDataContextHandle(sassOptions);
            }

            _internalContext.SetOptions(sassOptions);
        }
Esempio n. 4
0
 internal SassSafeContextHandle(ISassOptions sassOptions, IntPtr method) :
     base(IntPtr.Zero, true)
 {
     handle       = method;
     _sassOptions = sassOptions;
 }
Esempio n. 5
0
 protected virtual void SetOverriddenOptions(IntPtr sassOptionsInternal, ISassOptions sassOptions)
 { /* only `SafeSassDataContextHandle` derived type will implement it. */
 }
Esempio n. 6
0
        internal void SetOptions(ISassOptions sassOptions)
        {
            IntPtr sassOptionsInternal = sass_context_get_options(this);

            sass_option_set_output_style(sassOptionsInternal, sassOptions.OutputStyle);
            sass_option_set_source_comments(sassOptionsInternal, sassOptions.IncludeSourceComments);
            sass_option_set_source_map_embed(sassOptionsInternal, sassOptions.EmbedSourceMap);
            sass_option_set_omit_source_map_url(sassOptionsInternal, sassOptions.OmitSourceMapUrl);
            sass_option_set_is_indented_syntax_src(sassOptionsInternal, sassOptions.IsIndentedSyntax);
            sass_option_set_source_map_contents(sassOptionsInternal, sassOptions.IncludeSourceMapContents);

            if (sassOptions.Precision.HasValue)
            {
                sass_option_set_precision(sassOptionsInternal, sassOptions.Precision.Value);
            }

            if (!string.IsNullOrWhiteSpace(sassOptions.OutputPath))
            {
                sass_option_set_output_path(sassOptionsInternal, new SassSafeStringHandle(sassOptions.OutputPath));
            }

            if (!string.IsNullOrWhiteSpace(sassOptions.IncludePath))
            {
                sass_option_set_include_path(sassOptionsInternal, new SassSafeStringHandle(sassOptions.IncludePath));
            }

            if (!string.IsNullOrWhiteSpace(sassOptions.SourceMapRoot))
            {
                sass_option_set_source_map_root(sassOptionsInternal, new SassSafeStringHandle(sassOptions.SourceMapRoot));
            }

            if (!string.IsNullOrWhiteSpace(sassOptions.SourceMapFile))
            {
                sass_option_set_source_map_file(sassOptionsInternal, new SassSafeStringHandle(sassOptions.SourceMapFile));
            }

            // Indent can be whitespace.
            if (!string.IsNullOrEmpty(sassOptions.Indent))
            {
                var indent = new SassSafeStringHandle(sassOptions.Indent);
                sass_option_set_indent(sassOptionsInternal, indent);
            }

            // Linefeed can be whitespace (i.e. \r is a whitespace).
            if (!string.IsNullOrEmpty(sassOptions.Linefeed))
            {
                var linefeed = new SassSafeStringHandle(sassOptions.Linefeed);
                sass_option_set_linefeed(sassOptionsInternal, linefeed);
            }

            if (sassOptions.IncludePaths != null)
            {
                foreach (var path in sassOptions.IncludePaths)
                {
                    sass_option_push_include_path(sassOptionsInternal, new SassSafeStringHandle(path));
                }
            }

            if (sassOptions.Importers != null)
            {
                sass_option_set_c_importers(sassOptionsInternal, GetCustomImportersHeadPtr(sassOptions.Importers));
            }

            if (sassOptions.Headers != null)
            {
                sass_option_set_c_headers(sassOptionsInternal, GetCustomImportersHeadPtr(sassOptions.Headers));
            }

            if (sassOptions.Functions != null)
            {
                sass_option_set_c_functions(sassOptionsInternal, GetCustomFunctionsHeadPtr(sassOptions.Functions));
            }

            SetOverriddenOptions(sassOptionsInternal, sassOptions);
        }
Esempio n. 7
0
        public static SassResult Compile(this ISassOptions options)
        {
            var sass = new SassCompiler(options);

            return(sass.Compile());
        }
Esempio n. 8
0
 internal SassSafeDataContextHandle(ISassOptions sassOptions) :
     base(sassOptions, sass_make_data_context(EncodeAsUtf8IntPtr(sassOptions.Data)))
 {
 }
Esempio n. 9
0
 internal SassSafeFileContextHandle(ISassOptions sassOptions) :
     base(sassOptions, sass_make_file_context(new SassSafeStringHandle(sassOptions.InputPath)))
 {
 }