Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump version to 1.5.0 #106

Merged
merged 1 commit into from
Mar 5, 2021
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
51 changes: 21 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ If you like or are using this project please give it a star or leave some feedba

## What is it?

Textrude is a cross-platform general-purpose code-generation tool. It can easily import data from CSV,YAML, JSON or plain-text files and apply [Scriban](https://github.com/scriban/scriban) templates to quickly scaffold output files.
Textrude is a tool to feed CSV,YAML, JSON or plain-text files into [Scriban](https://github.com/scriban/scriban) templates. That makes it useful for:
- **Code-generation**. Generate serializers, smart-enums, lookup tables etc from structured data
- **Quick and dirty data-processing**. Pull a json file from a URL and extract the fields you're interested in.
- **Text processing**. Use line mode to filter the contents of large log files to get to the relevant sections

Textrude comes in 3 flavours:
- **textrude.exe** is a Windows CLI tool for use from the console and within build-systems
Expand All @@ -19,53 +22,41 @@ Textrude comes in 3 flavours:

## Why use it?

Let's face it, there are any number of code-generation technologies you might consider. Textrude's strengths are:

For **code-generation**, Textrude's strengths are:
- Easy model (data) creation - use CSV for simple lists or YAML/JSON if you need structured data
- Low-ceremony syntax while retaining a fully functional programming language
- Supports multiple input models and multiple output files for a single template
- Easy to inject additional model context via environment variables or user-supplied definitions
- Built-in dependency checking integrates well with your build system
- Allows template re-use via include mechanism
- Built-in dependency checking integrates well with your build system and avoids unneccesary rebuilds
- Support for template re-use/libraries
- Real-time prototyping tool (TextrudeInteractive)

For **text-processing** or **data-processing**
- Scriban is an easy to understand but relatively powerful scripting language
- **TextrudeInteractive** provides *immediate* feedback so you can see how the input is being processed by your script
- You can pipe text into **Textrude** from another command and reuse the templates you developed in **TextrudeInteractive** to shape the output
- **Textrude** can even pull JSON directly from a URL and feed it through a template.

## Download/build

The current release is **v1.4.0**.
The current release is **v1.5.0**.

**Textrude requires [.Net 5.0](https://dotnet.microsoft.com/download/dotnet/5.0). If it's not already on your machine you will be prompted to install it.**

**To run TextrudeInteractive v1.3 and up you must install the [WebView2 runtime](https://developer.microsoft.com/en-us/microsoft-edge/webview2/)**

- If you just want the binaries, [go here](doc/getBinaries.md).

- Alternatively, [building from source](doc/buildFromSource.md) is pretty easy and gives you access to the bleeding-edge!

- Or you can create a [Docker image](Docker.md)

## What's new

### vNext (source only)
- Add some [syntactic sugar](doc/syntaxExtensions.md)
- Provide [create_library](doc/userLibrary.md) method for improved library creation
- LoopLimit now removed and cancellation for long-running in-flight renders is supported
- textrude.exe can now read models from STDIN or from a URL. See [this doc](doc/buildSystemIntegration.md)
- textrude.exe model/output specifiers can now include explicit format declaration

### v1.4.0 (source/binary)
- The Monaco text editor is now used for all edit panes including the template editor, definitions and include paths.
- A single Monaco edit pane is now used for multiple models/outputs for cleaner switching & improved responsiveness
- The view menu allows visible-whitespace to be toggled on and off
- Rudimentary syntax highlighting and intellisense are provided for the template editor
- Models and outputs can now be assigned names
- Help menu now includes a link to gitter-chat
- Model, template and output panes now support linking to files.
- Export/Build... menu now brings up a dialog to help build CLI options.
- Updated to latest Scriban for [multi-line pipes](https://github.com/scriban/scriban/pull/327)
- Special thanks to [Martin Hochstrasser](https://github.com/highstreeto) for
- CAKE build support
- The fancy new logo!

### v1.5.0 (source/binary)
- Textrude now provides some simple [syntax extensions](doc/syntaxExtensions.md) over *classic* Scriban
- A [create_library](doc/userLibrary.md) built-in method is now provided to make it easier to create libraries
- LoopLimit now removed and cancellation of long-running in-flight renders is supported. This makes it easier to process large text files.
- **Textrude** can now read models from STDIN or from a URL, making it useful for processing the output of other commands.
- **Textrude** model/output specifiers can now include explicit format declarations.

[Full change history](doc/changeHistory.md)

Expand Down Expand Up @@ -94,7 +85,7 @@ Textrude makes heavy use of the following components:
- [MaterialDesignToolkit](https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit), [MaterialDesignExtensions](https://spiegelp.github.io/MaterialDesignExtensions) and [Ookii Dialogs](https://github.com/augustoproiete/ookii-dialogs-wpf)to make the UI a bit less clunky

Huge thanks to the contributors:
- [Martin Hochstrasser](https://github.com/highstreeto) - Docker support, general build enhancements and integration of the Monaco editor
- [Martin Hochstrasser](https://github.com/highstreeto) - Docker support, general build enhancements, integration of the Monaco editor and the fancy logo!
- [Neil MacMullen](https://github.com/NeilMacMullen) - original application concept and implementation


Expand Down
2 changes: 2 additions & 0 deletions Textrude.sln.DotSettings
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/CodeInspection/CodeAnnotations/NamespacesWithAnnotations/=TextrudeInteractive_002EAnnotations/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Humanizr/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Recognised/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=scriban/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=serialiser/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Textrude/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
8 changes: 7 additions & 1 deletion doc/changeHistory.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Full change history

### v1.5.0
- Textrude now provides some simple [syntax extensions](doc/syntaxExtensions.md) over *classic* Scriban
- A [create_library](doc/userLibrary.md) built-in method is now provided to make it easier to create libraries
- LoopLimit now removed and cancellation of long-running in-flight renders is supported. This makes it easier to process large text files.
- **Textrude** can now read models from STDIN or from a URL, making it useful for processing the output of other commands.
- **Textrude** model/output specifiers can now include explicit format declarations.

### v1.4.0
- The Monaco text editor is now used for all edit panes including the template editor, definitions and include paths.
- A single Monaco edit pane is now used for multiple models/outputs for cleaner switching & improved responsiveness
Expand All @@ -14,7 +21,6 @@
- CAKE build support
- The fancy new logo!


### v1.3.0
- Models and outputs can be added/removed on a per-project basis
- Syntax highlighting for output panes
Expand Down