-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCopyCode.ps1
More file actions
85 lines (77 loc) · 2.24 KB
/
CopyCode.ps1
File metadata and controls
85 lines (77 loc) · 2.24 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
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
<#
Copies the chosen file to the clipboard wrapped like:
filename.ext (C:\full\path\filename.ext)
```<language>
…file contents…
```
#>
param(
[Parameter(Mandatory = $true, ValueFromRemainingArguments = $true)]
[string] $Path
)
# 1) Read the entire file
$code = [System.IO.File]::ReadAllText($Path, [System.Text.Encoding]::UTF8)
# 2) Build the label line
$filename = [System.IO.Path]::GetFileName($Path)
$label = "$filename ($Path)"
# 3) Map extensions to fence languages
$ext2lang = @{
'.adoc' = 'asciidoc'
'.bash' = 'bash'
'.c' = 'c'
'.coffee' = 'coffeescript'
'.cpp' = 'cpp'
'.cr' = 'crystal'
'.cs' = 'csharp'
'.css' = 'css'
'.diff' = 'diff'
'.dockerfile' = 'dockerfile'
'.ex' = 'elixir'
'.gcode' = 'gcode'
'.go' = 'go'
'.hbs' = 'handlebars'
'.html' = 'html'
'.htaccess' = 'apache'
'.ini' = 'ini'
'.java' = 'java'
'.js' = 'javascript'
'.json' = 'json'
'.kt' = 'kotlin'
'.lua' = 'lua'
'.md' = 'markdown'
'.m' = 'objectivec'
'.mk' = 'makefile'
'.pl' = 'perl'
'.phtml' = 'php-template'
'.php' = 'php'
'.ps1' = 'powershell'
'.py' = 'python'
'.r' = 'r'
'.rb' = 'ruby'
'.rs' = 'rust'
'.scss' = 'scss'
'.sh' = 'shell'
'.sqf' = 'sqf'
'.sql' = 'sql'
'.swift' = 'swift'
'.tex' = 'latex'
'.toml' = 'toml'
'.ts' = 'typescript'
'.xquery' = 'xquery'
'.xml' = 'xml'
'.yaml' = 'yaml'
'.txt' = 'plaintext'
}
# 4) Lookup the language (or leave blank if unknown)
$ext = [System.IO.Path]::GetExtension($Path).ToLower()
$lang = if ($ext2lang.ContainsKey($ext)) { $ext2lang[$ext] } else { '' }
# 5) Compose the fenced code block
$threeTicks = '```' # Store literal triple backticks
$wrapped = @"
$label
$($threeTicks)$($lang)
$code
$($threeTicks)
"@
# 6) Copy to clipboard
Set-Clipboard -Value $wrapped