Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion GitVersion.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
next-version: 2.0.0
next-version: 2.1.0
tag-prefix: '[vV]'
mode: ContinuousDeployment
branches:
Expand Down
Binary file added Images/parser-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2025 CØDE SHΔYK
Copyright (c) 2026 CØDE SHΔYK

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# <img src="https://github.com/CodeShayk/parsley.net/blob/master/Images/ninja-icon-16-1.png" alt="ninja" style="width:30px;"/> Parsley.Net v2.0.0
# <img src="https://github.com/CodeShayk/parsley.net/blob/master/Images/parser-icon.png" alt="ninja" style="width:30px;"/> Parsley.Net v2.1.0
[![NuGet version](https://badge.fury.io/nu/Parsley.Net.svg)](https://badge.fury.io/nu/Parsley.Net) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/CodeShayk/Parsley.Net/blob/master/LICENSE.md)
[![GitHub Release](https://img.shields.io/github/v/release/CodeShayk/Parsley.Net?logo=github&sort=semver)](https://github.com/CodeShayk/Parsley.Net/releases/latest)
[![master-build](https://github.com/CodeShayk/parsley.net/actions/workflows/Master-Build.yml/badge.svg)](https://github.com/CodeShayk/parsley.net/actions/workflows/Master-Build.yml)
[![master-codeql](https://github.com/CodeShayk/parsley.net/actions/workflows/Master-CodeQL.yml/badge.svg)](https://github.com/CodeShayk/parsley.net/actions/workflows/Master-CodeQL.yml)
[![.Net 10.0](https://img.shields.io/badge/.Net-10.0-blue)](https://dotnet.microsoft.com/en-us/download/dotnet/10.0)
[![.Net 9.0](https://img.shields.io/badge/.Net-9.0-blue)](https://dotnet.microsoft.com/en-us/download/dotnet/9.0)
[![.Net Framework 4.6.4](https://img.shields.io/badge/.Net-4.6.2-blue)](https://dotnet.microsoft.com/en-us/download/dotnet-framework/net46)
[![.Net Standard 2.0](https://img.shields.io/badge/.NetStandard-2.0-blue)](https://github.com/dotnet/standard/blob/v2.0.0/docs/versions/netstandard2.0.md)
Expand Down
155 changes: 12 additions & 143 deletions src/Parsley/Parsley.csproj
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net462;netstandard2.0;netstandard2.1;net9.0</TargetFrameworks>
<TargetFrameworks>net462;netstandard2.0;netstandard2.1;net9.0;net10.0</TargetFrameworks>
<ImplicitUsings>disable</ImplicitUsings>
<Title>Parsley.Net</Title>
<Authors>CodeShayk</Authors>
<Company>CodeShayk</Company>
<Description>Parsley is a .Net utility to parse Fixed width or Delimiter separated file (eg.CSV). </Description>
<PackageIcon>ninja-icon-16.png</PackageIcon>
<PackageIcon>parser-icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<Copyright>Copyright (c) 2025 Code Shayk</Copyright>
<Copyright>Copyright (c) 2026 Code Shayk</Copyright>
<RepositoryType>git</RepositoryType>
<PackageTags>tsv, csv, delimiter, delimited-files, delimited-data, fixed-width, comma-separated-values, comma-separated-fields, comma-separated-text, comma-separated-file, comma-separated, fixed-width-text, delimiter-string, delimiter-separated-values, fixed-width-parser, delimiter-separated-fields, delimiter-separated-text, delimiter-separated-file, fixed-width-file, fixed-width-format, delimiter-file, delimited-file</PackageTags>
<IncludeSymbols>True</IncludeSymbols>
Expand All @@ -19,151 +19,20 @@
<GenerateDocumentationFile>True</GenerateDocumentationFile>
<PackageProjectUrl>https://github.com/CodeShayk/Parsley.Net/wiki</PackageProjectUrl>
<RepositoryUrl>https://github.com/CodeShayk/Parsley.Net</RepositoryUrl>
<PackageReleaseNotes># Release Notes - Parsley.Net v2.0.0

## Release Type: Major Release
**Date**: 2025-10-13
**Version**: 2.0.0

## Summary
This major release represents a comprehensive evolution of the Parsley.Net library, incorporating all improvements from previous versions. The release includes critical bug fixes, performance enhancements, new features, and improved error handling, while maintaining complete backward compatibility. This consolidation brings together all improvements in a single, cohesive release.

## All Included Tasks

### Task 1: Fix Syntax Error in Parser.cs
- **Priority**: Critical
- **Category**: Bug Fix
- **Change**: Removed unnecessary semicolon in Parse&lt;T&gt;(string[] lines) method
- **Impact**: Zero functional impact on the library
- **Backward Compatibility**: Fully compatible with existing code

### Task 2: Implement Memory-Efficient Streaming Option
- **Priority**: High
- **Category**: Enhancement
- **Change**: NOT IMPLEMENTED - Skipped as requested in the original task
- **Impact**: Feature not included in this release
- **Backward Compatibility**: N/A

### Task 3: Enhance Error Reporting with Line Numbers
- **Priority**: High
- **Category**: Enhancement
- **Change**: Added line number information and field names to parsing errors
- **Impact**: Improved debugging experience for users
- **Backward Compatibility**: Fully compatible - only changes error message content

### Task 4: Refactor Parallel Processing Implementation
- **Priority**: Medium
- **Category**: Performance &amp; Code Quality
- **Change**: Replaced lock-based parallel processing with more efficient approach
- **Impact**: Better performance and thread safety
- **Backward Compatibility**: Fully compatible - internal implementation change only

### Task 5: Add Configuration Options
- **Priority**: Medium
- **Category**: Enhancement
- **Change**: Implemented a ParseOptions class for flexible parsing configuration
- **Impact**: More flexible parsing options with optional configuration
- **Backward Compatibility**: Fully compatible - all existing code continues to work

### Task 6: Implement Result Pattern for Better Error Handling
- **Priority**: Low
- **Category**: Enhancement
- **Change**: Added Result&lt;T&gt; or TryParse-style methods for explicit error handling
- **Impact**: More explicit error handling for advanced scenarios
- **Backward Compatibility**: Fully compatible - adds new methods while preserving existing ones

## Complete Changes

### Bug Fixes
- Fixed syntax error that could cause compilation warnings
- No API changes
- No behavior changes for existing functionality
- All existing functionality preserved

### Performance Enhancements
- Improved parallel processing performance (replaced lock-based approach)
- Memory-efficient streaming options for large file processing
- Better performance without sacrificing thread safety

### New Features
- IAsyncEnumerable&lt;T&gt; support for streaming large files
- Enhanced error messages with line numbers and field names
- ParseOptions class with configurable parsing behavior
- Result&lt;T&gt;-based methods for explicit error handling
- Support for skip header lines, custom delimiters, and other parsing options
- TryParse-style methods for functional programming patterns

### API Extensions
- New streaming methods added to IParser interface
- Enhanced error reporting mechanisms
- Configuration options through ParseOptions class
- Result-pattern based parsing methods

## Breaking Changes
- None. This release maintains complete backward compatibility.

## Testing
- All existing unit tests pass
- New tests added for streaming functionality
- New tests added for configuration functionality
- New tests added for Result pattern methods
- Performance benchmarks show improvements
- No regression issues detected
- Backward compatibility verified

## Upgrade Instructions
- Drop-in replacement for all previous versions (v1.1.5 and earlier)
- No code changes required for existing functionality
- New features can be adopted incrementally
- Simply update the NuGet package reference

## Files Changed
- src/Parsley/IParser.cs
- src/Parsley/Parser.cs
- src/Parsley/IFileLine.cs
- src/Parsley/Resources.resx
- src/Parsley/Resources.Designer.cs
- src/Parsley/IocExtensions.cs
- src/Parsley/Extensions.cs

## Key Improvements Summary

### 1. Code Quality &amp; Bug Fixes
- Eliminated syntax error in Parser.cs
- Improved code structure and maintainability

### 2. Memory Efficiency
- Added streaming support for processing very large files
- Reduced memory footprint when processing large datasets

### 3. Error Reporting
- Enhanced error messages with line numbers
- Added field/property context to errors
- Better debugging experience for users

### 4. Performance
- More efficient parallel processing implementation
- Reduced locking bottlenecks
- Better resource utilization

### 5. Flexibility
- Configuration options through ParseOptions class
- Multiple ways to use the library (traditional and functional patterns)
- Better support for various parsing scenarios

### 6. Developer Experience
- More intuitive API options
- Better error diagnostics
- Multiple usage patterns to choose from

This comprehensive release combines all the improvements from the incremental development path into a single, powerful version that provides maximum value to users while maintaining complete compatibility with existing codebases.</PackageReleaseNotes>
<Version>2.0.0</Version>
<PackageReleaseNotes>
# Release Notes - Parsley.Net v2.1.0
## Release Type: Minor Release: Targets .Net 10
**Date**: 2026-03-13
**Version**: 2.1.0
</PackageReleaseNotes>

<Version>2.1.0</Version>
<PackageRequireLicenseAcceptance>True</PackageRequireLicenseAcceptance>
<AssemblyName>Parsley.Net</AssemblyName>
</PropertyGroup>

<ItemGroup>
<None Include="..\..\Images\ninja-icon-16.png">
<None Include="..\..\Images\parser-icon.png">
<Pack>True</Pack>
<PackagePath>\</PackagePath>
</None>
Expand Down
Loading