示例#1
0
        public CodeColorizerBase(StyleDictionary Styles, ILanguageParser languageParser)
        {
            this.languageParser = languageParser
                                  ?? new LanguageParser(new LanguageCompiler(Languages.CompiledLanguages, Languages.CompileLock), Languages.LanguageRepository);

            this.Styles = Styles ?? StyleDictionary.DefaultLight;
        }
示例#2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="CodeColorizerBase"/> class for creating Syntax Highlighted code.
        /// </summary>
        /// <param name="styles">The Custom styles to Apply to the formatted Code.</param>
        /// <param name="languageParser">The language parser that the <see cref="CodeColorizerBase"/> instance will use for its lifetime.</param>
        public CodeColorizerBase(StyleDictionary styles, ILanguageParser languageParser)
        {
            LanguageParser = languageParser
                             ?? new LanguageParser(new LanguageCompiler(Languages.CompiledLanguages), Languages.LanguageRepository);

            Styles = styles ?? StyleDictionary.DefaultLight;
        }
示例#3
0
 public void Init(ILanguageParser parser)
 {
     this.parser = parser;
     TextStyleRed.normal.textColor  = Color.red;
     TextStyleBlue.normal.textColor = Color.blue;
     ShowEditorWindow();
     isInited = true;
 }
示例#4
0
 public ParserUnit(Language language, Thread thread)
 {
     Language      = language ?? throw new NullReferenceException(nameof(language));
     parser        = language.CreateParser();
     logger        = new ParserUnitLogger();
     parser.Logger = logger;
     this.thread   = thread;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="CodeColorizer"/> class.
        /// </summary>
        /// <param name="languageParser">The language parser that the <see cref="CodeColorizer"/> instance will use for its lifetime.</param>
        public CodeColorizer(ILanguageParser languageParser)
        {
            Guard.ArgNotNull(languageParser, "languageParser");

            this.languageParser = languageParser;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="CodeColorizer"/> class.
 /// </summary>
 public CodeColorizer()
 {
     languageParser = new LanguageParser(new LanguageCompiler(Languages.CompiledLanguages), Languages.LanguageRepository);
 }
 /// <summary>
 /// Creates a <see cref="HtmlClassFormatter"/>, for creating HTML to display Syntax Highlighted code, with Styles applied via CSS.
 /// </summary>
 /// <param name="Style">The Custom styles to Apply to the formatted Code.</param>
 /// <param name="languageParser">The language parser that the <see cref="HtmlClassFormatter"/> instance will use for its lifetime.</param>
 public HtmlClassFormatter(StyleDictionary Style = null, ILanguageParser languageParser = null) : base(Style, languageParser)
 {
 }
示例#8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CodeColorizer"/> class.
 /// </summary>
 /// <param name="languageParser">The language parser that the <see cref="CodeColorizer"/> instance will use for its lifetime.</param>
 public CodeColorizer(ILanguageParser languageParser)
 {
     Guard.ArgNotNull(languageParser, "languageParser");
     this.languageParser = languageParser;
 }
示例#9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CodeColorizer"/> class.
 /// </summary>
 public CodeColorizer()
 {
     languageParser = new LanguageParser(new LanguageCompiler(Languages.CompiledLanguages), Languages.LanguageRepository);
 }
 /// <summary>
 /// Creates a <see cref="RichTextBlockFormatter"/>, for rendering Syntax Highlighted code to a RichTextBlock.
 /// </summary>
 /// <param name="Style">The Custom styles to Apply to the formatted Code.</param>
 /// <param name="languageParser">The language parser that the <see cref="RichTextBlockFormatter"/> instance will use for its lifetime.</param>
 public RichTextBlockFormatter(StyleDictionary Style = null, ILanguageParser languageParser = null) : base(Style, languageParser)
 {
 }
 /// <summary>
 /// Creates a <see cref="RichTextBlockFormatter"/>, for rendering Syntax Highlighted code to a RichTextBlock.
 /// </summary>
 /// <param name="Theme">The Theme to use, determines whether to use Default Light or Default Dark.</param>
 public RichTextBlockFormatter(ElementTheme Theme, ILanguageParser languageParser = null) : this(Theme == ElementTheme.Dark ? StyleDictionary.DefaultDark : StyleDictionary.DefaultLight, languageParser)
 {
 }
示例#12
0
 public ParserUnit(ILanguageParser parser, LoggerMessageCounter logger, Task task)
 {
     Parser = parser;
     Logger = logger;
     Task   = task;
 }
示例#13
0
        public static void RegisterLanguageParser(string identifier, string extension, ILanguageParser languageParser)
        {
            ParsersByIdentifier.Remove(identifier);
            ParsersByIdentifier.Add(identifier, languageParser);

            ParsersByExtension.Remove(extension);
            ParsersByExtension.Add(extension, languageParser);
        }
示例#14
0
 public DiffViewTextColorizer(StyleDictionary Style = null, ILanguageParser languageParser = null)
     : base(Style, languageParser)
 {
 }
示例#15
0
 public Md(ILanguageParser languageParser, ILanguageBuilder languageBuilder)
 {
     this.languageParser  = languageParser;
     this.languageBuilder = languageBuilder;
 }
示例#16
0
        public override Language?Detect(string sourceCode, Language[] languages = null)
        {
            List <Language> langs = (languages ?? LanguageExt.Languages).ToList();

            // Any PHP file contains start tag.
            if (!sourceCode.Contains("<?"))
            {
                langs.Remove(Language.Php);
            }
            // Aspx and html code contains at least one tag.
            if (!openTagRegex.IsMatch(sourceCode) || !closeTagRegex.IsMatch(sourceCode))
            {
                langs.Remove(Language.Aspx);
                langs.Remove(Language.Html);
            }
            var sourceCodeFile = new SourceCodeFile("Temp Source Code")
            {
                Code = sourceCode
            };
            var parseUnits = new Queue <Tuple <Language, ParserUnit> >(langs.Count);

            langs = langs
                    .GroupBy(l => ParserConverterBuilder.GetParserConverterSet(l).Parser.Language)
                    .Select(l => l.First())
                    .ToList();

            if (langs.Count == 1)
            {
                return(langs[0]);
            }

            foreach (var language in langs)
            {
                var             logger         = new LoggerMessageCounter();
                ILanguageParser languageParser = ParserConverterBuilder.GetParserConverterSet(language).Parser;

                var task = Task.Factory.StartNew(() =>
                {
                    languageParser.Logger = logger;
                    languageParser.Parse(sourceCodeFile);
                });

                parseUnits.Enqueue(Tuple.Create(language, new ParserUnit(languageParser, logger, task)));
            }

            int      minErrorCount       = int.MaxValue;
            Language?resultWithMinErrors = null;

            // Check every parseUnit completion every 50 ms.
            while (parseUnits.Count > 0)
            {
                var pair = parseUnits.Dequeue();
                if (!pair.Item2.Task.IsCompleted)
                {
                    parseUnits.Enqueue(pair);
                    Thread.Sleep(50);
                    continue;
                }

                if (pair.Item2.Logger.ErrorCount == 0 && pair.Item1 != Language.Aspx)
                {
                    return(pair.Item1);
                }

                var errorCount = pair.Item2.ParseErrorCount;
                if (errorCount < minErrorCount)
                {
                    minErrorCount       = errorCount;
                    resultWithMinErrors = pair.Item1;
                }
            }

            return(resultWithMinErrors);
        }