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
Major upgrade v2.0.0
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace YakNet\AccessibilityConsole\Core;
|
||||
|
||||
class Config
|
||||
{
|
||||
private array $settings = [];
|
||||
|
||||
public function __construct(array $settings = [])
|
||||
{
|
||||
$this->settings = $settings;
|
||||
}
|
||||
|
||||
public static function fromYaml(string $path): self
|
||||
{
|
||||
// Placeholder for YAML loading logic
|
||||
return new self([]);
|
||||
}
|
||||
|
||||
public function get(string $key, mixed $default = null): mixed
|
||||
{
|
||||
return $this->settings[$key] ?? $default;
|
||||
}
|
||||
|
||||
public function getGeminiApiKey(): ?string
|
||||
{
|
||||
return $this->get('gemini_api_key') ?? $_ENV['GEMINI_API_KEY'] ?? getenv('GEMINI_API_KEY') ?: null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace YakNet\AccessibilityConsole\Core;
|
||||
|
||||
use YakNet\AccessibilityConsole\Rules\RuleInterface;
|
||||
|
||||
class RuleEngine
|
||||
{
|
||||
/** @var RuleInterface[] */
|
||||
private array $rules = [];
|
||||
|
||||
public function addRule(RuleInterface $rule): void
|
||||
{
|
||||
$this->rules[] = $rule;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return RuleInterface[]
|
||||
*/
|
||||
public function getRules(): array
|
||||
{
|
||||
return $this->rules;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
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 addRule(RuleInterface $rule): void
|
||||
{
|
||||
$this->rules[] = $rule;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Violation[]
|
||||
*/
|
||||
public function scan(string $html): array
|
||||
{
|
||||
if (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);
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace YakNet\AccessibilityConsole\Core;
|
||||
|
||||
enum Severity: string
|
||||
{
|
||||
case INFO = 'info';
|
||||
case WARNING = 'warning';
|
||||
case ERROR = 'error';
|
||||
case CRITICAL = 'critical';
|
||||
|
||||
public function color(): string
|
||||
{
|
||||
return match($this) {
|
||||
self::INFO => 'info',
|
||||
self::WARNING => 'comment',
|
||||
self::ERROR => 'error',
|
||||
self::CRITICAL => 'error',
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace YakNet\AccessibilityConsole\Core;
|
||||
|
||||
readonly class Violation
|
||||
{
|
||||
public function __construct(
|
||||
public string $ruleId,
|
||||
public string $message,
|
||||
public Severity $severity,
|
||||
public WCAGStandard $standard,
|
||||
public string $htmlSnippet,
|
||||
public ?array $location = null, // ['file' => '...', 'line' => 0]
|
||||
public ?string $fixSuggestion = null
|
||||
) {}
|
||||
|
||||
public function toArray(): array
|
||||
{
|
||||
return [
|
||||
'ruleId' => $this->ruleId,
|
||||
'message' => $this->message,
|
||||
'severity' => $this->severity->value,
|
||||
'standard' => $this->standard->value,
|
||||
'htmlSnippet' => $this->htmlSnippet,
|
||||
'location' => $this->location,
|
||||
'fixSuggestion' => $this->fixSuggestion,
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace YakNet\AccessibilityConsole\Core;
|
||||
|
||||
enum WCAGStandard: string
|
||||
{
|
||||
case A = 'A';
|
||||
case AA = 'AA';
|
||||
case AAA = 'AAA';
|
||||
}
|
||||
Reference in New Issue
Block a user