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.
@@ -0,0 +1,3 @@
1
+ module DRev
2
+ VERSION = '0.0.1'.freeze
3
+ end
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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: []