html_scss_class_checker 0.1.0 → 0.2.0
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 +4 -4
- data/.github/workflows/changelog-update.yml +62 -0
- data/.github/workflows/gem-push.yml +44 -0
- data/.gitignore +1 -0
- data/.rspec +1 -1
- data/CONTRIBUTING.md +51 -51
- data/Gemfile +17 -3
- data/Gemfile.lock +39 -1
- data/LICENSE +21 -21
- data/README.md +76 -74
- data/Rakefile +44 -12
- data/bin/console +7 -7
- data/bin/setup +22 -22
- data/docs/api.md +97 -0
- data/docs/development.md +87 -87
- data/docs/testing.md +73 -73
- data/docs/usage.md +89 -89
- data/html_scss_class_checker.gemspec +31 -27
- data/lib/html_scss_class_checker/class_checker.rb +33 -33
- data/lib/html_scss_class_checker/class_extractor.rb +14 -14
- data/lib/html_scss_class_checker/file_processor.rb +23 -23
- data/lib/html_scss_class_checker.rb +18 -18
- data/scripts/CreateGemStructure.ps1 +38 -38
- data/scripts/classes +1 -1
- metadata +73 -15
@@ -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.
|
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:
|
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: '
|
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: '
|
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: '
|
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: '
|
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
|
-
-
|
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:
|
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: []
|