-
-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathJava-Language.ps1
More file actions
57 lines (45 loc) · 1.78 KB
/
Java-Language.ps1
File metadata and controls
57 lines (45 loc) · 1.78 KB
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
function Language.Java {
<#
.SYNOPSIS
Java PipeScript Language Definition.
.DESCRIPTION
Allows PipeScript to generate Java.
Multiline comments with /*{}*/ will be treated as blocks of PipeScript.
Multiline comments can be preceeded or followed by 'empty' syntax, which will be ignored.
The Java Inline PipeScript Transpiler will consider the following syntax to be empty:
* ```null```
* ```""```
* ```''```
#>
[ValidatePattern('\.(?>java)$')]
param()
$this = $myInvocation.MyCommand
if (-not $this.Self) {
$languageDefinition = New-Module {
param()
# Java files are named `.java`.
$FilePattern = '\.(?>java)$'
# Java Projects can be pom.xml (Maven) or Gradle
$ProjectFilePattern = '(?>pom.xml|\.gradle$)'
# Java is case sensitive.
$CaseSensitive = $true
# We start off by declaring a number of regular expressions:
$startComment = '/\*' # * Start Comments ```\*```
$endComment = '\*/' # * End Comments ```/*```
$Whitespace = '[\s\n\r]{0,}'
# * IgnoredContext ```String.empty```, ```null```, blank strings and characters
$IgnoredContext = "(?<ignore>(?>$("null", '""', "''" -join '|'))\s{0,}){0,1}"
$StartPattern = "(?<PSStart>${IgnoredContext}${startComment}\{$Whitespace)"
$EndPattern = "(?<PSEnd>$Whitespace\}${endComment}\s{0,}${IgnoredContext})"
# Java's compiler is "javac" (if found)
$Compiler = 'javac'
$LanguageName = 'Java'
Export-ModuleMember -Variable * -Function * -Alias *
} -AsCustomObject
$languageDefinition.pstypenames.clear()
$languageDefinition.pstypenames.add("Language")
$languageDefinition.pstypenames.add("Language.Java")
$this.psobject.properties.add([PSNoteProperty]::new('Self',$languageDefinition))
}
$this.Self
}