diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index fa63fe2363..5381030915 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -65,7 +65,6 @@ Rouge/NoBuildingAlternationPatternInRegexp: - 'lib/rouge/lexers/bicep.rb' - 'lib/rouge/lexers/cfscript.rb' - 'lib/rouge/lexers/cmhg.rb' - - 'lib/rouge/lexers/console.rb' - 'lib/rouge/lexers/crystal.rb' - 'lib/rouge/lexers/csharp.rb' - 'lib/rouge/lexers/d.rb' diff --git a/lib/rouge/lexers/console.rb b/lib/rouge/lexers/console.rb index 501ac50b57..dcb057187f 100644 --- a/lib/rouge/lexers/console.rb +++ b/lib/rouge/lexers/console.rb @@ -75,7 +75,7 @@ def comment_regex def end_chars @end_chars ||= if @prompt.any? - @prompt.reject { |c| c.empty? } + @prompt.reject { |c| c.empty? }.uniq.first(20) elsif allow_comments? %w($ > ;) else @@ -173,9 +173,13 @@ def prompt_prefix_regex end def prompt_regex + # [jneen] these characters can come from user input. They are escaped here, + # and we limit the user to 20. + #rubocop:disable Rouge/NoBuildingAlternationPatternInRegexp @prompt_regex ||= begin /^#{prompt_prefix_regex}(?:#{end_chars.map { |c| Regexp.escape(c) }.join('|')})/ end + #rubocop:enable Rouge/NoBuildingAlternationPatternInRegexp end def stream_tokens(input, &output)