comparison .cms/lib/codemirror/mode/crystal/index.html @ 0:78edf6b517a0 draft

24.10
author Coffee CMS <info@coffee-cms.ru>
date Fri, 11 Oct 2024 22:40:23 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:78edf6b517a0
1 <!doctype html>
2
3 <title>CodeMirror: Crystal mode</title>
4 <meta charset="utf-8"/>
5 <link rel=stylesheet href="../../doc/docs.css">
6
7 <link rel="stylesheet" href="../../lib/codemirror.css">
8 <script src="../../lib/codemirror.js"></script>
9 <script src="../../addon/edit/matchbrackets.js"></script>
10 <script src="crystal.js"></script>
11 <style>
12 .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
13 .cm-s-default span.cm-arrow { color: red; }
14 </style>
15
16 <div id=nav>
17 <a href="https://codemirror.net/5"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png" alt=""></a>
18
19 <ul>
20 <li><a href="../../index.html">Home</a>
21 <li><a href="../../doc/manual.html">Manual</a>
22 <li><a href="https://github.com/codemirror/codemirror5">Code</a>
23 </ul>
24 <ul>
25 <li><a href="../index.html">Language modes</a>
26 <li><a class=active href="#">Crystal</a>
27 </ul>
28 </div>
29
30 <article>
31 <h2>Crystal mode</h2>
32 <form><textarea id="code" name="code">
33 # Features of Crystal
34 # - Ruby-inspired syntax.
35 # - Statically type-checked but without having to specify the type of variables or method arguments.
36 # - Be able to call C code by writing bindings to it in Crystal.
37 # - Have compile-time evaluation and generation of code, to avoid boilerplate code.
38 # - Compile to efficient native code.
39
40 # A very basic HTTP server
41 require "http/server"
42
43 server = HTTP::Server.new(8080) do |request|
44 HTTP::Response.ok "text/plain", "Hello world, got #{request.path}!"
45 end
46
47 puts "Listening on http://0.0.0.0:8080"
48 server.listen
49
50 module Foo
51 abstract def abstract_method : String
52
53 @[AlwaysInline]
54 def with_foofoo
55 with Foo.new(self) yield
56 end
57
58 struct Foo
59 def initialize(@foo : ::Foo)
60 end
61
62 def hello_world
63 @foo.abstract_method
64 end
65 end
66 end
67
68 class Bar
69 include Foo
70
71 @@foobar = 12345
72
73 def initialize(@bar : Int32)
74 end
75
76 macro alias_method(name, method)
77 def {{ name }}(*args)
78 {{ method }}(*args)
79 end
80 end
81
82 def a_method
83 "Hello, World"
84 end
85
86 alias_method abstract_method, a_method
87
88 def show_instance_vars : Nil
89 {% for var in @type.instance_vars %}
90 puts "@{{ var }} = #{ @{{ var }} }"
91 {% end %}
92 end
93 end
94
95 class Baz &lt; Bar; end
96
97 lib LibC
98 fun c_puts = "puts"(str : Char*) : Int
99 end
100
101 baz = Baz.new(100)
102 baz.show_instance_vars
103 baz.with_foofoo do
104 LibC.c_puts hello_world
105 end
106 </textarea></form>
107 <script>
108 var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
109 mode: "text/x-crystal",
110 matchBrackets: true,
111 indentUnit: 2
112 });
113 </script>
114
115 <p><strong>MIME types defined:</strong> <code>text/x-crystal</code>.</p>
116 </article>