Skip to content

Commit

Permalink
readme
Browse files Browse the repository at this point in the history
  • Loading branch information
mstgnz committed Dec 26, 2024
1 parent 805dea8 commit 1fdf43b
Show file tree
Hide file tree
Showing 2 changed files with 179 additions and 5 deletions.
91 changes: 89 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,15 @@ Transformer is a Go library that enables conversion between different data forma
- Easy to use
- Type safety
- Customizable conversion rules
- High test coverage
- Thread-safe operations
- Minimal dependencies

## Requirements

- Go 1.16 or higher
- Dependencies:
- `gopkg.in/yaml.v3` for YAML operations

## Installation

Expand Down Expand Up @@ -121,30 +130,108 @@ node, _ := txml.DecodeXml(xmlData)
yamlData, _ := tyaml.NodeToYaml(node)

// YAML -> JSON conversion
yamlData := []byte(`name: John\nage: 30`)
yamlData := []byte("name: John\nage: 30")
node, _ := tyaml.DecodeYaml(yamlData)
jsonData, _ := tjson.NodeToJson(node)
```

## Package Structure

- `node`: Contains core data structure and operations
- Node structure for representing hierarchical data
- Value types and type conversion operations
- Tree traversal and manipulation functions
- `tjson`: Handles JSON conversion operations
- JSON encoding/decoding
- JSON validation
- JSON file operations
- `txml`: Handles XML conversion operations
- XML encoding/decoding
- XML validation
- XML file operations
- XML attribute handling
- `tyaml`: Handles YAML conversion operations
- YAML encoding/decoding
- YAML validation
- YAML file operations
- `example`: Contains example usages
- Basic conversion examples
- Complex data structure examples
- Error handling examples

## Data Types

The Node structure supports the following data types:

- `TypeNull`: Null value
- `TypeObject`: Object (key-value pairs)
- Supports nested objects
- Maintains key order
- Handles circular references
- `TypeArray`: Array
- Supports mixed types
- Preserves order
- `TypeString`: String
- `TypeNumber`: Number
- `TypeNumber`: Number (integers and floating-point)
- `TypeBoolean`: Boolean

## Error Handling

The library provides detailed error information for various scenarios:

- File operations errors
- Format validation errors
- Conversion errors
- Type mismatch errors
- Structure validation errors

Example error handling:

```go
if err := validateAndConvert(); err != nil {
switch e := err.(type) {
case *FormatError:
log.Printf("Invalid format: %v", e)
case *ConversionError:
log.Printf("Conversion failed: %v", e)
default:
log.Printf("Unexpected error: %v", e)
}
}
```

## Testing

The library has comprehensive test coverage. To run tests:

```bash
# Run all tests
go test ./...

# Run tests with coverage
go test -cover ./...

# Run tests verbosely
go test -v ./...
```

Current test coverage: >90%

## Performance

The library is optimized for:
- Memory efficiency
- CPU usage
- Large file handling
- Concurrent operations

## Security

- Input validation to prevent XML entity attacks
- Memory limit checks for large files
- Safe type conversions
- No external command execution

## Contributing

This project is open-source, and contributions are welcome. Feel free to contribute or provide feedback of any kind.
Expand Down
93 changes: 90 additions & 3 deletions README_TR.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,15 @@ Transformer, farklı veri formatları (JSON, XML, YAML) arasında dönüşüm ya
- Kolay kullanım
- Tip güvenliği
- Özelleştirilebilir dönüşüm kuralları
- Yüksek test kapsamı
- İş parçacığı güvenli operasyonlar
- Minimum bağımlılıklar

## Gereksinimler

- Go 1.16 veya üzeri
- Bağımlılıklar:
- YAML işlemleri için `gopkg.in/yaml.v3`

## Kurulum

Expand Down Expand Up @@ -121,30 +130,108 @@ node, _ := txml.DecodeXml(xmlData)
yamlData, _ := tyaml.NodeToYaml(node)

// YAML -> JSON dönüşümü
yamlData := []byte(`name: John\nage: 30`)
yamlData := []byte("name: John\nage: 30")
node, _ := tyaml.DecodeYaml(yamlData)
jsonData, _ := tjson.NodeToJson(node)
```

## Paket Yapısı

- `node`: Temel veri yapısını ve operasyonlarını içerir
- Hiyerarşik veriyi temsil eden Node yapısı
- Değer tipleri ve tip dönüşüm operasyonları
- Ağaç gezinme ve manipülasyon fonksiyonları
- `tjson`: JSON dönüşüm işlemlerini gerçekleştirir
- JSON kodlama/kod çözme
- JSON doğrulama
- JSON dosya işlemleri
- `txml`: XML dönüşüm işlemlerini gerçekleştirir
- XML kodlama/kod çözme
- XML doğrulama
- XML dosya işlemleri
- XML öznitelik işleme
- `tyaml`: YAML dönüşüm işlemlerini gerçekleştirir
- YAML kodlama/kod çözme
- YAML doğrulama
- YAML dosya işlemleri
- `example`: Örnek kullanımları içerir
- Temel dönüşüm örnekleri
- Karmaşık veri yapısı örnekleri
- Hata işleme örnekleri

## Veri Tipleri

Node yapısı aşağıdaki veri tiplerini destekler:

- `TypeNull`: Boş değer
- `TypeObject`: Nesne (key-value çiftleri)
- `TypeObject`: Nesne (anahtar-değer çiftleri)
- İç içe nesneleri destekler
- Anahtar sıralamasını korur
- Döngüsel referansları işler
- `TypeArray`: Dizi
- Karışık tipleri destekler
- Sıralamayı korur
- `TypeString`: Metin
- `TypeNumber`: Sayı
- `TypeNumber`: Sayı (tam sayılar ve ondalıklı sayılar)
- `TypeBoolean`: Mantıksal değer

## Hata İşleme

Kütüphane, çeşitli senaryolar için detaylı hata bilgisi sağlar:

- Dosya işlemi hataları
- Format doğrulama hataları
- Dönüşüm hataları
- Tip uyuşmazlığı hataları
- Yapı doğrulama hataları

Örnek hata işleme:

```go
if err := validateAndConvert(); err != nil {
switch e := err.(type) {
case *FormatError:
log.Printf("Geçersiz format: %v", e)
case *ConversionError:
log.Printf("Dönüşüm başarısız: %v", e)
default:
log.Printf("Beklenmeyen hata: %v", e)
}
}
```

## Test

Kütüphane kapsamlı test kapsamına sahiptir. Testleri çalıştırmak için:

```bash
# Tüm testleri çalıştır
go test ./...

# Kapsam raporuyla testleri çalıştır
go test -cover ./...

# Detaylı test çıktısıyla çalıştır
go test -v ./...
```

Mevcut test kapsamı: >90%

## Performans

Kütüphane şunlar için optimize edilmiştir:
- Bellek verimliliği
- CPU kullanımı
- Büyük dosya işleme
- Eşzamanlı işlemler

## Güvenlik

- XML varlık saldırılarını önlemek için girdi doğrulama
- Büyük dosyalar için bellek limiti kontrolleri
- Güvenli tip dönüşümleri
- Harici komut çalıştırma yok

## Katkıda Bulunma

Bu proje açık kaynaklıdır ve katkılara açıktır. Her türlü katkıda bulunmaktan veya geri bildirimde bulunmaktan çekinmeyin.
Expand Down

0 comments on commit 1fdf43b

Please sign in to comment.