-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.ps1
91 lines (69 loc) · 2.4 KB
/
build.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
[CmdletBinding()]
param (
)
$hasNamespace = $true
function Get-FilesContent ($directory) {
Write-Information "getting content of $directory"
$sb = [System.Text.StringBuilder]::new()
$files = Get-ChildItem $directory -Filter "*.h"
foreach ($file in $files) {
$fileContet = (Get-Content $file -Raw) -replace "#include <.*>", "" -replace "#include .*", "" -replace "using namespace std;", ""
[void]$sb.Append($fileContet)
[void]$sb.Append("`n")
}
return $sb.ToString()
}
function Recurse-Folder($folder) {
Write-Information "parsing $folder"
$sb = [System.Text.StringBuilder]::new()
$directories = Get-ChildItem -Path $folder -Directory
[void]$sb.Append((Get-FilesContent $folder))
foreach ($directory in $directories) {
$namespace = "φ" + (Convert-Path $directory | Get-Item | Select-Object Name).Name -replace " ", "_"
Write-Information "namespace is $namespace"
Write-Information "creating namespace for $directory"
if ($hasNamespace) {
[void]$sb.Append("namespace $namespace`n")
[void]$sb.Append("{`n")
}
$childContent = Recurse-Folder $directory
if ($hasNamespace) {
Write-Information "adding space for $namespace"
[void]$sb.Append((($childContent -split "`r?`n" ) | ForEach-Object { "`t" + $_ } | Out-String))
[void]$sb.Append("}`n")
[void]$sb.Append("using namespace $namespace;`n`n")
}
else {
[void]$sb.Append(($childContent | Out-String))
}
}
return $sb.ToString()
}
try {
Push-Location
Set-Location "./src/Mql4"
$sb = [System.Text.StringBuilder]::new()
[void]$sb.Append("
/**
* @author Mohammad Hossein Amri (mhamri.com)
*
* @file MQL4BetterSyntax.mqh
* @date $(Get-Date -Format "yyyy-MM-d")
*
* @brief an attempt to document MQL4(MT4) API
* for latest version please visit https://github.com/mhamri/MQLBettersyntax
*
* @copyright Copyright (c) 2021 Mohammad Hossein Amri
* @copydoc https://raw.githubusercontent.com/mhamri/MQLBettersyntax/main/LICENSE
*/
#include <iostream>
using namespace std;
`n")
[void]$sb.Append((Recurse-Folder "." | Out-String))
$sb.ToString().Trim() -replace "\s+`r?`n\s+`r?`n", "`n`n" | Set-Content "..\..\MQL4BetterSyntax.mqh"
}
catch {
}
finally {
Pop-Location
}