Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Zenspider/warnings double loads and fixes #1962

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,22 @@ gem 'minitest', '>= 5.0'
gem 'minitest-power_assert'
gem 'power_assert', '~> 2.0'

gem 'rubocop', '~> 1.0', '<= 1.11'
gem 'rubocop-performance'

# don't try to install redcarpet under jruby
gem 'redcarpet', platforms: :ruby

# Profiling
gem 'memory_profiler', require: false

# Needed for a Rake task
gem 'git'
gem 'yard'

group :development do
gem 'pry'

# Needed for a Rake task
gem 'git'
gem 'yard'

gem 'rubocop', '~> 1.0', '<= 1.11'
gem 'rubocop-performance'

# docs
gem 'github-markup'

Expand Down
89 changes: 45 additions & 44 deletions lib/rouge.rb
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ def highlight(text, lexer, formatter, &b)
#
# @api private
def load_file(path)
Kernel::load File.join(LIB_DIR, "rouge/#{path}.rb")
warn "just use require_relative %p" % ["rouge/#{path}"]
require_relative "rouge/#{path}"
end

# Load the lexers in the `lib/rouge/lexers` directory.
Expand All @@ -55,52 +56,52 @@ def load_lexers
end
end

Rouge.load_file 'version'
Rouge.load_file 'util'
Rouge.load_file 'text_analyzer'
Rouge.load_file 'token'
require_relative 'rouge/version'
require_relative 'rouge/util'
require_relative 'rouge/text_analyzer'
require_relative 'rouge/token'

Rouge.load_file 'lexer'
Rouge.load_file 'regex_lexer'
Rouge.load_file 'template_lexer'
require_relative 'rouge/lexer'
require_relative 'rouge/regex_lexer'
require_relative 'rouge/template_lexer'

Rouge.load_lexers

Rouge.load_file 'guesser'
Rouge.load_file 'guessers/util'
Rouge.load_file 'guessers/glob_mapping'
Rouge.load_file 'guessers/modeline'
Rouge.load_file 'guessers/filename'
Rouge.load_file 'guessers/mimetype'
Rouge.load_file 'guessers/source'
Rouge.load_file 'guessers/disambiguation'
require_relative 'rouge/guesser'
require_relative 'rouge/guessers/util'
require_relative 'rouge/guessers/glob_mapping'
require_relative 'rouge/guessers/modeline'
require_relative 'rouge/guessers/filename'
require_relative 'rouge/guessers/mimetype'
require_relative 'rouge/guessers/source'
require_relative 'rouge/guessers/disambiguation'

Rouge.load_file 'formatter'
Rouge.load_file 'formatters/html'
Rouge.load_file 'formatters/html_table'
Rouge.load_file 'formatters/html_pygments'
Rouge.load_file 'formatters/html_legacy'
Rouge.load_file 'formatters/html_linewise'
Rouge.load_file 'formatters/html_line_highlighter'
Rouge.load_file 'formatters/html_line_table'
Rouge.load_file 'formatters/html_inline'
Rouge.load_file 'formatters/terminal256'
Rouge.load_file 'formatters/terminal_truecolor'
Rouge.load_file 'formatters/tex'
Rouge.load_file 'formatters/null'
require_relative 'rouge/formatter'
require_relative 'rouge/formatters/html'
require_relative 'rouge/formatters/html_table'
require_relative 'rouge/formatters/html_pygments'
require_relative 'rouge/formatters/html_legacy'
require_relative 'rouge/formatters/html_linewise'
require_relative 'rouge/formatters/html_line_highlighter'
require_relative 'rouge/formatters/html_line_table'
require_relative 'rouge/formatters/html_inline'
require_relative 'rouge/formatters/terminal256'
require_relative 'rouge/formatters/terminal_truecolor'
require_relative 'rouge/formatters/tex'
require_relative 'rouge/formatters/null'

Rouge.load_file 'theme'
Rouge.load_file 'tex_theme_renderer'
Rouge.load_file 'themes/thankful_eyes'
Rouge.load_file 'themes/colorful'
Rouge.load_file 'themes/base16'
Rouge.load_file 'themes/github'
Rouge.load_file 'themes/igor_pro'
Rouge.load_file 'themes/monokai'
Rouge.load_file 'themes/molokai'
Rouge.load_file 'themes/monokai_sublime'
Rouge.load_file 'themes/gruvbox'
Rouge.load_file 'themes/tulip'
Rouge.load_file 'themes/pastie'
Rouge.load_file 'themes/bw'
Rouge.load_file 'themes/magritte'
require_relative 'rouge/theme'
require_relative 'rouge/tex_theme_renderer'
require_relative 'rouge/themes/thankful_eyes'
require_relative 'rouge/themes/colorful'
require_relative 'rouge/themes/base16'
require_relative 'rouge/themes/github'
require_relative 'rouge/themes/igor_pro'
require_relative 'rouge/themes/monokai'
require_relative 'rouge/themes/molokai'
require_relative 'rouge/themes/monokai_sublime'
require_relative 'rouge/themes/gruvbox'
require_relative 'rouge/themes/tulip'
require_relative 'rouge/themes/pastie'
require_relative 'rouge/themes/bw'
require_relative 'rouge/themes/magritte'
6 changes: 2 additions & 4 deletions lib/rouge/cli.rb
Original file line number Diff line number Diff line change
Expand Up @@ -347,8 +347,7 @@ def run
formatter.format(lexer.lex(input), &method(:print))
end

private_class_method
def self.parse_cgi(str)
private_class_method def self.parse_cgi(str)
pairs = CGI.parse(str).map { |k, v| [k.to_sym, v.first] }
Hash[pairs]
end
Expand Down Expand Up @@ -511,8 +510,7 @@ def run
end


private_class_method
def self.normalize_syntax(argv)
private_class_method def self.normalize_syntax(argv)
out = []
argv.each do |arg|
case arg
Expand Down
7 changes: 1 addition & 6 deletions lib/rouge/lexer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -523,13 +523,8 @@ def self.detect?(text)
end

module Lexers
BASE_DIR = "#{__dir__}/lexers".freeze
@_loaded_lexers = {}

def self.load_lexer(relpath)
return if @_loaded_lexers.key?(relpath)
@_loaded_lexers[relpath] = true
Kernel::load File.join(BASE_DIR, relpath)
require_relative "lexers/#{relpath}"
end
end
end
2 changes: 1 addition & 1 deletion lib/rouge/lexers/ada.rb
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ def self.idents
end

# Flag word-like things that don't match the ID pattern.
rule %r{\b(\p{Pc}|[[alpha]])\p{Word}*}, Error
rule %r{\b(\p{Pc}|[[:alpha:]])\p{Word}*}, Error
end
end
end
Expand Down
16 changes: 1 addition & 15 deletions lib/rouge/lexers/apache.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,7 @@ class Apache < RegexLexer
mimetypes 'text/x-httpd-conf', 'text/x-apache-conf'
filenames '.htaccess', 'httpd.conf'

# self-modifying method that loads the keywords file
def self.directives
Kernel::load File.join(Lexers::BASE_DIR, 'apache/keywords.rb')
directives
end

def self.sections
Kernel::load File.join(Lexers::BASE_DIR, 'apache/keywords.rb')
sections
end

def self.values
Kernel::load File.join(Lexers::BASE_DIR, 'apache/keywords.rb')
values
end
require_relative "apache/keywords"

def name_for_token(token, tktype)
if self.class.sections.include? token
Expand Down
2 changes: 1 addition & 1 deletion lib/rouge/lexers/apiblueprint.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

module Rouge
module Lexers
load_lexer 'markdown.rb'
require_relative 'markdown'

class APIBlueprint < Markdown
title 'API Blueprint'
Expand Down
2 changes: 1 addition & 1 deletion lib/rouge/lexers/biml.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

module Rouge
module Lexers
load_lexer 'xml.rb'
require_relative 'xml'

class BIML < XML
title "BIML"
Expand Down
8 changes: 4 additions & 4 deletions lib/rouge/lexers/clean.rb
Original file line number Diff line number Diff line change
Expand Up @@ -79,23 +79,23 @@ class instance

rule %r/code(\s+inline)?\s*{/, Comment::Preproc, :abc

rule %r/_*[a-z][\w_`]*/ do |m|
rule %r/_*[a-z][\w`]*/ do |m|
if self.class.keywords.include?(m[0])
token Keyword
else
token Name
end
end

rule %r/_*[A-Z][\w_`]*/ do |m|
rule %r/_*[A-Z][\w`]*/ do |m|
if m[0]=='True' || m[0]=='False'
token Keyword::Constant
else
token Keyword::Type
end
end

rule %r/[^\w_\s`]/, Punctuation
rule %r/[^\w\s`]/, Punctuation
rule %r/_\b/, Punctuation
end

Expand Down Expand Up @@ -136,7 +136,7 @@ class instance

rule %r/}/, Comment::Preproc, :pop!
rule %r/\.\w*/, Keyword, :abc_rest_of_line
rule %r/[\w_]+/, Name::Builtin, :abc_rest_of_line
rule %r/[\w]+/, Name::Builtin, :abc_rest_of_line
end

state :abc_rest_of_line do
Expand Down
2 changes: 1 addition & 1 deletion lib/rouge/lexers/cpp.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

module Rouge
module Lexers
load_lexer 'c.rb'
require_relative 'c'

class Cpp < C
title "C++"
Expand Down
2 changes: 1 addition & 1 deletion lib/rouge/lexers/cuda.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

module Rouge
module Lexers
load_lexer 'cpp.rb'
require_relative 'cpp'

class CUDA < Cpp
title "CUDA"
Expand Down
2 changes: 1 addition & 1 deletion lib/rouge/lexers/cython.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

module Rouge
module Lexers
load_lexer 'python.rb'
require_relative 'python'

class Cython < Python
title "Cython"
Expand Down
2 changes: 1 addition & 1 deletion lib/rouge/lexers/digdag.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
require 'set'
module Rouge
module Lexers
load_lexer 'yaml.rb'
require_relative 'yaml'

class Digdag < YAML
title 'digdag'
Expand Down
4 changes: 2 additions & 2 deletions lib/rouge/lexers/ecl.rb
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,8 @@ def self.typed
mixin :single_quote

rule %r(\b(?i:(and|not|or|in))\b), Operator::Word
rule %r([:=|>|<|<>|/|\\|\+|-|=]), Operator
rule %r([\[\]{}();,\&,\.,\%]), Punctuation
rule %r(:=|>|<|<>|/|\\|\+|-|=), Operator
rule %r([\[\]{}();,\&\.\%]), Punctuation

rule %r(\b(?i:(beginc\+\+.*?endc\+\+)))m, Str::Single
rule %r(\b(?i:(embed.*?endembed)))m, Str::Single
Expand Down
2 changes: 1 addition & 1 deletion lib/rouge/lexers/elixir.rb
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ class Elixir < RegexLexer
rule %r/[\\#]/, toktype
end

uniq_chars = "#{open}#{close}".squeeze
uniq_chars = [open, close].uniq.join
rule %r/[^##{uniq_chars}\\]+/m, toktype
end
end
Expand Down
2 changes: 1 addition & 1 deletion lib/rouge/lexers/freefem.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

module Rouge
module Lexers
load_lexer 'cpp.rb'
require_relative 'cpp'

class FreeFEM < Cpp
title "FreeFEM"
Expand Down
2 changes: 1 addition & 1 deletion lib/rouge/lexers/gdscript.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def self.keywords_reserved
end

def self.builtins
builtins = %w(
%w(
Color8 ColorN abs acos asin assert atan atan2 bytes2var ceil char
clamp convert cos cosh db2linear decimals dectime deg2rad dict2inst
ease exp floor fmod fposmod funcref hash inst2dict instance_from_id
Expand Down
6 changes: 3 additions & 3 deletions lib/rouge/lexers/ghc_cmm.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ class GHCCmm < RegexLexer
ws = %r(\s|//.*?\n|/[*](?:[^*]|(?:[*][^/]))*[*]+/)mx

# Make sure that this is not a preprocessor macro, e.g. `#if` or `#define`.
id = %r((?!\#[a-zA-Z])[\w#\$%_']+)
id = %r((?!\#[a-zA-Z])[\w#\$%']+)

complex_id = %r(
(?:[\w#$%_']|\(\)|\(,\)|\[\]|[0-9])*
(?:[\w#$%_']+)
(?:[\w#$%']|\(\)|\(,\)|\[\]|[0-9])*
(?:[\w#$%']+)
)mx

state :root do
Expand Down
6 changes: 1 addition & 5 deletions lib/rouge/lexers/gherkin.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,7 @@ def self.detect?(text)
return true if text.shebang? 'cucumber'
end

# self-modifying method that loads the keywords file
def self.keywords
Kernel::load File.join(Lexers::BASE_DIR, 'gherkin/keywords.rb')
keywords
end
require_relative "gherkin/keywords"

def self.step_regex
# in Gherkin's config, keywords that end in < don't
Expand Down
2 changes: 1 addition & 1 deletion lib/rouge/lexers/glsl.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

module Rouge
module Lexers
load_lexer 'c.rb'
require_relative 'c'

# This file defines the GLSL language lexer to the Rouge
# syntax highlighter.
Expand Down
2 changes: 1 addition & 1 deletion lib/rouge/lexers/gradle.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

module Rouge
module Lexers
load_lexer 'groovy.rb'
require_relative 'groovy'

class Gradle < Groovy
title "Gradle"
Expand Down
2 changes: 1 addition & 1 deletion lib/rouge/lexers/hack.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

module Rouge
module Lexers
load_lexer 'php.rb'
require_relative 'php'

class Hack < PHP
title 'Hack'
Expand Down
2 changes: 1 addition & 1 deletion lib/rouge/lexers/hlsl.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

module Rouge
module Lexers
load_lexer 'c.rb'
require_relative 'c'

class HLSL < C
title "HLSL"
Expand Down
Loading