Beispiel #1
0
 /// <summary>
 /// Static constructor
 /// </summary>
 /// <exception cref="SassCompilerLoadException">Failed to load a Sass-compiler.</exception>
 static SassCompiler()
 {
     if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
     {
         try
         {
             AssemblyResolver.Initialize();
         }
         catch (InvalidOperationException e)
         {
             throw SassErrorHelpers.WrapCompilerLoadException(e);
         }
     }
 }
Beispiel #2
0
        /// <summary>
        /// Initializes a Sass compiler
        /// </summary>
        private static void Initialize()
        {
            if (_initialized)
            {
                return;
            }

            lock (_initializationSynchronizer)
            {
                if (_initialized)
                {
                    return;
                }

                try
                {
                    _version         = SassCompilerProxy.GetVersion();
                    _languageVersion = SassCompilerProxy.GetLanguageVersion();
                }
                catch (DllNotFoundException e)
                {
                    throw WrapDllNotFoundException(e);
                }
#if NETSTANDARD1_3
                catch (TypeLoadException e)
#else
                catch (EntryPointNotFoundException e)
#endif
                {
                    string message = e.Message;
                    if (message.ContainsQuotedValue(DllName.Universal) &&
                        (message.ContainsQuotedValue("libsass_version") || message.ContainsQuotedValue("libsass_language_version")))
                    {
                        _version         = "0.0.0";
                        _languageVersion = "0.0";
                    }
                    else
                    {
                        throw SassErrorHelpers.WrapCompilerLoadException(e, true);
                    }
                }
                catch (Exception e)
                {
                    throw SassErrorHelpers.WrapCompilerLoadException(e, true);
                }

                _initialized = true;
            }
        }
Beispiel #3
0
        /// <summary>
        /// Initializes a Sass compiler
        /// </summary>
        private void InitializeCompiler()
        {
            if (_initialized)
            {
                return;
            }

            lock (_initializationSynchronizer)
            {
                if (_initialized)
                {
                    return;
                }

                string serializedOptions = _jsonSerializer.SerializeObject(_options);

                try
                {
                    _jsEngine = _createJsEngineInstance();
                    _jsEngine.EmbedHostObject(FILE_MANAGER_VARIABLE_NAME, _fileManager);
                    _jsEngine.SetVariableValue(CURRENT_OS_PLATFORM_NAME, GetCurrentOSPlatformName());

                    Assembly assembly = this.GetType()
#if !NET40
                                        .GetTypeInfo()
#endif
                                        .Assembly
                    ;

                    _jsEngine.ExecuteResource(ResourceHelpers.GetResourceName(ES6_POLYFILLS_FILE_NAME), assembly, true);
                    _jsEngine.ExecuteResource(ResourceHelpers.GetResourceName(SASS_LIBRARY_FILE_NAME), assembly, true);
                    _jsEngine.ExecuteResource(ResourceHelpers.GetResourceName(SASS_HELPER_FILE_NAME), assembly, true);
                    _jsEngine.Execute($"var sassHelper = new SassHelper({serializedOptions});");

                    _version = _jsEngine.Evaluate <string>("SassHelper.getVersion();");
                }
                catch (JsEngineLoadException e)
                {
                    throw SassErrorHelpers.WrapCompilerLoadException(e);
                }
                catch (JsException e)
                {
                    throw SassErrorHelpers.WrapCompilerLoadException(e, true);
                }

                _initialized = true;
            }
        }