summaryrefslogtreecommitdiff
path: root/public/vendor/codemirror/mode/eiffel/index.html
blob: 108a71bec8e997dd90bac3e2158df670e5b4d7b4 (plain)
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
<!doctype html>

<title>CodeMirror: Eiffel mode</title>
<meta charset="utf-8"/>
<link rel=stylesheet href="../../doc/docs.css">

<link rel="stylesheet" href="../../lib/codemirror.css">
<link rel="stylesheet" href="../../theme/neat.css">
<script src="../../lib/codemirror.js"></script>
<script src="eiffel.js"></script>
<style>
      .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
      .cm-s-default span.cm-arrow { color: red; }
    </style>
<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>

  <ul>
    <li><a href="../../index.html">Home</a>
    <li><a href="../../doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="../index.html">Language modes</a>
    <li><a class=active href="#">Eiffel</a>
  </ul>
</div>

<article>
<h2>Eiffel mode</h2>
<form><textarea id="code" name="code">
note
    description: "[
        Project-wide universal properties.
        This class is an ancestor to all developer-written classes.
        ANY may be customized for individual projects or teams.
        ]"

    library: "Free implementation of ELKS library"
    status: "See notice at end of class."
    legal: "See notice at end of class."
    date: "$Date: 2013-01-25 11:49:00 -0800 (Fri, 25 Jan 2013) $"
    revision: "$Revision: 712 $"

class
    ANY

feature -- Customization

feature -- Access

    generator: STRING
            -- Name of current object's generating class
            -- (base class of the type of which it is a direct instance)
        external
            "built_in"
        ensure
            generator_not_void: Result /= Void
            generator_not_empty: not Result.is_empty
        end

    generating_type: TYPE [detachable like Current]
            -- Type of current object
            -- (type of which it is a direct instance)
        do
            Result := {detachable like Current}
        ensure
            generating_type_not_void: Result /= Void
        end

feature -- Status report

    conforms_to (other: ANY): BOOLEAN
            -- Does type of current object conform to type
            -- of `other' (as per Eiffel: The Language, chapter 13)?
        require
            other_not_void: other /= Void
        external
            "built_in"
        end

    same_type (other: ANY): BOOLEAN
            -- Is type of current object identical to type of `other'?
        require
            other_not_void: other /= Void
        external
            "built_in"
        ensure
            definition: Result = (conforms_to (other) and
                                        other.conforms_to (Current))
        end

feature -- Comparison

    is_equal (other: like Current): BOOLEAN
            -- Is `other' attached to an object considered
            -- equal to current object?
        require
            other_not_void: other /= Void
        external
            "built_in"
        ensure
            symmetric: Result implies other ~ Current
            consistent: standard_is_equal (other) implies Result
        end

    frozen standard_is_equal (other: like Current): BOOLEAN
            -- Is `other' attached to an object of the same type
            -- as current object, and field-by-field identical to it?
        require
            other_not_void: other /= Void
        external
            "built_in"
        ensure
            same_type: Result implies same_type (other)
            symmetric: Result implies other.standard_is_equal (Current)
        end

    frozen equal (a: detachable ANY; b: like a): BOOLEAN
            -- Are `a' and `b' either both void or attached
            -- to objects considered equal?
        do
            if a = Void then
                Result := b = Void
            else
                Result := b /= Void and then
                            a.is_equal (b)
            end
        ensure
            definition: Result = (a = Void and b = Void) or else
                        ((a /= Void and b /= Void) and then
                        a.is_equal (b))
        end

    frozen standard_equal (a: detachable ANY; b: like a): BOOLEAN
            -- Are `a' and `b' either both void or attached to
            -- field-by-field identical objects of the same type?
            -- Always uses default object comparison criterion.
        do
            if a = Void then
                Result := b = Void
            else
                Result := b /= Void and then
                            a.standard_is_equal (b)
            end
        ensure
            definition: Result = (a = Void and b = Void) or else
                        ((a /= Void and b /= Void) and then
                        a.standard_is_equal (b))
        end

    frozen is_deep_equal (other: like Current): BOOLEAN
            -- Are `Current' and `other' attached to isomorphic object structures?
        require
            other_not_void: other /= Void
        external
            "built_in"
        ensure
            shallow_implies_deep: standard_is_equal (other) implies Result
            same_type: Result implies same_type (other)
            symmetric: Result implies other.is_deep_equal (Current)
        end

    frozen deep_equal (a: detachable ANY; b: like a): BOOLEAN
            -- Are `a' and `b' either both void
            -- or attached to isomorphic object structures?
        do
            if a = Void then
                Result := b = Void
            else
                Result := b /= Void and then a.is_deep_equal (b)
            end
        ensure
            shallow_implies_deep: standard_equal (a, b) implies Result
            both_or_none_void: (a = Void) implies (Result = (b = Void))
            same_type: (Result and (a /= Void)) implies (b /= Void and then a.same_type (b))
            symmetric: Result implies deep_equal (b, a)
        end

feature -- Duplication

    frozen twin: like Current
            -- New object equal to `Current'
            -- `twin' calls `copy'; to change copying/twinning semantics, redefine `copy'.
        external
            "built_in"
        ensure
            twin_not_void: Result /= Void
            is_equal: Result ~ Current
        end

    copy (other: like Current)
            -- Update current object using fields of object attached
            -- to `other', so as to yield equal objects.
        require
            other_not_void: other /= Void
            type_identity: same_type (other)
        external
            "built_in"
        ensure
            is_equal: Current ~ other
        end

    frozen standard_copy (other: like Current)
            -- Copy every field of `other' onto corresponding field
            -- of current object.
        require
            other_not_void: other /= Void
            type_identity: same_type (other)
        external
            "built_in"
        ensure
            is_standard_equal: standard_is_equal (other)
        end

    frozen clone (other: detachable ANY): like other
            -- Void if `other' is void; otherwise new object
            -- equal to `other'
            --
            -- For non-void `other', `clone' calls `copy';
            -- to change copying/cloning semantics, redefine `copy'.
        obsolete
            "Use `twin' instead."
        do
            if other /= Void then
                Result := other.twin
            end
        ensure
            equal: Result ~ other
        end

    frozen standard_clone (other: detachable ANY): like other
            -- Void if `other' is void; otherwise new object
            -- field-by-field identical to `other'.
            -- Always uses default copying semantics.
        obsolete
            "Use `standard_twin' instead."
        do
            if other /= Void then
                Result := other.standard_twin
            end
        ensure
            equal: standard_equal (Result, other)
        end

    frozen standard_twin: like Current
            -- New object field-by-field identical to `other'.
            -- Always uses default copying semantics.
        external
            "built_in"
        ensure
            standard_twin_not_void: Result /= Void
            equal: standard_equal (Result, Current)
        end

    frozen deep_twin: like Current
            -- New object structure recursively duplicated from Current.
        external
            "built_in"
        ensure
            deep_twin_not_void: Result /= Void
            deep_equal: deep_equal (Current, Result)
        end

    frozen deep_clone (other: detachable ANY): like other
            -- Void if `other' is void: otherwise, new object structure
            -- recursively duplicated from the one attached to `other'
        obsolete
            "Use `deep_twin' instead."
        do
            if other /= Void then
                Result := other.deep_twin
            end
        ensure
            deep_equal: deep_equal (other, Result)
        end

    frozen deep_copy (other: like Current)
            -- Effect equivalent to that of:
            --      `copy' (`other' . `deep_twin')
        require
            other_not_void: other /= Void
        do
            copy (other.deep_twin)
        ensure
            deep_equal: deep_equal (Current, other)
        end

feature {NONE} -- Retrieval

    frozen internal_correct_mismatch
            -- Called from runtime to perform a proper dynamic dispatch on `correct_mismatch'
            -- from MISMATCH_CORRECTOR.
        local
            l_msg: STRING
            l_exc: EXCEPTIONS
        do
            if attached {MISMATCH_CORRECTOR} Current as l_corrector then
                l_corrector.correct_mismatch
            else
                create l_msg.make_from_string ("Mismatch: ")
                create l_exc
                l_msg.append (generating_type.name)
                l_exc.raise_retrieval_exception (l_msg)
            end
        end

feature -- Output

    io: STD_FILES
            -- Handle to standard file setup
        once
            create Result
            Result.set_output_default
        ensure
            io_not_void: Result /= Void
        end

    out: STRING
            -- New string containing terse printable representation
            -- of current object
        do
            Result := tagged_out
        ensure
            out_not_void: Result /= Void
        end

    frozen tagged_out: STRING
            -- New string containing terse printable representation
            -- of current object
        external
            "built_in"
        ensure
            tagged_out_not_void: Result /= Void
        end

    print (o: detachable ANY)
            -- Write terse external representation of `o'
            -- on standard output.
        do
            if o /= Void then
                io.put_string (o.out)
            end
        end

feature -- Platform

    Operating_environment: OPERATING_ENVIRONMENT
            -- Objects available from the operating system
        once
            create Result
        ensure
            operating_environment_not_void: Result /= Void
        end

feature {NONE} -- Initialization

    default_create
            -- Process instances of classes with no creation clause.
            -- (Default: do nothing.)
        do
        end

feature -- Basic operations

    default_rescue
            -- Process exception for routines with no Rescue clause.
            -- (Default: do nothing.)
        do
        end

    frozen do_nothing
            -- Execute a null action.
        do
        end

    frozen default: detachable like Current
            -- Default value of object's type
        do
        end

    frozen default_pointer: POINTER
            -- Default value of type `POINTER'
            -- (Avoid the need to write `p'.`default' for
            -- some `p' of type `POINTER'.)
        do
        ensure
            -- Result = Result.default
        end

    frozen as_attached: attached like Current
            -- Attached version of Current
            -- (Can be used during transitional period to convert
            -- non-void-safe classes to void-safe ones.)
        do
            Result := Current
        end

invariant
    reflexive_equality: standard_is_equal (Current)
    reflexive_conformance: conforms_to (Current)

note
    copyright: "Copyright (c) 1984-2012, Eiffel Software and others"
    license:   "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
    source: "[
            Eiffel Software
            5949 Hollister Ave., Goleta, CA 93117 USA
            Telephone 805-685-1006, Fax 805-685-6869
            Website http://www.eiffel.com
            Customer support http://support.eiffel.com
        ]"

end

</textarea></form>
    <script>
      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
        mode: "text/x-eiffel",
        indentUnit: 4,
        lineNumbers: true,
        theme: "neat"
      });
    </script>

    <p><strong>MIME types defined:</strong> <code>text/x-eiffel</code>.</p>
 
 <p> Created by <a href="https://github.com/ynh">YNH</a>.</p>
  </article>