1
0
Fork 0
mirror of https://github.com/janickiy/yii2-nomer synced 2025-03-09 15:39:59 +00:00
yii2-nomer/web/metronic/global/plugins/codemirror/mode/dylan/index.html
2020-02-05 06:34:26 +03:00

793 lines
No EOL
258 KiB
HTML

<!doctype html>
<title>CodeMirror: Dylan mode</title>
<meta charset="utf-8" />
<link rel=stylesheet href="../../doc/docs.css">
<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<script src="../../addon/comment/continuecomment.js"></script>
<script src="../../addon/comment/comment.js"></script>
<script src="dylan.js"></script>
<style type="text/css">
.CodeMirror {
border-top: 1px solid black;
border-bottom: 1px solid black;
}
</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="#">Dylan</a>
</ul>
</div>
<article>
<h2>Dylan mode</h2>
<div>
<textarea id="code" name="code"> Module: locators-internals Synopsis: Abstract modeling of locations Author: Andy Armstrong Copyright: Original Code is Copyright (c) 1995-2004 Functional Objects, Inc. All rights reserved. License: See License.txt in this distribution for details.
Warranty: Distributed WITHOUT WARRANTY OF ANY KIND define open generic locator-server (locator ::
<locator>) => (server :: false-or(
<server-locator>)); define open generic locator-host (locator ::
<locator>) => (host :: false-or(
<string>)); define open generic locator-volume (locator ::
<locator>) => (volume :: false-or(
<string>)); define open generic locator-directory (locator ::
<locator>) => (directory :: false-or(
<directory-locator>)); define open generic locator-relative? (locator ::
<locator>) => (relative? ::
<boolean>); define open generic locator-path (locator ::
<locator>) => (path ::
<sequence>); define open generic locator-base (locator ::
<locator>) => (base :: false-or(
<string>)); define open generic locator-extension (locator ::
<locator>) => (extension :: false-or(
<string>)); /// Locator classes define open abstract class
<directory-locator> (
<physical-locator>) end class
<directory-locator>; define open abstract class
<file-locator> (
<physical-locator>) end class
<file-locator>; define method as (class ==
<directory-locator>, string ::
<string>) => (locator ::
<directory-locator>) as(
<native-directory-locator>, string) end method as; define method make (class ==
<directory-locator>, #key server :: false-or(
<server-locator>) = #f, path ::
<sequence> = #[], relative? ::
<boolean> = #f, name :: false-or(
<string>) = #f) => (locator ::
<directory-locator>) make(
<native-directory-locator>, server: server, path: path, relative?: relative?, name: name) end method make; define method as (class ==
<file-locator>, string ::
<string>) => (locator ::
<file-locator>) as(
<native-file-locator>, string) end method as; define method make (class ==
<file-locator>, #key directory :: false-or(
<directory-locator>) = #f, base :: false-or(
<string>) = #f, extension :: false-or(
<string>) = #f, name :: false-or(
<string>) = #f) => (locator ::
<file-locator>) make(
<native-file-locator>, directory: directory, base: base, extension: extension, name: name)
end method make; /// Locator coercion //---*** andrewa: This caching
scheme doesn't work yet, so disable it. define constant $cache-locators?
= #f; define constant $cache-locator-strings? = #f; define constant
$locator-to-string-cache = make(
<object-table>, weak: #"key"); define constant $string-to-locator-cache = make(
<string-table>, weak: #"value"); define open generic locator-as-string (class
:: subclass(
<string>), locator ::
<locator>) => (string ::
<string>); define open generic string-as-locator (class
:: subclass(
<locator>), string ::
<string>) => (locator ::
<locator>); define sealed sideways method as
(class :: subclass(
<string>), locator ::
<locator>) => (string ::
<string>) let string = element($locator-to-string-cache,
locator, default: #f);
if (string) as(class,
string) else let string
= locator-as-string(class,
locator); if ($cache-locator-strings?)
element($locator-to-string-cache,
locator) := string;
else string end end
end method as; define
sealed sideways method
as (class :: subclass(
<locator>), string ::
<string>) => (locator ::
<locator>) let locator
= element($string-to-locator-cache,
string,
default:
#f); if
(instance?(locator,
class))
locator
else let
locator
= string-as-locator(class,
string);
if ($cache-locators?)
element($string-to-locator-cache,
string)
:= locator;
else locator
end end
end method
as; ///
Locator
conditions
define
class
<locator-error>
(
<format-string-condition>,
<error>)
end
class
<locator-error>;
define
function
locator-error
(format-string
::
<string>,
#rest
format-arguments)
error(make(
<locator-error>,
format-string:
format-string,
format-arguments:
format-arguments))
end
function
locator-error;
///
Useful
locator
protocols
define
open
generic
locator-test
(locator
::
<directory-locator>)
=>
(test
::
<function>);
define
method
locator-test
(locator
::
<directory-locator>)
=>
(test
::
<function>)
\=
end
method
locator-test;
define
open
generic
locator-might-have-links?
(locator
::
<directory-locator>)
=>
(links?
::
<boolean>);
define
method
locator-might-have-links?
(locator
::
<directory-locator>)
=>
(links?
::
singleton(#f))
#f
end
method
locator-might-have-links?;
define
method
locator-relative?
(locator
::
<file-locator>)
=>
(relative?
::
<boolean>)
let
directory
=
locator.locator-directory;
~directory
|
directory.locator-relative?
end
method
locator-relative?;
define
method
current-directory-locator?
(locator
::
<directory-locator>)
=>
(current-directory?
::
<boolean>)
locator.locator-relative?
&
locator.locator-path
=
#[#"self"]
end
method
current-directory-locator?;
define
method
locator-directory
(locator
::
<directory-locator>)
=>
(parent
::
false-or(
<directory-locator>))
let
path
=
locator.locator-path;
unless
(empty?(path))
make(object-class(locator),
server:
locator.locator-server,
path:
copy-sequence(path,
end:
path.size
-
1),
relative?:
locator.locator-relative?)
end
end
method
locator-directory;
///
Simplify
locator
define
open
generic
simplify-locator
(locator
::
<physical-locator>)
=>
(simplified-locator
::
<physical-locator>);
define
method
simplify-locator
(locator
::
<directory-locator>)
=>
(simplified-locator
::
<directory-locator>)
let
path
=
locator.locator-path;
let
relative?
=
locator.locator-relative?;
let
resolve-parent?
=
~locator.locator-might-have-links?;
let
simplified-path
=
simplify-path(path,
resolve-parent?:
resolve-parent?,
relative?:
relative?);
if
(path
~=
simplified-path)
make(object-class(locator),
server:
locator.locator-server,
path:
simplified-path,
relative?:
locator.locator-relative?)
else
locator
end
end
method
simplify-locator;
define
method
simplify-locator
(locator
::
<file-locator>)
=>
(simplified-locator
::
<file-locator>)
let
directory
=
locator.locator-directory;
let
simplified-directory
=
directory
&
simplify-locator(directory);
if
(directory
~=
simplified-directory)
make(object-class(locator),
directory:
simplified-directory,
base:
locator.locator-base,
extension:
locator.locator-extension)
else
locator
end
end
method
simplify-locator;
///
Subdirectory
locator
define
open
generic
subdirectory-locator
(locator
::
<directory-locator>,
#rest
sub-path)
=>
(subdirectory
::
<directory-locator>);
define
method
subdirectory-locator
(locator
::
<directory-locator>,
#rest
sub-path)
=>
(subdirectory
::
<directory-locator>)
let
old-path
=
locator.locator-path;
let
new-path
=
concatenate-as(
<simple-object-vector>,
old-path,
sub-path);
make(object-class(locator),
server:
locator.locator-server,
path:
new-path,
relative?:
locator.locator-relative?)
end
method
subdirectory-locator;
///
Relative
locator
define
open
generic
relative-locator
(locator
::
<physical-locator>,
from-locator
::
<physical-locator>)
=>
(relative-locator
::
<physical-locator>);
define
method
relative-locator
(locator
::
<directory-locator>,
from-locator
::
<directory-locator>)
=>
(relative-locator
::
<directory-locator>)
let
path
=
locator.locator-path;
let
from-path
=
from-locator.locator-path;
case
~locator.locator-relative?
&
from-locator.locator-relative?
=>
locator-error
("Cannot
find
relative
path
of
absolute
locator
%=
from
relative
locator
%=",
locator,
from-locator);
locator.locator-server
~=
from-locator.locator-server
=>
locator;
path
=
from-path
=>
make(object-class(locator),
path:
vector(#"self"),
relative?:
#t);
otherwise
=>
make(object-class(locator),
path:
relative-path(path,
from-path,
test:
locator.locator-test),
relative?:
#t);
end
end
method
relative-locator;
define
method
relative-locator
(locator
::
<file-locator>,
from-directory
::
<directory-locator>)
=>
(relative-locator
::
<file-locator>)
let
directory
=
locator.locator-directory;
let
relative-directory
=
directory
&
relative-locator(directory,
from-directory);
if
(relative-directory
~=
directory)
simplify-locator
(make(object-class(locator),
directory:
relative-directory,
base:
locator.locator-base,
extension:
locator.locator-extension))
else
locator
end
end
method
relative-locator;
define
method
relative-locator
(locator
::
<physical-locator>,
from-locator
::
<file-locator>)
=>
(relative-locator
::
<physical-locator>)
let
from-directory
=
from-locator.locator-directory;
case
from-directory
=>
relative-locator(locator,
from-directory);
~locator.locator-relative?
=>
locator-error
("Cannot
find
relative
path
of
absolute
locator
%=
from
relative
locator
%=",
locator,
from-locator);
otherwise
=>
locator;
end
end
method
relative-locator;
///
Merge
locators
define
open
generic
merge-locators
(locator
::
<physical-locator>,
from-locator
::
<physical-locator>)
=>
(merged-locator
::
<physical-locator>);
///
Merge
locators
define
method
merge-locators
(locator
::
<directory-locator>,
from-locator
::
<directory-locator>)
=>
(merged-locator
::
<directory-locator>)
if
(locator.locator-relative?)
let
path
=
concatenate(from-locator.locator-path,
locator.locator-path);
simplify-locator
(make(object-class(locator),
server:
from-locator.locator-server,
path:
path,
relative?:
from-locator.locator-relative?))
else
locator
end
end
method
merge-locators;
define
method
merge-locators
(locator
::
<file-locator>,
from-locator
::
<directory-locator>)
=>
(merged-locator
::
<file-locator>)
let
directory
=
locator.locator-directory;
let
merged-directory
=
if
(directory)
merge-locators(directory,
from-locator)
else
simplify-locator(from-locator)
end;
if
(merged-directory
~=
directory)
make(object-class(locator),
directory:
merged-directory,
base:
locator.locator-base,
extension:
locator.locator-extension)
else
locator
end
end
method
merge-locators;
define
method
merge-locators
(locator
::
<physical-locator>,
from-locator
::
<file-locator>)
=>
(merged-locator
::
<physical-locator>)
let
from-directory
=
from-locator.locator-directory;
if
(from-directory)
merge-locators(locator,
from-directory)
else
locator
end
end
method
merge-locators;
///
Locator
protocols
define
sideways
method
supports-open-locator?
(locator
::
<file-locator>)
=>
(openable?
::
<boolean>)
~locator.locator-relative?
end
method
supports-open-locator?;
define
sideways
method
open-locator
(locator
::
<file-locator>,
#rest
keywords,
#key,
#all-keys)
=>
(stream
::
<stream>)
apply(open-file-stream,
locator,
keywords)
end
method
open-locator;
</textarea>
</div>
<script>
var editor = CodeMirror.fromTextArea(document.getElementById("code"),
{
mode: "text/x-dylan",
lineNumbers: true,
matchBrackets: true,
continueComments: "Enter",
extraKeys:
{
"Ctrl-Q": "toggleComment"
},
tabMode: "indent",
indentUnit: 2
});
</script>
<p>
<strong>MIME types defined:</strong> <code>text/x-dylan</code>.</p>
</article>