Git Komut Rehberi & Terminal Asistanı
Sıfırdan Yeni Bir Depo Başlatın:
Mevcut Bir Git Deposu veya Klasörü Gönderin:
Hataları Geri Alma, İptal & Temizlik:
Son commit'i geri al (yapılan değişiklikleri korur):
git reset --soft HEAD~1
Yapılan yerel değişiklikleri iptal et (çalışma ağacını temizler):
git restore .
Takip edilmeyen gereksiz dosyaları sil:
git clean -fd
Değişiklikleri geçici sakla ve geri getir (stash):
git stash git stash pop
Dal (Branch) ve Sürüm Etiketleri:
Yeni dal aç ve geçiş yap:
git checkout -b yeni-ozellik git push -u origin yeni-ozellik
Sürüm etiketi (tag) oluştur ve gönder:
git tag -a v1.0.0 -m "Sürüm 1.0.0" git push origin --tags
Migrate to modular strict rules v2.2.0
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace YakNet\AccessibilityConsole\Core;
|
||||
|
||||
abstract class AbstractRule
|
||||
{
|
||||
/**
|
||||
* @return Violation[]
|
||||
*/
|
||||
abstract public function check(\DOMDocument $doc): array;
|
||||
|
||||
/**
|
||||
* Get the WCAG standard ID (e.g., WCAG 2.1 1.1.1)
|
||||
*/
|
||||
abstract public function getStandardId(): string;
|
||||
|
||||
/**
|
||||
* Get the severity level (Critical, Major, Minor)
|
||||
*/
|
||||
abstract public function getSeverity(): string;
|
||||
|
||||
protected function createViolation(string $message, \DOMElement $element): Violation
|
||||
{
|
||||
return new Violation(
|
||||
message: $message,
|
||||
htmlSnippet: $element->ownerDocument->saveHTML($element),
|
||||
severity: $this->getSeverity(),
|
||||
standard: $this->getStandardId()
|
||||
);
|
||||
}
|
||||
}
|
||||
+10
-7
@@ -2,23 +2,26 @@
|
||||
|
||||
namespace YakNet\AccessibilityConsole\Core;
|
||||
|
||||
use YakNet\AccessibilityConsole\Rules\RuleInterface;
|
||||
|
||||
class RuleEngine
|
||||
{
|
||||
/** @var RuleInterface[] */
|
||||
/** @var AbstractRule[] */
|
||||
private array $rules = [];
|
||||
|
||||
public function addRule(RuleInterface $rule): void
|
||||
public function addRule(AbstractRule $rule): void
|
||||
{
|
||||
$this->rules[] = $rule;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return RuleInterface[]
|
||||
* @return Violation[]
|
||||
*/
|
||||
public function getRules(): array
|
||||
public function run(\DOMDocument $doc): array
|
||||
{
|
||||
return $this->rules;
|
||||
$allViolations = [];
|
||||
foreach ($this->rules as $rule) {
|
||||
$violations = $rule->check($doc);
|
||||
$allViolations = array_merge($allViolations, $violations);
|
||||
}
|
||||
return $allViolations;
|
||||
}
|
||||
}
|
||||
+12
-43
@@ -2,62 +2,31 @@
|
||||
|
||||
namespace YakNet\AccessibilityConsole\Core;
|
||||
|
||||
use DOMDocument;
|
||||
use YakNet\AccessibilityConsole\Rules\RuleInterface;
|
||||
|
||||
class Scanner
|
||||
{
|
||||
private array $rules = [];
|
||||
|
||||
public function __construct(
|
||||
private readonly ?RuleEngine $engine = null
|
||||
) {
|
||||
if ($this->engine) {
|
||||
$this->rules = $this->engine->getRules();
|
||||
public function __construct(private ?RuleEngine $engine = null)
|
||||
{
|
||||
if ($this->engine === null) {
|
||||
$this->engine = new RuleEngine();
|
||||
}
|
||||
}
|
||||
|
||||
public function addRule(RuleInterface $rule): void
|
||||
{
|
||||
$this->rules[] = $rule;
|
||||
}
|
||||
|
||||
/**
|
||||
* Scan HTML content for accessibility violations.
|
||||
*
|
||||
* @param string $html
|
||||
* @return Violation[]
|
||||
*/
|
||||
public function scan(string $html): array
|
||||
{
|
||||
if (trim($html) === '') {
|
||||
if (empty(trim($html))) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$dom = new DOMDocument();
|
||||
$previousState = libxml_use_internal_errors(true);
|
||||
$loaded = $dom->loadHTML('<?xml encoding="utf-8" ?>' . $html, LIBXML_NOERROR | LIBXML_NOWARNING);
|
||||
libxml_clear_errors();
|
||||
libxml_use_internal_errors($previousState);
|
||||
$doc = new \DOMDocument();
|
||||
// Suppress warnings for malformed HTML
|
||||
@$doc->loadHTML('<?xml encoding="utf-8" ?>' . $html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
|
||||
|
||||
if (!$loaded) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$violations = [];
|
||||
$elements = $dom->getElementsByTagName('*');
|
||||
|
||||
foreach ($elements as $element) {
|
||||
if (!$element instanceof \DOMElement) continue;
|
||||
foreach ($this->rules as $rule) {
|
||||
try {
|
||||
$violation = $rule->check($element);
|
||||
if ($violation) {
|
||||
$violations[] = $violation;
|
||||
}
|
||||
} catch (\Throwable) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $violations;
|
||||
return $this->engine->run($doc);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user