DRev 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.bundle/config +2 -0
- data/.rspec +1 -0
- data/.rubocop.yml +46 -0
- data/.stickler.yml +17 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/DRev.gemspec +36 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +30 -0
- data/LICENSE.txt +21 -0
- data/README.md +198 -0
- data/Rakefile +6 -0
- data/bin/DRev +24 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/bin/test/1.css +350 -0
- data/bin/test/style.css +582 -0
- data/lib/DRev/version.rb +3 -0
- data/lib/buffer.rb +21 -0
- data/lib/coloring.rb +38 -0
- data/lib/error.rb +79 -0
- data/lib/init_msg.rb +39 -0
- data/lib/log.rb +46 -0
- data/lib/scanner.rb +109 -0
- metadata +109 -0
data/lib/DRev/version.rb
ADDED
data/lib/buffer.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
module DRev
|
2
|
+
# Start Reading the File and check some values
|
3
|
+
class Buffer
|
4
|
+
attr_accessor :lines
|
5
|
+
attr_reader :file, :line_num
|
6
|
+
|
7
|
+
def initialize(file)
|
8
|
+
@lines = []
|
9
|
+
@file = file
|
10
|
+
@line_num = 0
|
11
|
+
end
|
12
|
+
|
13
|
+
def read
|
14
|
+
File.open(@file).each do |line|
|
15
|
+
@lines << line
|
16
|
+
@line_num += line.count("\n")
|
17
|
+
end
|
18
|
+
@lines
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/coloring.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# Adding Console Colors
|
2
|
+
class String
|
3
|
+
def black
|
4
|
+
"\e[30m#{self}\e[0m"
|
5
|
+
end
|
6
|
+
|
7
|
+
def red
|
8
|
+
"\e[31m#{self}\e[0m"
|
9
|
+
end
|
10
|
+
|
11
|
+
def green
|
12
|
+
"\e[32m#{self}\e[0m"
|
13
|
+
end
|
14
|
+
|
15
|
+
def blue
|
16
|
+
"\e[34m#{self}\e[0m"
|
17
|
+
end
|
18
|
+
|
19
|
+
def magenta
|
20
|
+
"\e[35m#{self}\e[0m"
|
21
|
+
end
|
22
|
+
|
23
|
+
def cyan
|
24
|
+
"\e[36m#{self}\e[0m"
|
25
|
+
end
|
26
|
+
|
27
|
+
def gray
|
28
|
+
"\e[37m#{self}\e[0m"
|
29
|
+
end
|
30
|
+
|
31
|
+
def yellow
|
32
|
+
"\e[33m#{self}\e[0m"
|
33
|
+
end
|
34
|
+
|
35
|
+
def bold
|
36
|
+
"\e[1m#{self}\e[22m"
|
37
|
+
end
|
38
|
+
end
|
data/lib/error.rb
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
# rubocop: disable Naming/MethodName
|
2
|
+
|
3
|
+
module DRev
|
4
|
+
# Error List of Class
|
5
|
+
class Error
|
6
|
+
attr_reader :msg
|
7
|
+
def initialize
|
8
|
+
@msg = []
|
9
|
+
log = %w[lvl code type type_msg error exit line path]
|
10
|
+
@msg << log
|
11
|
+
end
|
12
|
+
|
13
|
+
def E_101(path, line)
|
14
|
+
log = []
|
15
|
+
log << 1
|
16
|
+
log << 101
|
17
|
+
log << 1
|
18
|
+
log << 'Missing Bracked'
|
19
|
+
log << 'Expected Closing Braked'
|
20
|
+
log << 'Stoped Looking for Indentation in this File'
|
21
|
+
log << line
|
22
|
+
log << path
|
23
|
+
log
|
24
|
+
end
|
25
|
+
|
26
|
+
def W_201(path, line, exp, act)
|
27
|
+
log = []
|
28
|
+
log << 2
|
29
|
+
log << 201
|
30
|
+
log << 1
|
31
|
+
log << 'Indentation'
|
32
|
+
log << "Expected indent of #{exp} spaces not #{act} spaces"
|
33
|
+
log << ''
|
34
|
+
log << line
|
35
|
+
log << path
|
36
|
+
log
|
37
|
+
end
|
38
|
+
|
39
|
+
def W_202(path, line, _exp = nil, _act = nil)
|
40
|
+
log = []
|
41
|
+
log << 2
|
42
|
+
log << 202
|
43
|
+
log << 2
|
44
|
+
log << 'Missing Line'
|
45
|
+
log << 'Expected Empty Line Before Opening Brakect'
|
46
|
+
log << ''
|
47
|
+
log << line
|
48
|
+
log << path
|
49
|
+
log
|
50
|
+
end
|
51
|
+
|
52
|
+
def W_203(path, line, _exp = nil, _act = nil)
|
53
|
+
log = []
|
54
|
+
log << 2
|
55
|
+
log << 203
|
56
|
+
log << 3
|
57
|
+
log << 'End of File'
|
58
|
+
log << 'Expected Only One Empty Line At the End of the File'
|
59
|
+
log << ''
|
60
|
+
log << line
|
61
|
+
log << path
|
62
|
+
log
|
63
|
+
end
|
64
|
+
|
65
|
+
def W_204(path, line, _exp = nil, _act = nil)
|
66
|
+
log = []
|
67
|
+
log << 2
|
68
|
+
log << 204
|
69
|
+
log << 3
|
70
|
+
log << 'End of File'
|
71
|
+
log << 'Missing One Empty Line At the End of the File'
|
72
|
+
log << ''
|
73
|
+
log << line
|
74
|
+
log << path
|
75
|
+
log
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
# rubocop: enable Naming/MethodName
|
data/lib/init_msg.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
module DRev
|
2
|
+
# Start Const Msg
|
3
|
+
class InitMsg
|
4
|
+
def init_start(counter)
|
5
|
+
drev_str = "\n Starting ".green
|
6
|
+
drev_str += 'DRev'.magenta.bold
|
7
|
+
drev_str += ' Inspecting '.green
|
8
|
+
drev_str += "#{counter} ".yellow.bold
|
9
|
+
drev_str += 'Files'.green if counter < 1
|
10
|
+
drev_str += 'File'.green if counter >= 1
|
11
|
+
drev_str += "\n"
|
12
|
+
drev_str
|
13
|
+
end
|
14
|
+
|
15
|
+
def init_end(counter)
|
16
|
+
drev_str = "\n Finished ".green
|
17
|
+
drev_str += 'DRev'.magenta.bold
|
18
|
+
drev_str += ' Reviewing '.green
|
19
|
+
drev_str += "#{counter} ".yellow.bold
|
20
|
+
drev_str += 'Files'.green if counter < 1
|
21
|
+
drev_str += 'File'.green if counter >= 1
|
22
|
+
drev_str += "\n\n"
|
23
|
+
drev_str
|
24
|
+
end
|
25
|
+
|
26
|
+
def file_start(path, counter)
|
27
|
+
drev_str = "\n Start Reviewing File N° ".red
|
28
|
+
drev_str += "#{counter}: ".yellow
|
29
|
+
drev_str += path.to_s.magenta
|
30
|
+
drev_str += "\n"
|
31
|
+
drev_str
|
32
|
+
end
|
33
|
+
|
34
|
+
def file_end
|
35
|
+
drev_str = ' Finished Reviewing File'.red
|
36
|
+
drev_str
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/log.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require_relative '../lib/coloring.rb'
|
2
|
+
require_relative '../lib/error.rb'
|
3
|
+
|
4
|
+
module DRev
|
5
|
+
# Log Every Data Displayed
|
6
|
+
class Log
|
7
|
+
attr_reader :error_list, :logger
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@err = Error.new
|
11
|
+
@logger = []
|
12
|
+
@error_list = "\n"
|
13
|
+
end
|
14
|
+
|
15
|
+
def log(exp)
|
16
|
+
e = exp.split
|
17
|
+
@logger << @err.send(e[0], e[1], e[2]) if e.length == 3
|
18
|
+
@logger << @err.send(e[0], e[1], e[2], e[3], e[4]) if e.length == 5
|
19
|
+
end
|
20
|
+
|
21
|
+
def filter
|
22
|
+
@logger.each do |log|
|
23
|
+
next unless log[0] == 1 && log[2] == 1
|
24
|
+
|
25
|
+
@logger.each do |item|
|
26
|
+
next unless item[0] == 2 && item[2] == 1
|
27
|
+
|
28
|
+
@logger = @logger.reject { |search| search == item }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def err_list
|
34
|
+
@logger.each do |log|
|
35
|
+
@error_list += ' DRev '.magenta.bold
|
36
|
+
@error_list += "#{log[3]} "
|
37
|
+
@error_list += "Error:[#{log[1]}]\n".red.bold if log[0] == 1
|
38
|
+
@error_list += "Warnning:[#{log[1]}]\n".yellow.bold if log[0] == 2
|
39
|
+
@error_list += " #{log[7]}/Line #{log[6]}: ".cyan
|
40
|
+
@error_list += "#{log[4]}\n"
|
41
|
+
@error_list += "\n".red if log[5].split.empty?
|
42
|
+
@error_list += "#{log[5]}\n\n".red unless log[5].split.empty?
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/scanner.rb
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
require_relative 'buffer.rb'
|
2
|
+
require_relative 'log.rb'
|
3
|
+
|
4
|
+
module DRev
|
5
|
+
# Review Files For Errors
|
6
|
+
class Scanner
|
7
|
+
attr_reader :lines, :file, :log, :cnt, :idnt
|
8
|
+
def initialize(path)
|
9
|
+
@log = Log.new
|
10
|
+
@file = Buffer.new(path)
|
11
|
+
@path = path
|
12
|
+
@file.read
|
13
|
+
@lines = @file.lines
|
14
|
+
@line = 1
|
15
|
+
end
|
16
|
+
|
17
|
+
def reset
|
18
|
+
@cnt = 0
|
19
|
+
@idnt = 0
|
20
|
+
@line = 1
|
21
|
+
end
|
22
|
+
|
23
|
+
def indentation_fun(line)
|
24
|
+
if @idnt != @cnt && line.split.empty? == false
|
25
|
+
@log.log("W_201 #{@path} #{@line} #{@cnt} #{@idnt}")
|
26
|
+
elsif @idnt != @cnt && line.split.empty? == true
|
27
|
+
@log.log("W_204 #{@path} #{@line} #{@cnt} #{@idnt}")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def indentation
|
32
|
+
reset
|
33
|
+
@lines.each do |line|
|
34
|
+
@idnt = line[/\A */].size
|
35
|
+
@cnt -= 2 if line.match(/}/)
|
36
|
+
break if indent_error_opening(@cnt)
|
37
|
+
|
38
|
+
indentation_fun(line)
|
39
|
+
@cnt += 2 if line.match(/{/)
|
40
|
+
@line += 1
|
41
|
+
end
|
42
|
+
indent_error_closing(@idnt, @cnt)
|
43
|
+
end
|
44
|
+
|
45
|
+
def indent_error_opening(counter)
|
46
|
+
bool = false
|
47
|
+
if counter.negative?
|
48
|
+
@log.log("E_101 #{@path} #{@line}")
|
49
|
+
bool = true
|
50
|
+
end
|
51
|
+
bool
|
52
|
+
end
|
53
|
+
|
54
|
+
def indent_error_closing(indent, counter)
|
55
|
+
bool = false
|
56
|
+
if indent < counter
|
57
|
+
# @log.error('Missing Bracked', 101, 'EoF', temp, 'Indentation')
|
58
|
+
|
59
|
+
@log.log("E_101 #{@path} 'EoF'")
|
60
|
+
bool = true
|
61
|
+
end
|
62
|
+
bool
|
63
|
+
end
|
64
|
+
|
65
|
+
def line_after_block
|
66
|
+
@lines.each_with_index do |line, index|
|
67
|
+
return 1 if index > @lines.length - 2
|
68
|
+
|
69
|
+
next unless line.match(/}/)
|
70
|
+
|
71
|
+
next if @lines[index + 1].strip.empty?
|
72
|
+
|
73
|
+
@log.log("W_202 #{@path} #{index + 1} \t \t")
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def end_ln
|
78
|
+
temp = @lines[@file.line_num - 1]
|
79
|
+
temp2 = @lines[@file.line_num - 2]
|
80
|
+
end_ln_b(temp, temp2)
|
81
|
+
end_ln_a(temp)
|
82
|
+
end
|
83
|
+
|
84
|
+
def end_ln_b(temp, temp2)
|
85
|
+
return unless temp.nil? || temp.strip.empty?
|
86
|
+
|
87
|
+
return unless temp2.nil? || temp2.strip.empty?
|
88
|
+
|
89
|
+
@log.log("W_203 #{@path} #{@lines.length + 1} \t \t")
|
90
|
+
end
|
91
|
+
|
92
|
+
def end_ln_a(temp)
|
93
|
+
return if temp.nil? || temp.strip.empty?
|
94
|
+
|
95
|
+
return unless @lines[@file.line_num - 1].match(/}/)
|
96
|
+
|
97
|
+
@log.log("W_204 #{@path} #{@lines.length} \t \t")
|
98
|
+
end
|
99
|
+
|
100
|
+
def scn
|
101
|
+
indentation
|
102
|
+
line_after_block
|
103
|
+
end_ln
|
104
|
+
@log.filter
|
105
|
+
@log.err_list
|
106
|
+
@log.error_list
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
metadata
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: DRev
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Dandush03
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-03-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.17'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.17'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: main
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: This Gem Review CSS Errors (For Now!)
|
56
|
+
email:
|
57
|
+
- d.laloush@outlook.com
|
58
|
+
executables:
|
59
|
+
- DRev
|
60
|
+
extensions: []
|
61
|
+
extra_rdoc_files: []
|
62
|
+
files:
|
63
|
+
- ".bundle/config"
|
64
|
+
- ".rspec"
|
65
|
+
- ".rubocop.yml"
|
66
|
+
- ".stickler.yml"
|
67
|
+
- CODE_OF_CONDUCT.md
|
68
|
+
- DRev.gemspec
|
69
|
+
- Gemfile
|
70
|
+
- Gemfile.lock
|
71
|
+
- LICENSE.txt
|
72
|
+
- README.md
|
73
|
+
- Rakefile
|
74
|
+
- bin/DRev
|
75
|
+
- bin/console
|
76
|
+
- bin/setup
|
77
|
+
- bin/test/1.css
|
78
|
+
- bin/test/style.css
|
79
|
+
- lib/DRev/version.rb
|
80
|
+
- lib/buffer.rb
|
81
|
+
- lib/coloring.rb
|
82
|
+
- lib/error.rb
|
83
|
+
- lib/init_msg.rb
|
84
|
+
- lib/log.rb
|
85
|
+
- lib/scanner.rb
|
86
|
+
homepage: https://github.com/Dandush03/capstone-build-linter
|
87
|
+
licenses:
|
88
|
+
- MIT
|
89
|
+
metadata: {}
|
90
|
+
post_install_message:
|
91
|
+
rdoc_options: []
|
92
|
+
require_paths:
|
93
|
+
- lib
|
94
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
requirements: []
|
105
|
+
rubygems_version: 3.0.3
|
106
|
+
signing_key:
|
107
|
+
specification_version: 4
|
108
|
+
summary: Daniel Reviewer
|
109
|
+
test_files: []
|