예제 #1
0
        public async Task <JObject> GetMarkdownIt(string text)
        {
            _jsengine = _jsengine ?? JsEngineSwitcher.Instance.CreateDefaultEngine();

            var version = "8.4.0";

            if (_mardownit == null)
            {
                _mardownit = await _httpClient.GetStringAsync($"https://raw.githubusercontent.com/markdown-it/markdown-it/{version}/dist/markdown-it.min.js");

                _jsengine.Execute(_mardownit);
                _jsengine.Evaluate("var MarkdownIt = markdownit();");
            }

            var inputval = "input_" + Guid.NewGuid().ToString().Replace("-", "_");

            _jsengine.SetVariableValue(inputval, text);

            var script = $"MarkdownIt.render({inputval});";
            var result = _jsengine.Evaluate(script)?.ToString();

            _jsengine.RemoveVariable(inputval);

            var jsonResult = new JObject
            {
                ["name"]    = "markdown-it",
                ["version"] = version,
                ["html"]    = result
            };

            return(jsonResult);
        }
예제 #2
0
        /// <summary>
        /// Destroys object
        /// </summary>
        public void Dispose()
        {
            if (_disposedFlag.Set())
            {
                if (_jsEngine != null)
                {
                    _jsEngine.RemoveVariable(LESS_ENVIRONMENT_VARIABLE_NAME);
                    _jsEngine.RemoveVariable(VIRTUAL_FILE_MANAGER_VARIABLE_NAME);

                    _jsEngine.Dispose();
                    _jsEngine = null;
                }

                _virtualFileManager = null;
            }
        }
예제 #3
0
        public async Task <JObject> GetCommonMarkJs(string text)
        {
            _jsengine = _jsengine ?? JsEngineSwitcher.Instance.CreateDefaultEngine();

            var version = "0.28.1";

            if (_commonmarkjs == null)
            {
                _commonmarkjs = await _httpClient.GetStringAsync($"https://raw.githubusercontent.com/commonmark/commonmark.js/{version}/dist/commonmark.min.js");

                _jsengine.Execute(_commonmarkjs);
            }

            var inputval = "input_" + Guid.NewGuid().ToString().Replace("-", "_");

            _jsengine.SetVariableValue(inputval, text);

            var script = $"(new commonmark.HtmlRenderer()).render((new commonmark.Parser()).parse({inputval}));";
            var result = _jsengine.Evaluate(script)?.ToString();

            _jsengine.RemoveVariable(inputval);

            var jsonResult = new JObject
            {
                ["name"]    = "commonmark.js",
                ["version"] = version,
                ["html"]    = result
            };

            return(jsonResult);
        }
예제 #4
0
        /// <summary>
        /// Destroys object
        /// </summary>
        public void Dispose()
        {
            if (_disposedFlag.Set())
            {
                if (_jsEngine != null)
                {
                    _jsEngine.RemoveVariable(COUNTRY_STATISTICS_SERVICE_VARIABLE_NAME);

                    _jsEngine.Dispose();
                    _jsEngine = null;
                }
            }
        }
예제 #5
0
        public virtual void RemovingVariableIsCorrect()
        {
            // Arrange
            const string variableName = "price";
            const double input        = 120.55;

            // Act
            _jsEngine.SetVariableValue(variableName, input);
            bool variableBeforeRemovingExists = _jsEngine.HasVariable(variableName);

            _jsEngine.RemoveVariable(variableName);
            bool variableAfterRemovingExists = _jsEngine.HasVariable(variableName);

            // Assert
            Assert.IsTrue(variableBeforeRemovingExists);
            Assert.IsFalse(variableAfterRemovingExists);
        }
예제 #6
0
        /// <summary>
        /// Destroys object
        /// </summary>
        public void Dispose()
        {
            if (_disposedFlag.Set())
            {
                if (_jsEngine != null)
                {
                    _jsEngine.RemoveVariable(FILE_MANAGER_VARIABLE_NAME);

                    _jsEngine.Dispose();
                    _jsEngine = null;
                }

                _jsonSerializer         = null;
                _options                = null;
                _fileManager            = null;
                _createJsEngineInstance = null;
            }
        }
예제 #7
0
 public void RemoveVariable(string variableName)
 {
     CheckDisposed();
     _engine.RemoveVariable(variableName);
 }