html_scss_class_checker 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,33 +1,33 @@
1
- require 'json'
2
- require 'set'
3
-
4
- module HtmlScssClassChecker
5
- class ClassChecker
6
- attr_reader :unmatched_classes, :file_class_mapping
7
-
8
- def initialize(config)
9
- @known_classes = Set.new(config['known_classes'])
10
- @html_directories = config['html_directories']
11
- @scss_directories = config['scss_directories']
12
- @unmatched_classes = Set.new
13
- @file_class_mapping = {}
14
- end
15
-
16
- def check
17
- process_directories(@html_directories, 'html')
18
- process_directories(@scss_directories, 'scss')
19
- end
20
-
21
- private
22
-
23
- def process_directories(directories, file_type)
24
- directories.each do |directory|
25
- Dir.glob("#{directory}/**/*.#{file_type}").each do |file|
26
- classes = FileProcessor.new(file, file_type).list_classes
27
- @unmatched_classes.merge(classes - @known_classes)
28
- @file_class_mapping[file] = classes
29
- end
30
- end
31
- end
32
- end
33
- end
1
+ require 'json'
2
+ require 'set'
3
+
4
+ module HtmlScssClassChecker
5
+ class ClassChecker
6
+ attr_reader :unmatched_classes, :file_class_mapping
7
+
8
+ def initialize(config)
9
+ @known_classes = Set.new(config['known_classes'])
10
+ @html_directories = config['html_directories']
11
+ @scss_directories = config['scss_directories']
12
+ @unmatched_classes = Set.new
13
+ @file_class_mapping = {}
14
+ end
15
+
16
+ def check
17
+ process_directories(@html_directories, 'html')
18
+ process_directories(@scss_directories, 'scss')
19
+ end
20
+
21
+ private
22
+
23
+ def process_directories(directories, file_type)
24
+ directories.each do |directory|
25
+ Dir.glob("#{directory}/**/*.#{file_type}").each do |file|
26
+ classes = FileProcessor.new(file, file_type).list_classes
27
+ @unmatched_classes.merge(classes - @known_classes)
28
+ @file_class_mapping[file] = classes
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,14 +1,14 @@
1
- require 'json'
2
- require 'set'
3
-
4
- module HtmlScssClassChecker
5
- class ClassExtractor
6
- def self.extract_from_html(content)
7
- content.scan(/class="([^"]+)"/).flatten.map { |cls| cls.split }.flatten.to_set
8
- end
9
-
10
- def self.extract_from_scss(content)
11
- content.scan(/\.[\w-]+/).flatten.map { |cls| cls.delete_prefix('.') }.to_set
12
- end
13
- end
14
- end
1
+ require 'json'
2
+ require 'set'
3
+
4
+ module HtmlScssClassChecker
5
+ class ClassExtractor
6
+ def self.extract_from_html(content)
7
+ content.scan(/class="([^"]+)"/).flatten.map { |cls| cls.split }.flatten.to_set
8
+ end
9
+
10
+ def self.extract_from_scss(content)
11
+ content.scan(/\.[\w-]+/).flatten.map { |cls| cls.delete_prefix('.') }.to_set
12
+ end
13
+ end
14
+ end
@@ -1,23 +1,23 @@
1
- require 'json'
2
- require 'set'
3
-
4
- module HtmlScssClassChecker
5
- class FileProcessor
6
- def initialize(file_path, file_type)
7
- @file_path = file_path
8
- @file_type = file_type
9
- end
10
-
11
- def list_classes
12
- content = File.read(@file_path)
13
- case @file_type
14
- when 'html'
15
- ClassExtractor.extract_from_html(content)
16
- when 'scss'
17
- ClassExtractor.extract_from_scss(content)
18
- else
19
- Set.new
20
- end
21
- end
22
- end
23
- end
1
+ require 'json'
2
+ require 'set'
3
+
4
+ module HtmlScssClassChecker
5
+ class FileProcessor
6
+ def initialize(file_path, file_type)
7
+ @file_path = file_path
8
+ @file_type = file_type
9
+ end
10
+
11
+ def list_classes
12
+ content = File.read(@file_path)
13
+ case @file_type
14
+ when 'html'
15
+ ClassExtractor.extract_from_html(content)
16
+ when 'scss'
17
+ ClassExtractor.extract_from_scss(content)
18
+ else
19
+ Set.new
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,18 +1,18 @@
1
- require 'html_scss_class_checker/class_extractor'
2
- require 'html_scss_class_checker/file_processor'
3
- require 'html_scss_class_checker/class_checker'
4
-
5
- # Read configuration from JSON file
6
- config_file = 'config.json' # Update this path as needed
7
- config = JSON.parse(File.read(config_file))
8
-
9
- checker = HtmlScssClassChecker::ClassChecker.new(config)
10
- checker.check
11
-
12
- puts "Unmatched Classes:"
13
- puts checker.unmatched_classes.to_a
14
-
15
- puts "\nClasses in each file:"
16
- checker.file_class_mapping.each do |file, classes|
17
- puts "#{file}: #{classes.to_a}"
18
- end
1
+ require 'html_scss_class_checker/class_extractor'
2
+ require 'html_scss_class_checker/file_processor'
3
+ require 'html_scss_class_checker/class_checker'
4
+
5
+ # Read configuration from JSON file
6
+ config_file = 'config.json' # Update this path as needed
7
+ config = JSON.parse(File.read(config_file))
8
+
9
+ checker = HtmlScssClassChecker::ClassChecker.new(config)
10
+ checker.check
11
+
12
+ puts "Unmatched Classes:"
13
+ puts checker.unmatched_classes.to_a
14
+
15
+ puts "\nClasses in each file:"
16
+ checker.file_class_mapping.each do |file, classes|
17
+ puts "#{file}: #{classes.to_a}"
18
+ end
@@ -1,38 +1,38 @@
1
- # Define directories and files to create
2
- $gemName = "html_scss_class_checker"
3
- $directories = @(
4
- "$gemName/bin",
5
- "$gemName/lib/$gemName",
6
- "$gemName/spec"
7
- )
8
-
9
- $files = @(
10
- "$gemName/bin/console",
11
- "$gemName/bin/setup",
12
- "$gemName/lib/$gemName/class_extractor.rb",
13
- "$gemName/lib/$gemName/file_processor.rb",
14
- "$gemName/lib/$gemName/class_checker.rb",
15
- "$gemName/lib/$gemName.rb",
16
- "$gemName/spec/class_extractor_spec.rb",
17
- "$gemName/spec/file_processor_spec.rb",
18
- "$gemName/spec/class_checker_spec.rb",
19
- "$gemName/spec/spec_helper.rb",
20
- "$gemName/$gemName.gemspec",
21
- "$gemName/Gemfile",
22
- "$gemName/Rakefile",
23
- "$gemName/LICENSE.txt",
24
- "$gemName/README.md",
25
- "$gemName/.gitignore"
26
- )
27
-
28
- # Create directories
29
- foreach ($dir in $directories) {
30
- New-Item -Path $dir -ItemType Directory -Force
31
- }
32
-
33
- # Create files
34
- foreach ($file in $files) {
35
- New-Item -Path $file -ItemType File -Force
36
- }
37
-
38
- Write-Host "Gem structure for '$gemName' created successfully."
1
+ # Define directories and files to create
2
+ $gemName = "html_scss_class_checker"
3
+ $directories = @(
4
+ "$gemName/bin",
5
+ "$gemName/lib/$gemName",
6
+ "$gemName/spec"
7
+ )
8
+
9
+ $files = @(
10
+ "$gemName/bin/console",
11
+ "$gemName/bin/setup",
12
+ "$gemName/lib/$gemName/class_extractor.rb",
13
+ "$gemName/lib/$gemName/file_processor.rb",
14
+ "$gemName/lib/$gemName/class_checker.rb",
15
+ "$gemName/lib/$gemName.rb",
16
+ "$gemName/spec/class_extractor_spec.rb",
17
+ "$gemName/spec/file_processor_spec.rb",
18
+ "$gemName/spec/class_checker_spec.rb",
19
+ "$gemName/spec/spec_helper.rb",
20
+ "$gemName/$gemName.gemspec",
21
+ "$gemName/Gemfile",
22
+ "$gemName/Rakefile",
23
+ "$gemName/LICENSE.txt",
24
+ "$gemName/README.md",
25
+ "$gemName/.gitignore"
26
+ )
27
+
28
+ # Create directories
29
+ foreach ($dir in $directories) {
30
+ New-Item -Path $dir -ItemType Directory -Force
31
+ }
32
+
33
+ # Create files
34
+ foreach ($file in $files) {
35
+ New-Item -Path $file -ItemType File -Force
36
+ }
37
+
38
+ Write-Host "Gem structure for '$gemName' created successfully."
data/scripts/classes CHANGED
@@ -1 +1 @@
1
- grep -ohr 'class="[^"]*"' ./ | sort | uniq
1
+ grep -ohr 'class="[^"]*"' ./ | sort | uniq
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: html_scss_class_checker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thaddeus Thomas
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-21 00:00:00.000000000 Z
11
+ date: 2024-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -28,30 +28,86 @@ dependencies:
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '2.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '2.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
46
95
  - !ruby/object:Gem::Version
47
- version: '13.0'
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: yard
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
48
104
  type: :development
49
105
  prerelease: false
50
106
  version_requirements: !ruby/object:Gem::Requirement
51
107
  requirements:
52
- - - "~>"
108
+ - - ">="
53
109
  - !ruby/object:Gem::Version
54
- version: '13.0'
110
+ version: '0'
55
111
  description: HtmlScssClassChecker is designed to streamline the process of frontend
56
112
  development by scanning HTML and SCSS files and identifying classes that are either
57
113
  undefined or unused. This gem aims to facilitate cleaner, more maintainable, and
@@ -60,13 +116,15 @@ description: HtmlScssClassChecker is designed to streamline the process of front
60
116
  looking to optimize their front-end code and ensure consistency across their stylesheets
61
117
  and markup.
62
118
  email:
63
- - support@vcwtech.com
119
+ - thaddeus@vcwtech.com
64
120
  executables:
65
121
  - console
66
122
  - setup
67
123
  extensions: []
68
124
  extra_rdoc_files: []
69
125
  files:
126
+ - ".github/workflows/changelog-update.yml"
127
+ - ".github/workflows/gem-push.yml"
70
128
  - ".gitignore"
71
129
  - ".rspec"
72
130
  - ".ruby-version"
@@ -90,11 +148,11 @@ files:
90
148
  - lib/html_scss_class_checker/file_processor.rb
91
149
  - scripts/CreateGemStructure.ps1
92
150
  - scripts/classes
93
- homepage: http://example.com/gems/html_scss_class_checker
151
+ homepage: https://github.com/Visionary-Code-Works/HtmlScssClassChecker
94
152
  licenses:
95
153
  - MIT
96
154
  metadata: {}
97
- post_install_message:
155
+ post_install_message:
98
156
  rdoc_options: []
99
157
  require_paths:
100
158
  - lib
@@ -110,7 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
168
  version: '0'
111
169
  requirements: []
112
170
  rubygems_version: 3.4.10
113
- signing_key:
171
+ signing_key:
114
172
  specification_version: 4
115
173
  summary: A Ruby gem for identifying unused or unmatched HTML and SCSS classes.
116
174
  test_files: []