@@ -7,7 +7,7 @@ function ToCamelCase($str)
7
7
function GetUnits ($unitClass )
8
8
{
9
9
$units = @ ();
10
-
10
+
11
11
foreach ($unit in $unitClass.Units )
12
12
{
13
13
$units += $unit ;
@@ -47,78 +47,78 @@ function GetUnits($unitClass)
47
47
" Tebi" { " Ti" , " (1024d * 1024 * 1024 * 1024)" ; break ; }
48
48
" Pebi" { " Pi" , " (1024d * 1024 * 1024 * 1024 * 1024)" ; break ; }
49
49
" Exbi" { " Ei" , " (1024d * 1024 * 1024 * 1024 * 1024 * 1024)" ; break ; }
50
- }
51
-
50
+ }
51
+
52
52
$prefixAbbreviation = $prefixInfo [0 ];
53
53
$prefixFactor = $prefixInfo [1 ];
54
54
55
- $u = New-Object PsObject - Property @ {
56
- SingularName = $prefix + $ (ToCamelCase $unit.SingularName );
55
+ $u = New-Object PsObject - Property @ {
56
+ SingularName = $prefix + $ (ToCamelCase $unit.SingularName );
57
57
PluralName = $prefix + $ (ToCamelCase $unit.PluralName );
58
58
FromUnitToBaseFunc = " (" + $unit.FromUnitToBaseFunc + " ) * $prefixFactor " ;
59
59
FromBaseToUnitFunc = " (" + $unit.FromBaseToUnitFunc + " ) / $prefixFactor " ;
60
- Localization = $unit.Localization | % {
60
+ Localization = $unit.Localization | % {
61
61
$abbrev = $prefixAbbreviation + $_.Abbreviations [0 ];
62
62
if ($_.AbbreviationsWithPrefixes ) {
63
63
$abbrev = $_.AbbreviationsWithPrefixes [$prefixIndex ++ ];
64
64
}
65
-
65
+
66
66
New-Object PsObject - Property @ {
67
67
Culture = $_.Culture ;
68
68
Abbreviations = $abbrev ;
69
69
}};
70
70
}
71
-
71
+
72
72
$units += $u ;
73
73
}
74
74
}
75
-
75
+
76
76
foreach ($u in $units ) {
77
77
# Use decimal for internal calculations if base type is not double, such as for long or int.
78
78
if ($unitClass.BaseType -ne " double" ) {
79
79
$u.FromUnitToBaseFunc = $u.FromUnitToBaseFunc -replace " m" , " d" ;
80
80
$u.FromBaseToUnitFunc = $u.FromBaseToUnitFunc -replace " d" , " m" ;
81
81
}
82
-
82
+
83
83
# Convert to/from double for other base types
84
84
if ($unitClass.BaseType -eq " decimal" ) {
85
85
$u.FromUnitToBaseFunc = " Convert.ToDecimal($ ( $u.FromUnitToBaseFunc ) )" ;
86
86
$u.FromBaseToUnitFunc = " Convert.ToDouble($ ( $u.FromBaseToUnitFunc ) )" ;
87
- } else {
87
+ } else {
88
88
if ($unitClass.BaseType -eq " long" ) {
89
89
$u.FromUnitToBaseFunc = " Convert.ToInt64($ ( $u.FromUnitToBaseFunc ) )" ;
90
90
$u.FromBaseToUnitFunc = " Convert.ToDouble($ ( $u.FromBaseToUnitFunc ) )" ;
91
91
}
92
92
}
93
93
}
94
-
94
+
95
95
return $units | sort SingularName;
96
96
}
97
97
98
98
function GenerateUnitClass ($unitClass )
99
99
{
100
- Write-Host " Generate unit for: " + $unitClass.Name ;
101
-
100
+ Write-Host " Generate unit for: " + $unitClass.Name ;
101
+
102
102
$outFileName = " $PSScriptRoot /../GeneratedCode/UnitClasses/$ ( $unitClass.Name ) .g.cs" ;
103
103
GenerateUnitClassSourceCode $unitClass | Out-File - Encoding " UTF8" $outFileName
104
104
}
105
105
106
106
function GenerateUnitTestBaseClass ($unitClass )
107
107
{
108
- Write-Host " Generate test base for: " + $unitClass.Name ;
109
-
108
+ Write-Host " Generate test base for: " + $unitClass.Name ;
109
+
110
110
$outFileName = " $PSScriptRoot /../../UnitsNet.Tests/GeneratedCode/$ ( $unitClass.Name ) TestsBase.g.cs" ;
111
111
GenerateUnitTestBaseClassSourceCode $unitClass | Out-File - Encoding " UTF8" $outFileName
112
112
}
113
113
114
114
function GenerateUnitTestClassIfNotExists ($unitClass )
115
115
{
116
116
$outFileName = " $PSScriptRoot /../../UnitsNet.Tests/CustomCode/$ ( $unitClass.Name ) Tests.cs" ;
117
- if (Test-Path $outFileName )
117
+ if (Test-Path $outFileName )
118
118
{
119
119
return ;
120
- }
121
- else
120
+ }
121
+ else
122
122
{
123
123
Write-Host " Generate test placeholder for: " + $unitClass.Name ;
124
124
GenerateUnitTestPlaceholderSourceCode $unitClass | Out-File - Encoding " UTF8" $outFileName
@@ -131,9 +131,9 @@ function GenerateUnitEnum($unitClass)
131
131
132
132
$outDir = " $PSScriptRoot /../GeneratedCode/Enums" ;
133
133
$outFileName = " $outDir /$ ( $unitClass.Name ) Unit.g.cs" ;
134
-
134
+
135
135
New-Item - ItemType Directory - Force - Path $outDir ; # Make sure directory exists
136
-
136
+
137
137
$result = GenerateUnitEnumSourceCode $unitClass ;
138
138
$result | Out-File - Encoding " UTF8" $outFileName ;
139
139
}
@@ -146,12 +146,14 @@ function GenerateUnitSystemDefault($unitClasses)
146
146
$outFileName = " $outDir /UnitSystem.Default.g.cs" ;
147
147
148
148
New-Item - ItemType Directory - Force - Path $outDir ; # Make sure directory exists
149
-
149
+
150
150
$result = GenerateUnitSystemDefaultSourceCode $unitClasses ;
151
151
$result | Out-File - Encoding " UTF8" $outFileName ;
152
152
}
153
153
154
154
# Load external generator functions with same name as file
155
+ . " $PSScriptRoot /Include-GenerateTemplates.ps1"
156
+ . " $PSScriptRoot /Include-GenerateLogarithmicCode.ps1"
155
157
. " $PSScriptRoot /Include-GenerateUnitSystemDefaultSourceCode.ps1"
156
158
. " $PSScriptRoot /Include-GenerateUnitClassSourceCode.ps1"
157
159
. " $PSScriptRoot /Include-GenerateUnitEnumSourceCode.ps1"
@@ -177,15 +179,15 @@ get-childitem -path $templatesDir -filter "*.json" | % {
177
179
if (! $unitClass.LogarithmicScalingFactor ) {
178
180
$unitClass | Add-Member LogarithmicScalingFactor " 1"
179
181
}
180
-
182
+
181
183
# Expand unit prefixes into units
182
184
$unitClass.Units = GetUnits $unitClass ;
183
-
185
+
184
186
GenerateUnitClass $unitClass
185
187
GenerateUnitEnum $unitClass
186
188
GenerateUnitTestBaseClass $unitClass
187
189
GenerateUnitTestClassIfNotExists $unitClass
188
-
190
+
189
191
$unitClasses += $unitClass ;
190
192
}
191
193
0 commit comments