annotate .cms/lib/codemirror/mode/crystal/index.html @ 1:1d486627aa1e draft default tip

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