Skip to content

Commit c680431

Browse files
committed
Add features section to README and prep 0.2.0 release
1 parent 8cf03b2 commit c680431

2 files changed

Lines changed: 179 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.2.0] - 2020-10-05
11+
1012
### Added
1113

1214
- Automated GitHub releases from the release action
1315
- Support for enums generation
1416
- Support for various enum members - with implicit and/or explicit values, flags
15-
- Code coverage, via CodeCov
17+
- Support for structs generation
1618
- Support for generating XML summary documentation ([Zaid Ajaj](https://github.com/Zaid-Ajaj))
19+
- for interfaces, classes, structs, enums, enum members, fields, properties and constructors
20+
- Code coverage, via CodeCov
1721
- [StyleCop.Analyzer](https://github.com/DotNetAnalyzers/StyleCopAnalyzers) and [SonarAnalyzer.CSharp](https://github.com/SonarSource/sonar-dotnet)
18-
- Support for structs generation
1922

2023
## [0.1.0] - 2020-09-26
2124

README.md

Lines changed: 174 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Small C# code generator. Easily generate code programmatically!
99

1010
- .NET CLI `dotnet add package SharpCode`
1111
- Package Manager `Install-Package SharpCode`
12-
- Package Reference `<PackageReference Include="SharpCode" Version="0.1.0" />`
12+
- Package Reference `<PackageReference Include="SharpCode" Version="0.2.0" />`
1313

1414
## Usage
1515

@@ -130,6 +130,179 @@ namespace Data
130130
The [samples](https://github.com/ful-stackz/SharpCode/tree/main/samples) folder contains sample projects which make use of `SharpCode`. The projects are fully functional
131131
and can be played around with. Check the `samples/README.md` for more information.
132132

133+
## Features
134+
135+
With `SharpCode` you can programmatically generate source code for a lot of C# structures. When generating the source
136+
code of any structure `SharpCode` performs basic validation to ensure a level of correctness of the produced source
137+
code.
138+
139+
<details>
140+
<summary>Generating namespace source code</summary>
141+
142+
```csharp
143+
// ✔ Define the name of the namespace
144+
namespace Data
145+
{
146+
// ✔ Interface members with different access modifiers
147+
public interface IHasData {}
148+
149+
// ✔ Class members with different access modifiers
150+
public class Data {}
151+
152+
// ✔ Struct members with different access modifiers
153+
public struct DataPoint {}
154+
155+
// ✔ Enum members with different access modifiers
156+
public enum DataType {}
157+
}
158+
```
159+
</details>
160+
161+
<details>
162+
<summary>Generating interface source code</summary>
163+
164+
```csharp
165+
// ✔ Define XML summary docs
166+
// ✔ Define the name of the interface
167+
// ✔ Define a list of implemented interfaces
168+
/// <summary>
169+
/// Docs!
170+
/// </summary>
171+
public interface IHasData : IImplementedInterface
172+
{
173+
// ✔ Define property members
174+
int Count { get; set; }
175+
}
176+
```
177+
</details>
178+
179+
<details>
180+
<summary>Generating class source code</summary>
181+
182+
```csharp
183+
// ✔ Define XML summary docs
184+
// ✔ Define the name of the class
185+
// ✔ Define an inherited class
186+
// ✔ Define a list of implemented interfaces
187+
/// <summary>
188+
/// Docs!
189+
/// </summary>
190+
public class Data : DataBase, IHasData
191+
{
192+
// ✔ Define field members
193+
private int _count;
194+
195+
// ✔ Define constructors
196+
// ✔ Define constructor XML summary docs
197+
// ✔ Define constructor parameters
198+
// ✔ Define accepting fields for constructor parameters
199+
// ✔ Define base calls with parameters
200+
/// <summary>
201+
/// Docs!
202+
/// </summary>
203+
public Data(int count) : DataBase(count)
204+
{
205+
_count = count;
206+
}
207+
208+
// ✔ Define property members
209+
// ✔ Define property XML summary docs
210+
// ✔ Define custom getter/setter for properties
211+
/// <summary>
212+
/// Docs!
213+
/// </summary>
214+
public int Count
215+
{
216+
get => _count;
217+
set => _count = value;
218+
}
219+
220+
// ✔ Define auto-implemented properties
221+
public string Name { get; set; }
222+
}
223+
```
224+
</details>
225+
226+
<details>
227+
<summary>Generating struct source code</summary>
228+
229+
```csharp
230+
// ✔ Define XML summary docs
231+
// ✔ Define the name of the struct
232+
// ✔ Define a list of implemented interfaces
233+
/// <summary>
234+
/// Docs!
235+
/// </summary>
236+
public struct DataPoint : IHasData
237+
{
238+
// ✔ Define field members
239+
private int _count;
240+
241+
// ✔ Define constructors
242+
// ✔ Define constructor XML summary docs
243+
// ✔ Define constructor parameters
244+
// ✔ Define accepting fields for constructor parameters
245+
/// <summary>
246+
/// Docs!
247+
/// </summary>
248+
public Data(int count)
249+
{
250+
_count = count;
251+
}
252+
253+
// ✔ Define property members
254+
// ✔ Define property XML summary docs
255+
// ✔ Define custom getter/setter for properties
256+
/// <summary>
257+
/// Docs!
258+
/// </summary>
259+
public int Count
260+
{
261+
get => _count;
262+
set => _count = value;
263+
}
264+
}
265+
```
266+
</details>
267+
268+
<details>
269+
<summary>Generating enum source code</summary>
270+
271+
```csharp
272+
// ✔ Define XML summary docs
273+
// ✔ Define the name of the enum
274+
/// <summary>
275+
/// Docs!
276+
/// </summary>
277+
public enum DataType
278+
{
279+
// ✔ Define enum members
280+
// ✔ Define XML summary docs for enum members
281+
// ✔ Define explicit values for enum members
282+
/// <summary>
283+
/// Docs!
284+
/// </summary>
285+
Invalid = 0,
286+
Incomplete,
287+
Complete,
288+
}
289+
```
290+
291+
```csharp
292+
// ✔ Define enum as flags
293+
// ✔ Auto generated flags-compatible values for enum members
294+
[System.Flags]
295+
public enum ExampleFlags
296+
{
297+
None = 0,
298+
A = 1,
299+
B = 2,
300+
C = 4,
301+
D = 8,
302+
}
303+
```
304+
</details>
305+
133306
## Development
134307

135308
You don't need anything special for local development.

0 commit comments

Comments
 (0)