Skip to content

Commit

Permalink
Revert "Merge branch 'add-mason-lexer' of github.com:miparnisari/roug…
Browse files Browse the repository at this point in the history
…e into add-mason-lexer"

This reverts commit 2b69daa, reversing
changes made to dd1a781.
  • Loading branch information
miparnisari committed May 29, 2019
1 parent 2b69daa commit 9e79279
Show file tree
Hide file tree
Showing 37 changed files with 158 additions and 293 deletions.
5 changes: 4 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,13 @@ rvm:
- "2.3"
- "2.4"
- "2.5"
- "2.6"

cache:
bundler: true
bundler_args: --without development
before_install:
- gem install bundler
- gem update --system
script:
- bundle exec rake
- bundle exec rubocop
8 changes: 2 additions & 6 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ source 'http://rubygems.org'

gemspec

gem 'bundler', '~> 1.15'
gem 'rake'

gem 'minitest', '>= 5.0'
gem 'minitest-power_assert'

gem 'parallel', '~> 1.13.0' if RUBY_VERSION < '2.2.0'
gem 'rubocop', '~> 0.49.1'

# don't try to install redcarpet under jruby
Expand All @@ -23,10 +23,6 @@ group :development do
gem 'github-markup'

# for visual tests
if RUBY_VERSION < '2.2.0'
gem 'sinatra', '~> 1.4.8'
else
gem 'sinatra'
end
gem 'sinatra'
gem 'shotgun'
end
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
# Rouge

[![Build Status](https://secure.travis-ci.org/rouge-ruby/rouge.svg)](https://travis-ci.org/rouge-ruby/rouge)
[![Gem Version](https://badge.fury.io/rb/rouge.svg)](https://rubygems.org/gems/rouge)
[![Build Status](https://secure.travis-ci.org/jneen/rouge.svg)](http://travis-ci.org/jneen/rouge)
[![Gem Version](https://badge.fury.io/rb/rouge.svg)](http://badge.fury.io/rb/rouge)

[rouge]: http://rouge.jneen.net/

[Rouge][] is a pure-ruby syntax highlighter. It can highlight 100 different languages, and output HTML or ANSI 256-color text. Its HTML output is compatible with stylesheets designed for [pygments][].

If you'd like to help out with this project, assign yourself something from the [issues][] page, and send me a pull request (even if it's not done yet!). Bonus points for feature branches.

[issues]: https://github.com/rouge-ruby/rouge/issues "Help Out"
[issues]: https://github.com/jneen/rouge/issues "Help Out"
[pygments]: http://pygments.org/ "Pygments"

## Usage
Expand Down Expand Up @@ -86,7 +86,7 @@ $ rougify style monokai.sublime > syntax.css

### Advantages to pygments.rb
* No need to [spawn Python processes](https://github.com/tmm1/pygments.rb).
* We're faster in [almost every measure](https://github.com/rouge-ruby/rouge/pull/41#issuecomment-223751572)
* We're faster in [almost every measure](https://github.com/jneen/rouge/pull/41#issuecomment-223751572)

### Advantages to CodeRay
* The HTML output from Rouge is fully compatible with stylesheets designed for pygments.
Expand Down Expand Up @@ -126,7 +126,7 @@ Rouge is only for UTF-8 strings. If you'd like to highlight a string with a dif

### Installing Ruby

If you're here to implement a lexer for your awesome language, there's a good chance you don't already have a ruby development environment set up. Follow the [instructions on the wiki](https://github.com/rouge-ruby/rouge/wiki/Setting-up-Ruby) to get up and running. If you have trouble getting set up, let me know - I'm always happy to help.
If you're here to implement a lexer for your awesome language, there's a good chance you don't already have a ruby development environment set up. Follow the [instructions on the wiki](https://github.com/jneen/rouge/wiki/Setting-up-Ruby) to get up and running. If you have trouble getting set up, let me know - I'm always happy to help.

### Run the tests

Expand Down
86 changes: 41 additions & 45 deletions lib/rouge.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,55 +34,51 @@ def highlight(text, lexer, formatter, &b)
end
end

# mimic Kernel#require_relative API
def load_relative(path)
load File.join(__dir__, "#{path}.rb")
end
load_dir = Pathname.new(__FILE__).dirname
load load_dir.join('rouge/version.rb')

def lexer_dir(path = '')
File.join(__dir__, 'rouge', 'lexers', path)
end
load load_dir.join('rouge/util.rb')

load_relative 'rouge/version'
load_relative 'rouge/util'
load_relative 'rouge/text_analyzer'
load_relative 'rouge/token'
load load_dir.join('rouge/text_analyzer.rb')
load load_dir.join('rouge/token.rb')

load_relative 'rouge/lexer'
load_relative 'rouge/regex_lexer'
load_relative 'rouge/template_lexer'
load load_dir.join('rouge/lexer.rb')
load load_dir.join('rouge/regex_lexer.rb')
load load_dir.join('rouge/template_lexer.rb')

Dir.glob(lexer_dir('*rb')).each { |f| Rouge::Lexers.load_lexer(f.sub(lexer_dir, '')) }
lexers_dir = load_dir.join('rouge/lexers')
Dir.glob(lexers_dir.join('*.rb')).each do |f|
Rouge::Lexers.load_lexer(Pathname.new(f).relative_path_from(lexers_dir).to_s)
end

load_relative 'rouge/guesser'
load_relative 'rouge/guessers/util'
load_relative 'rouge/guessers/glob_mapping'
load_relative 'rouge/guessers/modeline'
load_relative 'rouge/guessers/filename'
load_relative 'rouge/guessers/mimetype'
load_relative 'rouge/guessers/source'
load_relative 'rouge/guessers/disambiguation'
load load_dir.join('rouge/guesser.rb')
load load_dir.join('rouge/guessers/util.rb')
load load_dir.join('rouge/guessers/glob_mapping.rb')
load load_dir.join('rouge/guessers/modeline.rb')
load load_dir.join('rouge/guessers/filename.rb')
load load_dir.join('rouge/guessers/mimetype.rb')
load load_dir.join('rouge/guessers/source.rb')
load load_dir.join('rouge/guessers/disambiguation.rb')

load_relative 'rouge/formatter'
load_relative 'rouge/formatters/html'
load_relative 'rouge/formatters/html_table'
load_relative 'rouge/formatters/html_pygments'
load_relative 'rouge/formatters/html_legacy'
load_relative 'rouge/formatters/html_linewise'
load_relative 'rouge/formatters/html_inline'
load_relative 'rouge/formatters/terminal256'
load_relative 'rouge/formatters/null'
load load_dir.join('rouge/formatter.rb')
load load_dir.join('rouge/formatters/html.rb')
load load_dir.join('rouge/formatters/html_table.rb')
load load_dir.join('rouge/formatters/html_pygments.rb')
load load_dir.join('rouge/formatters/html_legacy.rb')
load load_dir.join('rouge/formatters/html_linewise.rb')
load load_dir.join('rouge/formatters/html_inline.rb')
load load_dir.join('rouge/formatters/terminal256.rb')
load load_dir.join('rouge/formatters/null.rb')

load_relative 'rouge/theme'
load_relative 'rouge/themes/thankful_eyes'
load_relative 'rouge/themes/colorful'
load_relative 'rouge/themes/base16'
load_relative 'rouge/themes/github'
load_relative 'rouge/themes/igor_pro'
load_relative 'rouge/themes/monokai'
load_relative 'rouge/themes/molokai'
load_relative 'rouge/themes/monokai_sublime'
load_relative 'rouge/themes/gruvbox'
load_relative 'rouge/themes/tulip'
load_relative 'rouge/themes/pastie'
load_relative 'rouge/themes/bw'
load load_dir.join('rouge/theme.rb')
load load_dir.join('rouge/themes/thankful_eyes.rb')
load load_dir.join('rouge/themes/colorful.rb')
load load_dir.join('rouge/themes/base16.rb')
load load_dir.join('rouge/themes/github.rb')
load load_dir.join('rouge/themes/igor_pro.rb')
load load_dir.join('rouge/themes/monokai.rb')
load load_dir.join('rouge/themes/molokai.rb')
load load_dir.join('rouge/themes/monokai_sublime.rb')
load load_dir.join('rouge/themes/gruvbox.rb')
load load_dir.join('rouge/themes/tulip.rb')
load load_dir.join('rouge/themes/pastie.rb')
8 changes: 5 additions & 3 deletions lib/rouge/lexer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -188,11 +188,11 @@ def enable_debug!
end

def disable_debug!
remove_instance_variable :@debug_enabled
@debug_enabled = false
end

def debug_enabled?
(defined? @debug_enabled) ? true : false
!!@debug_enabled
end

protected
Expand Down Expand Up @@ -454,7 +454,9 @@ module Lexers
def self.load_lexer(relpath)
return if @_loaded_lexers.key?(relpath)
@_loaded_lexers[relpath] = true
load File.join(__dir__, 'lexers', relpath)

root = Pathname.new(__FILE__).dirname.join('lexers')
load root.join(relpath)
end
end
end
35 changes: 29 additions & 6 deletions lib/rouge/lexers/c.rb
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ def self.builtins
rule /\d+[lu]*/i, Num::Integer
rule %r(\*/), Error
rule %r([~!%^&*+=\|?:<>/-]), Operator
rule /[()\[\],.;]/, Punctuation
rule /[()\[\],.]/, Punctuation
rule /\bcase\b/, Keyword, :case
rule /(?:true|false|NULL)\b/, Name::Builtin
rule id do |m|
Expand All @@ -133,24 +133,47 @@ def self.builtins

state :root do
mixin :expr_whitespace

# functions
rule %r(
([\w*\s]+?[\s*]) # return arguments
(#{id}) # function name
(\s*\([^;]*?\)) # signature
(#{ws}?)({|;) # open brace or semicolon
(#{ws})({) # open brace
)mx do |m|
# TODO: do this better.
recurse m[1]
token Name::Function, m[2]
recurse m[3]
recurse m[4]
token Punctuation, m[5]
if m[5] == ?{
push :function
end
push :function
end
rule /\{/, Punctuation, :function

# function declarations
rule %r(
([\w*\s]+?[\s*]) # return arguments
(#{id}) # function name
(\s*\([^;]*?\)) # signature
(#{ws})(;) # semicolon
)mx do |m|
# TODO: do this better.
recurse m[1]
token Name::Function, m[2]
recurse m[3]
recurse m[4]
token Punctuation, m[5]
push :statement
end

rule(//) { push :statement }
end

state :statement do
rule /;/, Punctuation, :pop!
mixin :expr_whitespace
mixin :statements
rule /[{}]/, Punctuation
end

state :function do
Expand Down
20 changes: 6 additions & 14 deletions lib/rouge/lexers/coffeescript.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,9 @@ def self.detect?(text)

def self.keywords
@keywords ||= Set.new %w(
for by while until loop break continue return
switch when then if else do yield throw try catch finally await
new delete typeof instanceof super extends this class
import export debugger
)
end

def self.reserved
@reserved ||= Set.new %w(
case function var void with const let enum
native implements interface package private protected public static
for in of while break return continue switch when then if else
throw try catch finally new delete typeof instanceof super
extends this class by
)
end

Expand All @@ -51,7 +43,7 @@ def self.builtins

state :comments_and_whitespace do
rule /\s+/m, Text
rule /###[^#].*?###/m, Comment::Multiline
rule /###\s*\n.*?###/m, Comment::Multiline
rule /#.*$/, Comment::Single
end

Expand Down Expand Up @@ -85,8 +77,8 @@ def self.builtins
rule(%r(^(?=\s|/|<!--))) { push :slash_starts_regex }
mixin :comments_and_whitespace
rule %r(
[+][+]|--|~|&&|\band\b|\bor\b|\bis\b|\bisnt\b|\bnot\b|\bin\b|\bof\b|
[?]|:|=|[|][|]|\\(?=\n)|(<<|>>>?|==?|!=?|[-<>+*`%&|^/])=?
[+][+]|--|~|&&|\band\b|\bor\b|\bis\b|\bisnt\b|\bnot\b|[?]|:|=|
[|][|]|\\(?=\n)|(<<|>>>?|==?|!=?|[-<>+*`%&|^/])=?
)x, Operator, :slash_starts_regex

rule /[-=]>/, Name::Function
Expand Down
2 changes: 1 addition & 1 deletion lib/rouge/lexers/common_lisp.rb
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@ class complex concatenated-stream cons echo-stream file-stream

rule /\(/, Punctuation, :root
rule /\)/, Punctuation do
if stack.size == 1
if stack.empty?
token Error
else
token Punctuation
Expand Down
2 changes: 1 addition & 1 deletion lib/rouge/lexers/coq.rb
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ def self.classify(x)
end

state :string do
rule /(?:\\")+|[^"]/, Str::Double
rule /[^\\"]+/, Str::Double
mixin :escape_sequence
rule /\\\n/, Str::Double
rule /"/, Str::Double, :pop!
Expand Down
1 change: 1 addition & 0 deletions lib/rouge/lexers/csharp.rb
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ class CSharp < RegexLexer
state :root do
mixin :whitespace

rule /^\s*\[.*?\]/, Name::Attribute
rule /[$]\s*"/, Str, :splice_string
rule /[$]@\s*"/, Str, :splice_literal

Expand Down
12 changes: 4 additions & 8 deletions lib/rouge/lexers/diff.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,14 @@ def self.detect?(text)

state :root do
rule(/^ .*$\n?/, Text)
rule(/^---$\n?/, Punctuation)
rule(/^[+>]+.*$\n?/, Generic::Inserted)
rule(/^---$\n?/, Text)
rule(/^\+.*$\n?/, Generic::Inserted)
rule(/^[-<]+.*$\n?/, Generic::Deleted)
rule(/^-+.*$\n?/, Generic::Deleted)
rule(/^!.*$\n?/, Generic::Strong)
rule(/^@.*$\n?/, Generic::Subheading)
rule(/^([Ii]ndex|diff).*$\n?/, Generic::Heading)
rule(/^(@@[^@]*@@)([^\n]*\n)/) do
groups Punctuation, Text
end
rule(/^\w.*$\n?/, Punctuation)
rule(/^=.*$\n?/, Generic::Heading)
rule(/\s.*$\n?/, Text)
rule(/.*$\n?/, Text)
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion lib/rouge/lexers/docker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ class Docker < RegexLexer
desc "Dockerfile syntax"
tag 'docker'
aliases 'dockerfile'
filenames 'Dockerfile', '*.Dockerfile', '*.docker', 'Dockerfile_*'
filenames 'Dockerfile', '*.docker'
mimetypes 'text/x-dockerfile-config'

KEYWORDS = %w(
Expand Down
2 changes: 1 addition & 1 deletion lib/rouge/lexers/go.rb
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ class Go < RegexLexer
rule(OPERATOR, Operator)
rule(SEPARATOR, Punctuation)
rule(IDENTIFIER, Name)
rule(WHITE_SPACE, Text)
rule(WHITE_SPACE, Other)
end

state :root do
Expand Down
4 changes: 0 additions & 4 deletions lib/rouge/lexers/java.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@ class Java < RegexLexer
types = %w(boolean byte char double float int long short var void)

id = /[a-zA-Z_][a-zA-Z0-9_]*/
const_name = /[A-Z][A-Z0-9_]*\b/
class_name = /[A-Z][a-zA-Z0-9]*\b/

state :root do
rule /[^\S\n]+/, Text
Expand Down Expand Up @@ -61,8 +59,6 @@ class Java < RegexLexer
end

rule /#{id}:/, Name::Label
rule const_name, Name::Constant
rule class_name, Name::Class
rule /\$?#{id}/, Name
rule /[~^*!%&\[\](){}<>\|+=:;,.\/?-]/, Operator

Expand Down
Loading

0 comments on commit 9e79279

Please sign in to comment.