aboutsummaryrefslogtreecommitdiffstats
path: root/root
diff options
context:
space:
mode:
authors-ol <s+removethis@s-ol.nu>2021-01-04 11:20:54 +0000
committers-ol <s+removethis@s-ol.nu>2021-01-04 11:41:13 +0000
commit9e032bde964b7adae320f890c0c9b69d684b3be2 (patch)
treebfbcb8706d1e8ef31afa22d58e56f1881eca46e8 /root
parentportfolio: add earthrise one (diff)
downloadmmm-9e032bde964b7adae320f890c0c9b69d684b3be2.tar.gz
mmm-9e032bde964b7adae320f890c0c9b69d684b3be2.zip
add SASS plugin
Diffstat (limited to 'root')
-rw-r--r--root/$mmm/plugins/sass/converts: text$moonscript -> table.moon55
1 files changed, 55 insertions, 0 deletions
diff --git a/root/$mmm/plugins/sass/converts: text$moonscript -> table.moon b/root/$mmm/plugins/sass/converts: text$moonscript -> table.moon
new file mode 100644
index 0000000..e353c53
--- /dev/null
+++ b/root/$mmm/plugins/sass/converts: text$moonscript -> table.moon
@@ -0,0 +1,55 @@
+if MODE == 'CLIENT'
+ return {}
+
+posix = require 'posix'
+
+{
+ {
+ inp: 'text/x-scss'
+ out: 'text/css'
+ cost: 1
+ transform: (content) =>
+ r0, w0 = posix.pipe!
+ r1, w1 = posix.pipe!
+ r2, w2 = posix.pipe!
+
+ pid = assert posix.fork!
+ if pid == 0
+ posix.close w0
+ posix.close r1
+ posix.close r2
+
+ posix.dup2 r0, posix.fileno io.stdin
+ posix.dup2 w1, posix.fileno io.stdout
+ posix.dup2 w2, posix.fileno io.stderr
+
+ posix.close r0
+ posix.close w1
+ posix.close w2
+
+ err = assert posix.execp 'sassc', '-s'
+ posix._exit err
+ return
+ else
+ posix.close r0
+ posix.close w1
+ posix.close w2
+
+ posix.write w0, content
+ posix.close w0
+
+ _, _, status = posix.wait pid
+
+ out = if status == 0 then r1 else r2
+ out = assert posix.fdopen out, 'r'
+ out = out\read 'a'
+
+ posix.close r1
+ posix.close r2
+
+ if status == 0
+ out
+ else
+ error out
+ }
+}