Comments (7)
Obviously, it is not expected, but Scriban is responsible for that part. NTypewriter uses Scriban v5.5, and apparently, there was some fix in version 5.6 of scriban/scriban#483 related to not intended indentation.
from ntypewriter.
Checkout this section of docs
Basically, you need to add a '-' to supress the extra whitespace.
{{ - class.BareName }}
from ntypewriter.
That removes all whitespaces and new lines before that line though.
from ntypewriter.
I have another idea, maybe the class name contains whitespaces? I would try:
{{ class.BareName | String.Strip }}
from ntypewriter.
or maybe add a {{ }}
ahead of the {{ - class.BareName }}
to ensure that the new line isn't stripped.
In my templates, I make sure there are no indentations in the main body of my template. If I need to output something from a function, I return it as a string that the main body prints out. This way I control all the indentation from the main body.
Like this:
{{- # Helper classes }}
{{- func ImportType(type)
useType = Type.Unwrap(type)
if (useType.ArrayType != null)
useType = useType.ArrayType
end
if (type.IsEnum)
path = "@skycourt/api/enums"
else
path = "./" | String.Append useType.Name
end
if ((useType.Attributes | Array.Filter @AttrIsExportToTypescript).size > 0)
ret "import { " | String.Append useType.Name | String.Append " } from '" | String.Append path | String.Append "';\r"
end
ret null
end
}}
{{- func AttrIsExportToTypescript(attr)
ret attr.Name | String.Contains "ExportToTypescript"
end
}}
{{- # output classes }}
{{ $barrelFile = "" }}
{{- for class in data.Classes | Symbols.ThatHaveAttribute "ExportToTypescript" | Array.Concat (data.Classes | Symbols.ThatHaveAttribute "ExportToTypescriptWithKnockout") | Array.Sort "Name"
capture output }}
{{- for type in (class | Type.AllReferencedTypes)}}
{{- ImportType type}}
{{-end}}
export interface {{class.Name}}{{if class.HasBaseClass}} extends {{class.BaseClass.Name; end}} {
{{- for prop in class.Properties | Symbols.ThatArePublic }}
{{ prop.Name | String.ToCamelCase }}: {{prop | Custom.ToTypeScriptType }}{{if !for.last}},{{end}}
{{-end}}
}
{{- end}}
from ntypewriter.
@gregveres I didn't need the {{-
. Just using {{
worked, as long as I added the blank entry first. So {{ }}{{ class.BareName }}
was the winner! Thank you! Is this a bug or expected behavior?
from ntypewriter.
Based on the documentation, I would say it is working as expected.
But if it is a bug, then it is a bug in Scriban, not in NTypewriter. You could as on their github site.
from ntypewriter.
Related Issues (20)
- Changes from GIT not picked up by NTypewriter HOT 3
- This is perfect for AI
- Failed to compile user code (System.Collections) HOT 10
- Source Generator ArgumentNullException HOT 8
- Save function is misleading HOT 3
- `Microsoft.CodeAnalysis` not found HOT 10
- SourceGenerator can't find dependent projects HOT 2
- Publish latest releases as NuGet package HOT 4
- Template output preview is always displayed on top of everything HOT 1
- Template output preview with dark mode support
- Using C# 9.0 init accessors in a custom function gives an error inside Visual Studio extension HOT 1
- Extend AllReferencedTypes to search on Interfaces HOT 1
- Request - Property internal set vs public flag or filter HOT 3
- Action.Url does not support array-valued parameters HOT 1
- How to use builtin function LINQ.Where in template? HOT 7
- error while generating typescript services from ntypewriter runtime generator HOT 2
- Generic class with itself as argument of base type equality problem HOT 3
- How to join arrays without losing type information? HOT 2
- How to automatically render templates? HOT 2
- Incremental Generator HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ntypewriter.