Skip to content

Commit c29127d

Browse files
Add Janet lang (#936)
* start work on adding Janet * run build-langs script * add Janet syntax highlighting * add janet.svg
1 parent 4dcc88a commit c29127d

10 files changed

Lines changed: 74 additions & 1 deletion

File tree

‎config/langs.toml‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,23 @@ NB.Accessing arguments
509509
echo each 2}.ARGV
510510
'''
511511

512+
[Janet]
513+
size = '1.35 MiB'
514+
version = '1.27.0'
515+
website = 'https://janet-lang.org'
516+
example = '''
517+
# Printing
518+
(print "Hello, World!")
519+
520+
# Looping
521+
(for i 0 10
522+
(print i))
523+
524+
# Accessing arguments
525+
(each arg (tuple/slice (dyn :args) 1)
526+
(print arg))
527+
'''
528+
512529
[Java]
513530
size = '51.1 MiB'
514531
version = '17.0.1'

‎docker/dev.Dockerfile‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,15 @@ COPY --from=codegolf/lang-brainfuck ["/", "/langs/brainfuck/rootfs/" ] # 4.57 M
4848
COPY --from=codegolf/lang-cobol ["/", "/langs/cobol/rootfs/" ] # 4.12 MiB
4949
COPY --from=codegolf/lang-awk ["/", "/langs/awk/rootfs/" ] # 1.72 MiB
5050
COPY --from=codegolf/lang-c ["/", "/langs/c/rootfs/" ] # 1.63 MiB
51+
COPY --from=codegolf/lang-janet ["/", "/langs/janet/rootfs/" ] # 1.35 MiB
5152
COPY --from=codegolf/lang-bash ["/", "/langs/bash/rootfs/" ] # 1.19 MiB
5253
COPY --from=codegolf/lang-sql ["/", "/langs/sql/rootfs/" ] # 1.13 MiB
5354
COPY --from=codegolf/lang-k ["/", "/langs/k/rootfs/" ] # 530 KiB
5455
COPY --from=codegolf/lang-wren ["/", "/langs/wren/rootfs/" ] # 484 KiB
5556
COPY --from=codegolf/lang-lua ["/", "/langs/lua/rootfs/" ] # 342 KiB
5657
COPY --from=codegolf/lang-sed ["/", "/langs/sed/rootfs/" ] # 232 KiB
5758

59+
5860
COPY run-lang.c ./
5961

6062
RUN gcc -Wall -Werror -Wextra -o /usr/bin/run-lang -s -static run-lang.c

‎docker/live.Dockerfile‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ COPY --from=codegolf/lang-brainfuck ["/", "/langs/brainfuck/rootfs/" ] # 4.57 M
6161
COPY --from=codegolf/lang-cobol ["/", "/langs/cobol/rootfs/" ] # 4.12 MiB
6262
COPY --from=codegolf/lang-awk ["/", "/langs/awk/rootfs/" ] # 1.72 MiB
6363
COPY --from=codegolf/lang-c ["/", "/langs/c/rootfs/" ] # 1.63 MiB
64+
COPY --from=codegolf/lang-janet ["/", "/langs/janet/rootfs/" ] # 1.35 MiB
6465
COPY --from=codegolf/lang-bash ["/", "/langs/bash/rootfs/" ] # 1.19 MiB
6566
COPY --from=codegolf/lang-sql ["/", "/langs/sql/rootfs/" ] # 1.13 MiB
6667
COPY --from=codegolf/lang-k ["/", "/langs/k/rootfs/" ] # 530 KiB

‎hole/play.go‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,8 @@ func play(ctx context.Context, holeID, langID, code string, score *Scorecard) {
264264
cmd.Args = []string{"/usr/bin/hexagony", "-d", "-"}
265265
case "j":
266266
cmd.Args = []string{"/usr/bin/j", "/tmp/code.ijs"}
267+
case "janet":
268+
cmd.Args = []string{"/usr/bin/janet", "/proc/self/fd/0"}
267269
case "k":
268270
cmd.Args = []string{"/usr/bin/kwrapper", "/tmp/code.k"}
269271
case "javascript":

‎js/_codemirror.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import { go } from '@codemirror/legacy-modes/mode/go';
3232
import { golfScript } from 'codemirror-lang-golfscript';
3333
import { haskell } from '@codemirror/legacy-modes/mode/haskell';
3434
import { j } from 'codemirror-lang-j';
35+
import { janet } from 'codemirror-lang-janet';
3536
import { java } from '@codemirror/lang-java';
3637
import { javascriptLanguage } from '@codemirror/lang-javascript';
3738
import { julia } from '@codemirror/legacy-modes/mode/julia';
@@ -126,6 +127,7 @@ export const extensions = {
126127
'haskell': StreamLanguage.define(haskell),
127128
// TODO hexagony
128129
'j': j(),
130+
'janet': janet(),
129131
'java': java(),
130132
// Bypass javascript() so that autocomplete imports are tree-shaken out.
131133
'javascript': new LanguageSupport(javascriptLanguage),

‎langs/janet/Dockerfile‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
FROM alpine:3.17 AS builder
2+
3+
RUN apk add --no-cache build-base curl
4+
5+
RUN curl -L https://github.com/janet-lang/janet/archive/refs/tags/v1.27.0.tar.gz | tar xz
6+
7+
RUN mv janet-* janet \
8+
&& cd janet \
9+
&& make \
10+
&& strip build/janet
11+
12+
FROM codegolf/lang-base
13+
14+
COPY --from=builder /lib/ld-musl-x86_64.so.1 /lib/
15+
COPY --from=builder /janet/build/janet /usr/bin/janet
16+
17+
ENTRYPOINT ["janet"]
18+
19+
CMD ["-v"]

‎package-lock.json‎

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"codemirror-lang-elixir": "^3",
1818
"codemirror-lang-golfscript": "",
1919
"codemirror-lang-j": "",
20+
"codemirror-lang-janet": "^0.7.2",
2021
"codemirror-lang-k": "",
2122
"codemirror-lang-prolog": "",
2223
"dialog-polyfill": "",

‎sql/a-schema.sql‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ CREATE TYPE keymap AS ENUM ('default', 'vim');
5555
CREATE TYPE lang AS ENUM (
5656
'assembly', 'awk', 'bash', 'basic', 'brainfuck', 'c', 'c-sharp', 'cpp',
5757
'cobol', 'crystal', 'd', 'dart', 'elixir', 'f-sharp', 'fish', 'fortran',
58-
'go', 'golfscript', 'haskell', 'hexagony', 'j', 'java', 'javascript',
58+
'go', 'golfscript', 'haskell', 'hexagony', 'j', 'janet', 'java', 'javascript',
5959
'julia', 'k', 'lisp', 'lua', 'nim', 'ocaml', 'pascal', 'perl', 'php', 'powershell',
6060
'prolog', 'python', 'r', 'raku', 'ruby', 'rust', 'sed', 'sql', 'swift',
6161
'tcl', 'tex', 'v', 'viml', 'wren', 'zig'

‎svg/janet.svg‎

Lines changed: 8 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)