leinify
This commit is contained in:
parent
d6052bf2b8
commit
425c021fa1
25
.gitignore
vendored
25
.gitignore
vendored
|
@ -1,16 +1,19 @@
|
||||||
|
/target
|
||||||
|
/classes
|
||||||
|
/checkouts
|
||||||
|
profiles.clj
|
||||||
pom.xml
|
pom.xml
|
||||||
pom.xml.asc
|
pom.xml.asc
|
||||||
*.jar
|
*.jar
|
||||||
*.class
|
*.class
|
||||||
/lib/
|
/.lein-*
|
||||||
/classes/
|
/.nrepl-port
|
||||||
/target/
|
/.prepl-port
|
||||||
/checkouts/
|
.hgignore
|
||||||
.lein-deps-sum
|
.hg/
|
||||||
.lein-repl-history
|
.clj-condo/
|
||||||
.lein-plugins/
|
.calva/
|
||||||
.lein-failures
|
.lsp/
|
||||||
.nrepl-port
|
|
||||||
.cpcache/
|
|
||||||
.clj-kondo/
|
.clj-kondo/
|
||||||
.lsp/
|
.cpcache/
|
||||||
|
**/.DS_Store
|
||||||
|
|
24
CHANGELOG.md
Normal file
24
CHANGELOG.md
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# Change Log
|
||||||
|
All notable changes to this project will be documented in this file. This change log follows the conventions of [keepachangelog.com](http://keepachangelog.com/).
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
### Changed
|
||||||
|
- Add a new arity to `make-widget-async` to provide a different widget shape.
|
||||||
|
|
||||||
|
## [0.1.1] - 2021-10-23
|
||||||
|
### Changed
|
||||||
|
- Documentation on how to make the widgets.
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
- `make-widget-sync` - we're all async, all the time.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fixed widget maker to keep working when daylight savings switches over.
|
||||||
|
|
||||||
|
## 0.1.0 - 2021-10-23
|
||||||
|
### Added
|
||||||
|
- Files from the new template.
|
||||||
|
- Widget maker public API - `make-widget-sync`.
|
||||||
|
|
||||||
|
[Unreleased]: https://sourcehost.site/your-name/cludus/compare/0.1.1...HEAD
|
||||||
|
[0.1.1]: https://sourcehost.site/your-name/cludus/compare/0.1.0...0.1.1
|
954
LICENSE
954
LICENSE
|
@ -1,674 +1,280 @@
|
||||||
GNU GENERAL PUBLIC LICENSE
|
Eclipse Public License - v 2.0
|
||||||
Version 3, 29 June 2007
|
|
||||||
|
THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
|
||||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
|
||||||
of this license document, but changing it is not allowed.
|
|
||||||
|
1. DEFINITIONS
|
||||||
Preamble
|
|
||||||
|
"Contribution" means:
|
||||||
The GNU General Public License is a free, copyleft license for
|
|
||||||
software and other kinds of works.
|
a) in the case of the initial Contributor, the initial content
|
||||||
|
Distributed under this Agreement, and
|
||||||
The licenses for most software and other practical works are designed
|
|
||||||
to take away your freedom to share and change the works. By contrast,
|
b) in the case of each subsequent Contributor:
|
||||||
the GNU General Public License is intended to guarantee your freedom to
|
i) changes to the Program, and
|
||||||
share and change all versions of a program--to make sure it remains free
|
ii) additions to the Program;
|
||||||
software for all its users. We, the Free Software Foundation, use the
|
where such changes and/or additions to the Program originate from
|
||||||
GNU General Public License for most of our software; it applies also to
|
and are Distributed by that particular Contributor. A Contribution
|
||||||
any other work released this way by its authors. You can apply it to
|
"originates" from a Contributor if it was added to the Program by
|
||||||
your programs, too.
|
such Contributor itself or anyone acting on such Contributor's behalf.
|
||||||
|
Contributions do not include changes or additions to the Program that
|
||||||
When we speak of free software, we are referring to freedom, not
|
are not Modified Works.
|
||||||
price. Our General Public Licenses are designed to make sure that you
|
|
||||||
have the freedom to distribute copies of free software (and charge for
|
"Contributor" means any person or entity that Distributes the Program.
|
||||||
them if you wish), that you receive source code or can get it if you
|
|
||||||
want it, that you can change the software or use pieces of it in new
|
"Licensed Patents" mean patent claims licensable by a Contributor which
|
||||||
free programs, and that you know you can do these things.
|
are necessarily infringed by the use or sale of its Contribution alone
|
||||||
|
or when combined with the Program.
|
||||||
To protect your rights, we need to prevent others from denying you
|
|
||||||
these rights or asking you to surrender the rights. Therefore, you have
|
"Program" means the Contributions Distributed in accordance with this
|
||||||
certain responsibilities if you distribute copies of the software, or if
|
Agreement.
|
||||||
you modify it: responsibilities to respect the freedom of others.
|
|
||||||
|
"Recipient" means anyone who receives the Program under this Agreement
|
||||||
For example, if you distribute copies of such a program, whether
|
or any Secondary License (as applicable), including Contributors.
|
||||||
gratis or for a fee, you must pass on to the recipients the same
|
|
||||||
freedoms that you received. You must make sure that they, too, receive
|
"Derivative Works" shall mean any work, whether in Source Code or other
|
||||||
or can get the source code. And you must show them these terms so they
|
form, that is based on (or derived from) the Program and for which the
|
||||||
know their rights.
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship.
|
||||||
Developers that use the GNU GPL protect your rights with two steps:
|
|
||||||
(1) assert copyright on the software, and (2) offer you this License
|
"Modified Works" shall mean any work in Source Code or other form that
|
||||||
giving you legal permission to copy, distribute and/or modify it.
|
results from an addition to, deletion from, or modification of the
|
||||||
|
contents of the Program, including, for purposes of clarity any new file
|
||||||
For the developers' and authors' protection, the GPL clearly explains
|
in Source Code form that contains any contents of the Program. Modified
|
||||||
that there is no warranty for this free software. For both users' and
|
Works shall not include works that contain only declarations,
|
||||||
authors' sake, the GPL requires that modified versions be marked as
|
interfaces, types, classes, structures, or files of the Program solely
|
||||||
changed, so that their problems will not be attributed erroneously to
|
in each case in order to link to, bind by name, or subclass the Program
|
||||||
authors of previous versions.
|
or Modified Works thereof.
|
||||||
|
|
||||||
Some devices are designed to deny users access to install or run
|
"Distribute" means the acts of a) distributing or b) making available
|
||||||
modified versions of the software inside them, although the manufacturer
|
in any manner that enables the transfer of a copy.
|
||||||
can do so. This is fundamentally incompatible with the aim of
|
|
||||||
protecting users' freedom to change the software. The systematic
|
"Source Code" means the form of a Program preferred for making
|
||||||
pattern of such abuse occurs in the area of products for individuals to
|
modifications, including but not limited to software source code,
|
||||||
use, which is precisely where it is most unacceptable. Therefore, we
|
documentation source, and configuration files.
|
||||||
have designed this version of the GPL to prohibit the practice for those
|
|
||||||
products. If such problems arise substantially in other domains, we
|
"Secondary License" means either the GNU General Public License,
|
||||||
stand ready to extend this provision to those domains in future versions
|
Version 2.0, or any later versions of that license, including any
|
||||||
of the GPL, as needed to protect the freedom of users.
|
exceptions or additional permissions as identified by the initial
|
||||||
|
Contributor.
|
||||||
Finally, every program is threatened constantly by software patents.
|
|
||||||
States should not allow patents to restrict development and use of
|
2. GRANT OF RIGHTS
|
||||||
software on general-purpose computers, but in those that do, we wish to
|
|
||||||
avoid the special danger that patents applied to a free program could
|
a) Subject to the terms of this Agreement, each Contributor hereby
|
||||||
make it effectively proprietary. To prevent this, the GPL assures that
|
grants Recipient a non-exclusive, worldwide, royalty-free copyright
|
||||||
patents cannot be used to render the program non-free.
|
license to reproduce, prepare Derivative Works of, publicly display,
|
||||||
|
publicly perform, Distribute and sublicense the Contribution of such
|
||||||
The precise terms and conditions for copying, distribution and
|
Contributor, if any, and such Derivative Works.
|
||||||
modification follow.
|
|
||||||
|
b) Subject to the terms of this Agreement, each Contributor hereby
|
||||||
TERMS AND CONDITIONS
|
grants Recipient a non-exclusive, worldwide, royalty-free patent
|
||||||
|
license under Licensed Patents to make, use, sell, offer to sell,
|
||||||
0. Definitions.
|
import and otherwise transfer the Contribution of such Contributor,
|
||||||
|
if any, in Source Code or other form. This patent license shall
|
||||||
"This License" refers to version 3 of the GNU General Public License.
|
apply to the combination of the Contribution and the Program if, at
|
||||||
|
the time the Contribution is added by the Contributor, such addition
|
||||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
of the Contribution causes such combination to be covered by the
|
||||||
works, such as semiconductor masks.
|
Licensed Patents. The patent license shall not apply to any other
|
||||||
|
combinations which include the Contribution. No hardware per se is
|
||||||
"The Program" refers to any copyrightable work licensed under this
|
licensed hereunder.
|
||||||
License. Each licensee is addressed as "you". "Licensees" and
|
|
||||||
"recipients" may be individuals or organizations.
|
c) Recipient understands that although each Contributor grants the
|
||||||
|
licenses to its Contributions set forth herein, no assurances are
|
||||||
To "modify" a work means to copy from or adapt all or part of the work
|
provided by any Contributor that the Program does not infringe the
|
||||||
in a fashion requiring copyright permission, other than the making of an
|
patent or other intellectual property rights of any other entity.
|
||||||
exact copy. The resulting work is called a "modified version" of the
|
Each Contributor disclaims any liability to Recipient for claims
|
||||||
earlier work or a work "based on" the earlier work.
|
brought by any other entity based on infringement of intellectual
|
||||||
|
property rights or otherwise. As a condition to exercising the
|
||||||
A "covered work" means either the unmodified Program or a work based
|
rights and licenses granted hereunder, each Recipient hereby
|
||||||
on the Program.
|
assumes sole responsibility to secure any other intellectual
|
||||||
|
property rights needed, if any. For example, if a third party
|
||||||
To "propagate" a work means to do anything with it that, without
|
patent license is required to allow Recipient to Distribute the
|
||||||
permission, would make you directly or secondarily liable for
|
Program, it is Recipient's responsibility to acquire that license
|
||||||
infringement under applicable copyright law, except executing it on a
|
before distributing the Program.
|
||||||
computer or modifying a private copy. Propagation includes copying,
|
|
||||||
distribution (with or without modification), making available to the
|
d) Each Contributor represents that to its knowledge it has
|
||||||
public, and in some countries other activities as well.
|
sufficient copyright rights in its Contribution, if any, to grant
|
||||||
|
the copyright license set forth in this Agreement.
|
||||||
To "convey" a work means any kind of propagation that enables other
|
|
||||||
parties to make or receive copies. Mere interaction with a user through
|
e) Notwithstanding the terms of any Secondary License, no
|
||||||
a computer network, with no transfer of a copy, is not conveying.
|
Contributor makes additional grants to any Recipient (other than
|
||||||
|
those set forth in this Agreement) as a result of such Recipient's
|
||||||
An interactive user interface displays "Appropriate Legal Notices"
|
receipt of the Program under the terms of a Secondary License
|
||||||
to the extent that it includes a convenient and prominently visible
|
(if permitted under the terms of Section 3).
|
||||||
feature that (1) displays an appropriate copyright notice, and (2)
|
|
||||||
tells the user that there is no warranty for the work (except to the
|
3. REQUIREMENTS
|
||||||
extent that warranties are provided), that licensees may convey the
|
|
||||||
work under this License, and how to view a copy of this License. If
|
3.1 If a Contributor Distributes the Program in any form, then:
|
||||||
the interface presents a list of user commands or options, such as a
|
|
||||||
menu, a prominent item in the list meets this criterion.
|
a) the Program must also be made available as Source Code, in
|
||||||
|
accordance with section 3.2, and the Contributor must accompany
|
||||||
1. Source Code.
|
the Program with a statement that the Source Code for the Program
|
||||||
|
is available under this Agreement, and informs Recipients how to
|
||||||
The "source code" for a work means the preferred form of the work
|
obtain it in a reasonable manner on or through a medium customarily
|
||||||
for making modifications to it. "Object code" means any non-source
|
used for software exchange; and
|
||||||
form of a work.
|
|
||||||
|
b) the Contributor may Distribute the Program under a license
|
||||||
A "Standard Interface" means an interface that either is an official
|
different than this Agreement, provided that such license:
|
||||||
standard defined by a recognized standards body, or, in the case of
|
i) effectively disclaims on behalf of all other Contributors all
|
||||||
interfaces specified for a particular programming language, one that
|
warranties and conditions, express and implied, including
|
||||||
is widely used among developers working in that language.
|
warranties or conditions of title and non-infringement, and
|
||||||
|
implied warranties or conditions of merchantability and fitness
|
||||||
The "System Libraries" of an executable work include anything, other
|
for a particular purpose;
|
||||||
than the work as a whole, that (a) is included in the normal form of
|
|
||||||
packaging a Major Component, but which is not part of that Major
|
ii) effectively excludes on behalf of all other Contributors all
|
||||||
Component, and (b) serves only to enable use of the work with that
|
liability for damages, including direct, indirect, special,
|
||||||
Major Component, or to implement a Standard Interface for which an
|
incidental and consequential damages, such as lost profits;
|
||||||
implementation is available to the public in source code form. A
|
|
||||||
"Major Component", in this context, means a major essential component
|
iii) does not attempt to limit or alter the recipients' rights
|
||||||
(kernel, window system, and so on) of the specific operating system
|
in the Source Code under section 3.2; and
|
||||||
(if any) on which the executable work runs, or a compiler used to
|
|
||||||
produce the work, or an object code interpreter used to run it.
|
iv) requires any subsequent distribution of the Program by any
|
||||||
|
party to be under a license that satisfies the requirements
|
||||||
The "Corresponding Source" for a work in object code form means all
|
of this section 3.
|
||||||
the source code needed to generate, install, and (for an executable
|
|
||||||
work) run the object code and to modify the work, including scripts to
|
3.2 When the Program is Distributed as Source Code:
|
||||||
control those activities. However, it does not include the work's
|
|
||||||
System Libraries, or general-purpose tools or generally available free
|
a) it must be made available under this Agreement, or if the
|
||||||
programs which are used unmodified in performing those activities but
|
Program (i) is combined with other material in a separate file or
|
||||||
which are not part of the work. For example, Corresponding Source
|
files made available under a Secondary License, and (ii) the initial
|
||||||
includes interface definition files associated with source files for
|
Contributor attached to the Source Code the notice described in
|
||||||
the work, and the source code for shared libraries and dynamically
|
Exhibit A of this Agreement, then the Program may be made available
|
||||||
linked subprograms that the work is specifically designed to require,
|
under the terms of such Secondary Licenses, and
|
||||||
such as by intimate data communication or control flow between those
|
|
||||||
subprograms and other parts of the work.
|
b) a copy of this Agreement must be included with each copy of
|
||||||
|
the Program.
|
||||||
The Corresponding Source need not include anything that users
|
|
||||||
can regenerate automatically from other parts of the Corresponding
|
3.3 Contributors may not remove or alter any copyright, patent,
|
||||||
Source.
|
trademark, attribution notices, disclaimers of warranty, or limitations
|
||||||
|
of liability ("notices") contained within the Program from any copy of
|
||||||
The Corresponding Source for a work in source code form is that
|
the Program which they Distribute, provided that Contributors may add
|
||||||
same work.
|
their own appropriate notices.
|
||||||
|
|
||||||
2. Basic Permissions.
|
4. COMMERCIAL DISTRIBUTION
|
||||||
|
|
||||||
All rights granted under this License are granted for the term of
|
Commercial distributors of software may accept certain responsibilities
|
||||||
copyright on the Program, and are irrevocable provided the stated
|
with respect to end users, business partners and the like. While this
|
||||||
conditions are met. This License explicitly affirms your unlimited
|
license is intended to facilitate the commercial use of the Program,
|
||||||
permission to run the unmodified Program. The output from running a
|
the Contributor who includes the Program in a commercial product
|
||||||
covered work is covered by this License only if the output, given its
|
offering should do so in a manner which does not create potential
|
||||||
content, constitutes a covered work. This License acknowledges your
|
liability for other Contributors. Therefore, if a Contributor includes
|
||||||
rights of fair use or other equivalent, as provided by copyright law.
|
the Program in a commercial product offering, such Contributor
|
||||||
|
("Commercial Contributor") hereby agrees to defend and indemnify every
|
||||||
You may make, run and propagate covered works that you do not
|
other Contributor ("Indemnified Contributor") against any losses,
|
||||||
convey, without conditions so long as your license otherwise remains
|
damages and costs (collectively "Losses") arising from claims, lawsuits
|
||||||
in force. You may convey covered works to others for the sole purpose
|
and other legal actions brought by a third party against the Indemnified
|
||||||
of having them make modifications exclusively for you, or provide you
|
Contributor to the extent caused by the acts or omissions of such
|
||||||
with facilities for running those works, provided that you comply with
|
Commercial Contributor in connection with its distribution of the Program
|
||||||
the terms of this License in conveying all material for which you do
|
in a commercial product offering. The obligations in this section do not
|
||||||
not control copyright. Those thus making or running the covered works
|
apply to any claims or Losses relating to any actual or alleged
|
||||||
for you must do so exclusively on your behalf, under your direction
|
intellectual property infringement. In order to qualify, an Indemnified
|
||||||
and control, on terms that prohibit them from making any copies of
|
Contributor must: a) promptly notify the Commercial Contributor in
|
||||||
your copyrighted material outside their relationship with you.
|
writing of such claim, and b) allow the Commercial Contributor to control,
|
||||||
|
and cooperate with the Commercial Contributor in, the defense and any
|
||||||
Conveying under any other circumstances is permitted solely under
|
related settlement negotiations. The Indemnified Contributor may
|
||||||
the conditions stated below. Sublicensing is not allowed; section 10
|
participate in any such claim at its own expense.
|
||||||
makes it unnecessary.
|
|
||||||
|
For example, a Contributor might include the Program in a commercial
|
||||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
product offering, Product X. That Contributor is then a Commercial
|
||||||
|
Contributor. If that Commercial Contributor then makes performance
|
||||||
No covered work shall be deemed part of an effective technological
|
claims, or offers warranties related to Product X, those performance
|
||||||
measure under any applicable law fulfilling obligations under article
|
claims and warranties are such Commercial Contributor's responsibility
|
||||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
alone. Under this section, the Commercial Contributor would have to
|
||||||
similar laws prohibiting or restricting circumvention of such
|
defend claims against the other Contributors related to those performance
|
||||||
measures.
|
claims and warranties, and if a court requires any other Contributor to
|
||||||
|
pay any damages as a result, the Commercial Contributor must pay
|
||||||
When you convey a covered work, you waive any legal power to forbid
|
those damages.
|
||||||
circumvention of technological measures to the extent such circumvention
|
|
||||||
is effected by exercising rights under this License with respect to
|
5. NO WARRANTY
|
||||||
the covered work, and you disclaim any intention to limit operation or
|
|
||||||
modification of the work as a means of enforcing, against the work's
|
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
|
||||||
users, your or third parties' legal rights to forbid circumvention of
|
PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS"
|
||||||
technological measures.
|
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
|
||||||
|
IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF
|
||||||
4. Conveying Verbatim Copies.
|
TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. Each Recipient is solely responsible for determining the
|
||||||
You may convey verbatim copies of the Program's source code as you
|
appropriateness of using and distributing the Program and assumes all
|
||||||
receive it, in any medium, provided that you conspicuously and
|
risks associated with its exercise of rights under this Agreement,
|
||||||
appropriately publish on each copy an appropriate copyright notice;
|
including but not limited to the risks and costs of program errors,
|
||||||
keep intact all notices stating that this License and any
|
compliance with applicable laws, damage to or loss of data, programs
|
||||||
non-permissive terms added in accord with section 7 apply to the code;
|
or equipment, and unavailability or interruption of operations.
|
||||||
keep intact all notices of the absence of any warranty; and give all
|
|
||||||
recipients a copy of this License along with the Program.
|
6. DISCLAIMER OF LIABILITY
|
||||||
|
|
||||||
You may charge any price or no price for each copy that you convey,
|
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
|
||||||
and you may offer support or warranty protection for a fee.
|
PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS
|
||||||
|
SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
5. Conveying Modified Source Versions.
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
|
||||||
|
PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
You may convey a work based on the Program, or the modifications to
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
produce it from the Program, in the form of source code under the
|
ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
|
||||||
terms of section 4, provided that you also meet all of these conditions:
|
EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
a) The work must carry prominent notices stating that you modified
|
|
||||||
it, and giving a relevant date.
|
7. GENERAL
|
||||||
|
|
||||||
b) The work must carry prominent notices stating that it is
|
If any provision of this Agreement is invalid or unenforceable under
|
||||||
released under this License and any conditions added under section
|
applicable law, it shall not affect the validity or enforceability of
|
||||||
7. This requirement modifies the requirement in section 4 to
|
the remainder of the terms of this Agreement, and without further
|
||||||
"keep intact all notices".
|
action by the parties hereto, such provision shall be reformed to the
|
||||||
|
minimum extent necessary to make such provision valid and enforceable.
|
||||||
c) You must license the entire work, as a whole, under this
|
|
||||||
License to anyone who comes into possession of a copy. This
|
If Recipient institutes patent litigation against any entity
|
||||||
License will therefore apply, along with any applicable section 7
|
(including a cross-claim or counterclaim in a lawsuit) alleging that the
|
||||||
additional terms, to the whole of the work, and all its parts,
|
Program itself (excluding combinations of the Program with other software
|
||||||
regardless of how they are packaged. This License gives no
|
or hardware) infringes such Recipient's patent(s), then such Recipient's
|
||||||
permission to license the work in any other way, but it does not
|
rights granted under Section 2(b) shall terminate as of the date such
|
||||||
invalidate such permission if you have separately received it.
|
litigation is filed.
|
||||||
|
|
||||||
d) If the work has interactive user interfaces, each must display
|
All Recipient's rights under this Agreement shall terminate if it
|
||||||
Appropriate Legal Notices; however, if the Program has interactive
|
fails to comply with any of the material terms or conditions of this
|
||||||
interfaces that do not display Appropriate Legal Notices, your
|
Agreement and does not cure such failure in a reasonable period of
|
||||||
work need not make them do so.
|
time after becoming aware of such noncompliance. If all Recipient's
|
||||||
|
rights under this Agreement terminate, Recipient agrees to cease use
|
||||||
A compilation of a covered work with other separate and independent
|
and distribution of the Program as soon as reasonably practicable.
|
||||||
works, which are not by their nature extensions of the covered work,
|
However, Recipient's obligations under this Agreement and any licenses
|
||||||
and which are not combined with it such as to form a larger program,
|
granted by Recipient relating to the Program shall continue and survive.
|
||||||
in or on a volume of a storage or distribution medium, is called an
|
|
||||||
"aggregate" if the compilation and its resulting copyright are not
|
Everyone is permitted to copy and distribute copies of this Agreement,
|
||||||
used to limit the access or legal rights of the compilation's users
|
but in order to avoid inconsistency the Agreement is copyrighted and
|
||||||
beyond what the individual works permit. Inclusion of a covered work
|
may only be modified in the following manner. The Agreement Steward
|
||||||
in an aggregate does not cause this License to apply to the other
|
reserves the right to publish new versions (including revisions) of
|
||||||
parts of the aggregate.
|
this Agreement from time to time. No one other than the Agreement
|
||||||
|
Steward has the right to modify this Agreement. The Eclipse Foundation
|
||||||
6. Conveying Non-Source Forms.
|
is the initial Agreement Steward. The Eclipse Foundation may assign the
|
||||||
|
responsibility to serve as the Agreement Steward to a suitable separate
|
||||||
You may convey a covered work in object code form under the terms
|
entity. Each new version of the Agreement will be given a distinguishing
|
||||||
of sections 4 and 5, provided that you also convey the
|
version number. The Program (including Contributions) may always be
|
||||||
machine-readable Corresponding Source under the terms of this License,
|
Distributed subject to the version of the Agreement under which it was
|
||||||
in one of these ways:
|
received. In addition, after a new version of the Agreement is published,
|
||||||
|
Contributor may elect to Distribute the Program (including its
|
||||||
a) Convey the object code in, or embodied in, a physical product
|
Contributions) under the new version.
|
||||||
(including a physical distribution medium), accompanied by the
|
|
||||||
Corresponding Source fixed on a durable physical medium
|
Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
|
||||||
customarily used for software interchange.
|
receives no rights or licenses to the intellectual property of any
|
||||||
|
Contributor under this Agreement, whether expressly, by implication,
|
||||||
b) Convey the object code in, or embodied in, a physical product
|
estoppel or otherwise. All rights in the Program not expressly granted
|
||||||
(including a physical distribution medium), accompanied by a
|
under this Agreement are reserved. Nothing in this Agreement is intended
|
||||||
written offer, valid for at least three years and valid for as
|
to be enforceable by any entity that is not a Contributor or Recipient.
|
||||||
long as you offer spare parts or customer support for that product
|
No third-party beneficiary rights are created under this Agreement.
|
||||||
model, to give anyone who possesses the object code either (1) a
|
|
||||||
copy of the Corresponding Source for all the software in the
|
Exhibit A - Form of Secondary Licenses Notice
|
||||||
product that is covered by this License, on a durable physical
|
|
||||||
medium customarily used for software interchange, for a price no
|
"This Source Code may also be made available under the following
|
||||||
more than your reasonable cost of physically performing this
|
Secondary Licenses when the conditions for such availability set forth
|
||||||
conveying of source, or (2) access to copy the
|
in the Eclipse Public License, v. 2.0 are satisfied: GNU General Public
|
||||||
Corresponding Source from a network server at no charge.
|
License as published by the Free Software Foundation, either version 2
|
||||||
|
of the License, or (at your option) any later version, with the GNU
|
||||||
c) Convey individual copies of the object code with a copy of the
|
Classpath Exception which is available at
|
||||||
written offer to provide the Corresponding Source. This
|
https://www.gnu.org/software/classpath/license.html."
|
||||||
alternative is allowed only occasionally and noncommercially, and
|
|
||||||
only if you received the object code with such an offer, in accord
|
Simply including a copy of this Agreement, including this Exhibit A
|
||||||
with subsection 6b.
|
is not sufficient to license the Source Code under Secondary Licenses.
|
||||||
|
|
||||||
d) Convey the object code by offering access from a designated
|
If it is not possible or desirable to put the notice in a particular
|
||||||
place (gratis or for a charge), and offer equivalent access to the
|
file, then You may include the notice in a location (such as a LICENSE
|
||||||
Corresponding Source in the same way through the same place at no
|
file in a relevant directory) where a recipient would be likely to
|
||||||
further charge. You need not require recipients to copy the
|
look for such a notice.
|
||||||
Corresponding Source along with the object code. If the place to
|
|
||||||
copy the object code is a network server, the Corresponding Source
|
You may add additional accurate notices of copyright ownership.
|
||||||
may be on a different server (operated by you or a third party)
|
|
||||||
that supports equivalent copying facilities, provided you maintain
|
|
||||||
clear directions next to the object code saying where to find the
|
|
||||||
Corresponding Source. Regardless of what server hosts the
|
|
||||||
Corresponding Source, you remain obligated to ensure that it is
|
|
||||||
available for as long as needed to satisfy these requirements.
|
|
||||||
|
|
||||||
e) Convey the object code using peer-to-peer transmission, provided
|
|
||||||
you inform other peers where the object code and Corresponding
|
|
||||||
Source of the work are being offered to the general public at no
|
|
||||||
charge under subsection 6d.
|
|
||||||
|
|
||||||
A separable portion of the object code, whose source code is excluded
|
|
||||||
from the Corresponding Source as a System Library, need not be
|
|
||||||
included in conveying the object code work.
|
|
||||||
|
|
||||||
A "User Product" is either (1) a "consumer product", which means any
|
|
||||||
tangible personal property which is normally used for personal, family,
|
|
||||||
or household purposes, or (2) anything designed or sold for incorporation
|
|
||||||
into a dwelling. In determining whether a product is a consumer product,
|
|
||||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
|
||||||
product received by a particular user, "normally used" refers to a
|
|
||||||
typical or common use of that class of product, regardless of the status
|
|
||||||
of the particular user or of the way in which the particular user
|
|
||||||
actually uses, or expects or is expected to use, the product. A product
|
|
||||||
is a consumer product regardless of whether the product has substantial
|
|
||||||
commercial, industrial or non-consumer uses, unless such uses represent
|
|
||||||
the only significant mode of use of the product.
|
|
||||||
|
|
||||||
"Installation Information" for a User Product means any methods,
|
|
||||||
procedures, authorization keys, or other information required to install
|
|
||||||
and execute modified versions of a covered work in that User Product from
|
|
||||||
a modified version of its Corresponding Source. The information must
|
|
||||||
suffice to ensure that the continued functioning of the modified object
|
|
||||||
code is in no case prevented or interfered with solely because
|
|
||||||
modification has been made.
|
|
||||||
|
|
||||||
If you convey an object code work under this section in, or with, or
|
|
||||||
specifically for use in, a User Product, and the conveying occurs as
|
|
||||||
part of a transaction in which the right of possession and use of the
|
|
||||||
User Product is transferred to the recipient in perpetuity or for a
|
|
||||||
fixed term (regardless of how the transaction is characterized), the
|
|
||||||
Corresponding Source conveyed under this section must be accompanied
|
|
||||||
by the Installation Information. But this requirement does not apply
|
|
||||||
if neither you nor any third party retains the ability to install
|
|
||||||
modified object code on the User Product (for example, the work has
|
|
||||||
been installed in ROM).
|
|
||||||
|
|
||||||
The requirement to provide Installation Information does not include a
|
|
||||||
requirement to continue to provide support service, warranty, or updates
|
|
||||||
for a work that has been modified or installed by the recipient, or for
|
|
||||||
the User Product in which it has been modified or installed. Access to a
|
|
||||||
network may be denied when the modification itself materially and
|
|
||||||
adversely affects the operation of the network or violates the rules and
|
|
||||||
protocols for communication across the network.
|
|
||||||
|
|
||||||
Corresponding Source conveyed, and Installation Information provided,
|
|
||||||
in accord with this section must be in a format that is publicly
|
|
||||||
documented (and with an implementation available to the public in
|
|
||||||
source code form), and must require no special password or key for
|
|
||||||
unpacking, reading or copying.
|
|
||||||
|
|
||||||
7. Additional Terms.
|
|
||||||
|
|
||||||
"Additional permissions" are terms that supplement the terms of this
|
|
||||||
License by making exceptions from one or more of its conditions.
|
|
||||||
Additional permissions that are applicable to the entire Program shall
|
|
||||||
be treated as though they were included in this License, to the extent
|
|
||||||
that they are valid under applicable law. If additional permissions
|
|
||||||
apply only to part of the Program, that part may be used separately
|
|
||||||
under those permissions, but the entire Program remains governed by
|
|
||||||
this License without regard to the additional permissions.
|
|
||||||
|
|
||||||
When you convey a copy of a covered work, you may at your option
|
|
||||||
remove any additional permissions from that copy, or from any part of
|
|
||||||
it. (Additional permissions may be written to require their own
|
|
||||||
removal in certain cases when you modify the work.) You may place
|
|
||||||
additional permissions on material, added by you to a covered work,
|
|
||||||
for which you have or can give appropriate copyright permission.
|
|
||||||
|
|
||||||
Notwithstanding any other provision of this License, for material you
|
|
||||||
add to a covered work, you may (if authorized by the copyright holders of
|
|
||||||
that material) supplement the terms of this License with terms:
|
|
||||||
|
|
||||||
a) Disclaiming warranty or limiting liability differently from the
|
|
||||||
terms of sections 15 and 16 of this License; or
|
|
||||||
|
|
||||||
b) Requiring preservation of specified reasonable legal notices or
|
|
||||||
author attributions in that material or in the Appropriate Legal
|
|
||||||
Notices displayed by works containing it; or
|
|
||||||
|
|
||||||
c) Prohibiting misrepresentation of the origin of that material, or
|
|
||||||
requiring that modified versions of such material be marked in
|
|
||||||
reasonable ways as different from the original version; or
|
|
||||||
|
|
||||||
d) Limiting the use for publicity purposes of names of licensors or
|
|
||||||
authors of the material; or
|
|
||||||
|
|
||||||
e) Declining to grant rights under trademark law for use of some
|
|
||||||
trade names, trademarks, or service marks; or
|
|
||||||
|
|
||||||
f) Requiring indemnification of licensors and authors of that
|
|
||||||
material by anyone who conveys the material (or modified versions of
|
|
||||||
it) with contractual assumptions of liability to the recipient, for
|
|
||||||
any liability that these contractual assumptions directly impose on
|
|
||||||
those licensors and authors.
|
|
||||||
|
|
||||||
All other non-permissive additional terms are considered "further
|
|
||||||
restrictions" within the meaning of section 10. If the Program as you
|
|
||||||
received it, or any part of it, contains a notice stating that it is
|
|
||||||
governed by this License along with a term that is a further
|
|
||||||
restriction, you may remove that term. If a license document contains
|
|
||||||
a further restriction but permits relicensing or conveying under this
|
|
||||||
License, you may add to a covered work material governed by the terms
|
|
||||||
of that license document, provided that the further restriction does
|
|
||||||
not survive such relicensing or conveying.
|
|
||||||
|
|
||||||
If you add terms to a covered work in accord with this section, you
|
|
||||||
must place, in the relevant source files, a statement of the
|
|
||||||
additional terms that apply to those files, or a notice indicating
|
|
||||||
where to find the applicable terms.
|
|
||||||
|
|
||||||
Additional terms, permissive or non-permissive, may be stated in the
|
|
||||||
form of a separately written license, or stated as exceptions;
|
|
||||||
the above requirements apply either way.
|
|
||||||
|
|
||||||
8. Termination.
|
|
||||||
|
|
||||||
You may not propagate or modify a covered work except as expressly
|
|
||||||
provided under this License. Any attempt otherwise to propagate or
|
|
||||||
modify it is void, and will automatically terminate your rights under
|
|
||||||
this License (including any patent licenses granted under the third
|
|
||||||
paragraph of section 11).
|
|
||||||
|
|
||||||
However, if you cease all violation of this License, then your
|
|
||||||
license from a particular copyright holder is reinstated (a)
|
|
||||||
provisionally, unless and until the copyright holder explicitly and
|
|
||||||
finally terminates your license, and (b) permanently, if the copyright
|
|
||||||
holder fails to notify you of the violation by some reasonable means
|
|
||||||
prior to 60 days after the cessation.
|
|
||||||
|
|
||||||
Moreover, your license from a particular copyright holder is
|
|
||||||
reinstated permanently if the copyright holder notifies you of the
|
|
||||||
violation by some reasonable means, this is the first time you have
|
|
||||||
received notice of violation of this License (for any work) from that
|
|
||||||
copyright holder, and you cure the violation prior to 30 days after
|
|
||||||
your receipt of the notice.
|
|
||||||
|
|
||||||
Termination of your rights under this section does not terminate the
|
|
||||||
licenses of parties who have received copies or rights from you under
|
|
||||||
this License. If your rights have been terminated and not permanently
|
|
||||||
reinstated, you do not qualify to receive new licenses for the same
|
|
||||||
material under section 10.
|
|
||||||
|
|
||||||
9. Acceptance Not Required for Having Copies.
|
|
||||||
|
|
||||||
You are not required to accept this License in order to receive or
|
|
||||||
run a copy of the Program. Ancillary propagation of a covered work
|
|
||||||
occurring solely as a consequence of using peer-to-peer transmission
|
|
||||||
to receive a copy likewise does not require acceptance. However,
|
|
||||||
nothing other than this License grants you permission to propagate or
|
|
||||||
modify any covered work. These actions infringe copyright if you do
|
|
||||||
not accept this License. Therefore, by modifying or propagating a
|
|
||||||
covered work, you indicate your acceptance of this License to do so.
|
|
||||||
|
|
||||||
10. Automatic Licensing of Downstream Recipients.
|
|
||||||
|
|
||||||
Each time you convey a covered work, the recipient automatically
|
|
||||||
receives a license from the original licensors, to run, modify and
|
|
||||||
propagate that work, subject to this License. You are not responsible
|
|
||||||
for enforcing compliance by third parties with this License.
|
|
||||||
|
|
||||||
An "entity transaction" is a transaction transferring control of an
|
|
||||||
organization, or substantially all assets of one, or subdividing an
|
|
||||||
organization, or merging organizations. If propagation of a covered
|
|
||||||
work results from an entity transaction, each party to that
|
|
||||||
transaction who receives a copy of the work also receives whatever
|
|
||||||
licenses to the work the party's predecessor in interest had or could
|
|
||||||
give under the previous paragraph, plus a right to possession of the
|
|
||||||
Corresponding Source of the work from the predecessor in interest, if
|
|
||||||
the predecessor has it or can get it with reasonable efforts.
|
|
||||||
|
|
||||||
You may not impose any further restrictions on the exercise of the
|
|
||||||
rights granted or affirmed under this License. For example, you may
|
|
||||||
not impose a license fee, royalty, or other charge for exercise of
|
|
||||||
rights granted under this License, and you may not initiate litigation
|
|
||||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
|
||||||
any patent claim is infringed by making, using, selling, offering for
|
|
||||||
sale, or importing the Program or any portion of it.
|
|
||||||
|
|
||||||
11. Patents.
|
|
||||||
|
|
||||||
A "contributor" is a copyright holder who authorizes use under this
|
|
||||||
License of the Program or a work on which the Program is based. The
|
|
||||||
work thus licensed is called the contributor's "contributor version".
|
|
||||||
|
|
||||||
A contributor's "essential patent claims" are all patent claims
|
|
||||||
owned or controlled by the contributor, whether already acquired or
|
|
||||||
hereafter acquired, that would be infringed by some manner, permitted
|
|
||||||
by this License, of making, using, or selling its contributor version,
|
|
||||||
but do not include claims that would be infringed only as a
|
|
||||||
consequence of further modification of the contributor version. For
|
|
||||||
purposes of this definition, "control" includes the right to grant
|
|
||||||
patent sublicenses in a manner consistent with the requirements of
|
|
||||||
this License.
|
|
||||||
|
|
||||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
|
||||||
patent license under the contributor's essential patent claims, to
|
|
||||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
|
||||||
propagate the contents of its contributor version.
|
|
||||||
|
|
||||||
In the following three paragraphs, a "patent license" is any express
|
|
||||||
agreement or commitment, however denominated, not to enforce a patent
|
|
||||||
(such as an express permission to practice a patent or covenant not to
|
|
||||||
sue for patent infringement). To "grant" such a patent license to a
|
|
||||||
party means to make such an agreement or commitment not to enforce a
|
|
||||||
patent against the party.
|
|
||||||
|
|
||||||
If you convey a covered work, knowingly relying on a patent license,
|
|
||||||
and the Corresponding Source of the work is not available for anyone
|
|
||||||
to copy, free of charge and under the terms of this License, through a
|
|
||||||
publicly available network server or other readily accessible means,
|
|
||||||
then you must either (1) cause the Corresponding Source to be so
|
|
||||||
available, or (2) arrange to deprive yourself of the benefit of the
|
|
||||||
patent license for this particular work, or (3) arrange, in a manner
|
|
||||||
consistent with the requirements of this License, to extend the patent
|
|
||||||
license to downstream recipients. "Knowingly relying" means you have
|
|
||||||
actual knowledge that, but for the patent license, your conveying the
|
|
||||||
covered work in a country, or your recipient's use of the covered work
|
|
||||||
in a country, would infringe one or more identifiable patents in that
|
|
||||||
country that you have reason to believe are valid.
|
|
||||||
|
|
||||||
If, pursuant to or in connection with a single transaction or
|
|
||||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
|
||||||
covered work, and grant a patent license to some of the parties
|
|
||||||
receiving the covered work authorizing them to use, propagate, modify
|
|
||||||
or convey a specific copy of the covered work, then the patent license
|
|
||||||
you grant is automatically extended to all recipients of the covered
|
|
||||||
work and works based on it.
|
|
||||||
|
|
||||||
A patent license is "discriminatory" if it does not include within
|
|
||||||
the scope of its coverage, prohibits the exercise of, or is
|
|
||||||
conditioned on the non-exercise of one or more of the rights that are
|
|
||||||
specifically granted under this License. You may not convey a covered
|
|
||||||
work if you are a party to an arrangement with a third party that is
|
|
||||||
in the business of distributing software, under which you make payment
|
|
||||||
to the third party based on the extent of your activity of conveying
|
|
||||||
the work, and under which the third party grants, to any of the
|
|
||||||
parties who would receive the covered work from you, a discriminatory
|
|
||||||
patent license (a) in connection with copies of the covered work
|
|
||||||
conveyed by you (or copies made from those copies), or (b) primarily
|
|
||||||
for and in connection with specific products or compilations that
|
|
||||||
contain the covered work, unless you entered into that arrangement,
|
|
||||||
or that patent license was granted, prior to 28 March 2007.
|
|
||||||
|
|
||||||
Nothing in this License shall be construed as excluding or limiting
|
|
||||||
any implied license or other defenses to infringement that may
|
|
||||||
otherwise be available to you under applicable patent law.
|
|
||||||
|
|
||||||
12. No Surrender of Others' Freedom.
|
|
||||||
|
|
||||||
If conditions are imposed on you (whether by court order, agreement or
|
|
||||||
otherwise) that contradict the conditions of this License, they do not
|
|
||||||
excuse you from the conditions of this License. If you cannot convey a
|
|
||||||
covered work so as to satisfy simultaneously your obligations under this
|
|
||||||
License and any other pertinent obligations, then as a consequence you may
|
|
||||||
not convey it at all. For example, if you agree to terms that obligate you
|
|
||||||
to collect a royalty for further conveying from those to whom you convey
|
|
||||||
the Program, the only way you could satisfy both those terms and this
|
|
||||||
License would be to refrain entirely from conveying the Program.
|
|
||||||
|
|
||||||
13. Use with the GNU Affero General Public License.
|
|
||||||
|
|
||||||
Notwithstanding any other provision of this License, you have
|
|
||||||
permission to link or combine any covered work with a work licensed
|
|
||||||
under version 3 of the GNU Affero General Public License into a single
|
|
||||||
combined work, and to convey the resulting work. The terms of this
|
|
||||||
License will continue to apply to the part which is the covered work,
|
|
||||||
but the special requirements of the GNU Affero General Public License,
|
|
||||||
section 13, concerning interaction through a network will apply to the
|
|
||||||
combination as such.
|
|
||||||
|
|
||||||
14. Revised Versions of this License.
|
|
||||||
|
|
||||||
The Free Software Foundation may publish revised and/or new versions of
|
|
||||||
the GNU General Public License from time to time. Such new versions will
|
|
||||||
be similar in spirit to the present version, but may differ in detail to
|
|
||||||
address new problems or concerns.
|
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the
|
|
||||||
Program specifies that a certain numbered version of the GNU General
|
|
||||||
Public License "or any later version" applies to it, you have the
|
|
||||||
option of following the terms and conditions either of that numbered
|
|
||||||
version or of any later version published by the Free Software
|
|
||||||
Foundation. If the Program does not specify a version number of the
|
|
||||||
GNU General Public License, you may choose any version ever published
|
|
||||||
by the Free Software Foundation.
|
|
||||||
|
|
||||||
If the Program specifies that a proxy can decide which future
|
|
||||||
versions of the GNU General Public License can be used, that proxy's
|
|
||||||
public statement of acceptance of a version permanently authorizes you
|
|
||||||
to choose that version for the Program.
|
|
||||||
|
|
||||||
Later license versions may give you additional or different
|
|
||||||
permissions. However, no additional obligations are imposed on any
|
|
||||||
author or copyright holder as a result of your choosing to follow a
|
|
||||||
later version.
|
|
||||||
|
|
||||||
15. Disclaimer of Warranty.
|
|
||||||
|
|
||||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
|
||||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
|
||||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
|
||||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
|
||||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
|
||||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
|
||||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
|
||||||
|
|
||||||
16. Limitation of Liability.
|
|
||||||
|
|
||||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
||||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
|
||||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
|
||||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
|
||||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
|
||||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
|
||||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
|
||||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
|
||||||
SUCH DAMAGES.
|
|
||||||
|
|
||||||
17. Interpretation of Sections 15 and 16.
|
|
||||||
|
|
||||||
If the disclaimer of warranty and limitation of liability provided
|
|
||||||
above cannot be given local legal effect according to their terms,
|
|
||||||
reviewing courts shall apply local law that most closely approximates
|
|
||||||
an absolute waiver of all civil liability in connection with the
|
|
||||||
Program, unless a warranty or assumption of liability accompanies a
|
|
||||||
copy of the Program in return for a fee.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
How to Apply These Terms to Your New Programs
|
|
||||||
|
|
||||||
If you develop a new program, and you want it to be of the greatest
|
|
||||||
possible use to the public, the best way to achieve this is to make it
|
|
||||||
free software which everyone can redistribute and change under these terms.
|
|
||||||
|
|
||||||
To do so, attach the following notices to the program. It is safest
|
|
||||||
to attach them to the start of each source file to most effectively
|
|
||||||
state the exclusion of warranty; and each file should have at least
|
|
||||||
the "copyright" line and a pointer to where the full notice is found.
|
|
||||||
|
|
||||||
<one line to give the program's name and a brief idea of what it does.>
|
|
||||||
Copyright (C) <year> <name of author>
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
|
||||||
|
|
||||||
If the program does terminal interaction, make it output a short
|
|
||||||
notice like this when it starts in an interactive mode:
|
|
||||||
|
|
||||||
<program> Copyright (C) <year> <name of author>
|
|
||||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
|
||||||
This is free software, and you are welcome to redistribute it
|
|
||||||
under certain conditions; type `show c' for details.
|
|
||||||
|
|
||||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
|
||||||
parts of the General Public License. Of course, your program's commands
|
|
||||||
might be different; for a GUI interface, you would use an "about box".
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or school,
|
|
||||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
|
||||||
For more information on this, and how to apply and follow the GNU GPL, see
|
|
||||||
<https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
The GNU General Public License does not permit incorporating your program
|
|
||||||
into proprietary programs. If your program is a subroutine library, you
|
|
||||||
may consider it more useful to permit linking proprietary applications with
|
|
||||||
the library. If this is what you want to do, use the GNU Lesser General
|
|
||||||
Public License instead of this License. But first, please read
|
|
||||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
|
||||||
|
|
22
README.md
22
README.md
|
@ -1,2 +1,22 @@
|
||||||
# cludus
|
# cludus
|
||||||
A cljs-based tree-walk reference interpreter for Ludus
|
|
||||||
|
A Clojure library designed to ... well, that part is up to you.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
FIXME
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Copyright © 2021 FIXME
|
||||||
|
|
||||||
|
This program and the accompanying materials are made available under the
|
||||||
|
terms of the Eclipse Public License 2.0 which is available at
|
||||||
|
http://www.eclipse.org/legal/epl-2.0.
|
||||||
|
|
||||||
|
This Source Code may also be made available under the following Secondary
|
||||||
|
Licenses when the conditions for such availability set forth in the Eclipse
|
||||||
|
Public License, v. 2.0 are satisfied: GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or (at your
|
||||||
|
option) any later version, with the GNU Classpath Exception which is available
|
||||||
|
at https://www.gnu.org/software/classpath/license.html.
|
||||||
|
|
3
doc/intro.md
Normal file
3
doc/intro.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Introduction to cludus
|
||||||
|
|
||||||
|
TODO: write [great documentation](http://jacobian.org/writing/what-to-write/)
|
8
project.clj
Normal file
8
project.clj
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
(defproject ludus "0.1.0-SNAPSHOT"
|
||||||
|
:description "FIXME: write description"
|
||||||
|
:url "http://example.com/FIXME"
|
||||||
|
:license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0"
|
||||||
|
:url "https://www.eclipse.org/legal/epl-2.0/"}
|
||||||
|
:dependencies [[org.clojure/clojure "1.10.3"]]
|
||||||
|
:repl-options {:init-ns ludus.core}
|
||||||
|
:main ludus.core)
|
33
src/ludus/core.clj
Normal file
33
src/ludus/core.clj
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
(ns ludus.core
|
||||||
|
"A tree-walk interpreter for the Ludus language."
|
||||||
|
(:require
|
||||||
|
[ludus.scanner :as scanner]))
|
||||||
|
|
||||||
|
(defn- report [line, where, message]
|
||||||
|
(println (str "[line " line "] Error" where ": " message)))
|
||||||
|
|
||||||
|
(defn- error [line, message]
|
||||||
|
(report line "" message))
|
||||||
|
|
||||||
|
(defn- run [source]
|
||||||
|
(let [tokens (scanner/scan source)]
|
||||||
|
(run! println tokens)))
|
||||||
|
|
||||||
|
(defn- run-file [path]
|
||||||
|
(let [source (slurp path)]
|
||||||
|
(run source)))
|
||||||
|
|
||||||
|
(defn- run-prompt []
|
||||||
|
(loop [_ ""]
|
||||||
|
(print "Ludus >> ")
|
||||||
|
(flush)
|
||||||
|
(when-let [line (read-line)]
|
||||||
|
(recur (run line)))))
|
||||||
|
|
||||||
|
(defn -main [& args]
|
||||||
|
(cond
|
||||||
|
(> (count args) 1) (do
|
||||||
|
(println "Usage: ludus [script]")
|
||||||
|
(System/exit 64))
|
||||||
|
(= (count args) 1) (run-file (first args))
|
||||||
|
:else (run-prompt)))
|
|
@ -1,3 +0,0 @@
|
||||||
(ns ludus.core)
|
|
||||||
|
|
||||||
(.log js/console "Hello, world!")
|
|
115
src/ludus/scanner.clj
Normal file
115
src/ludus/scanner.clj
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
(ns ludus.scanner
|
||||||
|
(:require [ludus.token :as token]))
|
||||||
|
|
||||||
|
(def reserved-words
|
||||||
|
"List of Ludus reserved words."
|
||||||
|
#{"fn"
|
||||||
|
"if"
|
||||||
|
"then"
|
||||||
|
"else"
|
||||||
|
"nil"
|
||||||
|
"match"
|
||||||
|
"with"
|
||||||
|
"true"
|
||||||
|
"false"
|
||||||
|
"as"
|
||||||
|
"ref"
|
||||||
|
"swap"
|
||||||
|
;; other possibilities
|
||||||
|
;; "pattern" -- first class patterns?
|
||||||
|
})
|
||||||
|
|
||||||
|
(defn- new-scanner [source]
|
||||||
|
{::source source
|
||||||
|
::length (count source)
|
||||||
|
::errors []
|
||||||
|
::start 0
|
||||||
|
::current 0
|
||||||
|
::line 1
|
||||||
|
::tokens []})
|
||||||
|
|
||||||
|
(defn- at-end? [scanner]
|
||||||
|
(>= (::current scanner) (::length scanner)))
|
||||||
|
|
||||||
|
(defn- current-char [scanner]
|
||||||
|
(nth (::source scanner) (::current scanner)))
|
||||||
|
|
||||||
|
(defn- advance [scanner]
|
||||||
|
(update scanner ::current inc))
|
||||||
|
|
||||||
|
(defn- current-lexeme [scanner]
|
||||||
|
(subs (::source scanner) (::start scanner) (::current scanner)))
|
||||||
|
|
||||||
|
(defn- char-in-range? [start end char]
|
||||||
|
(and char
|
||||||
|
(>= (int char) (int start))
|
||||||
|
(<= (int char) (int end))))
|
||||||
|
|
||||||
|
(defn- digit? [c]
|
||||||
|
(char-in-range? \0 \9 c))
|
||||||
|
|
||||||
|
(defn- nonzero-digit? [c]
|
||||||
|
(char-in-range? \1 \9 c))
|
||||||
|
|
||||||
|
(defn- alpha? [c]
|
||||||
|
(boolean (re-find #"\p{L}" (str c))))
|
||||||
|
|
||||||
|
;; Note that commas are whitespace in Ludus
|
||||||
|
(defn- whitespace? [c]
|
||||||
|
(or (= c \space) (= c \tab) (= c \return) (= c \,)))
|
||||||
|
|
||||||
|
(defn- terminates? [c]
|
||||||
|
(or (whitespace? c) (= c \:) (= c \newline)))
|
||||||
|
|
||||||
|
(defn- add-token
|
||||||
|
([scanner token-type]
|
||||||
|
(add-token scanner token-type nil))
|
||||||
|
([scanner token-type literal]
|
||||||
|
(update scanner ::tokens conj (token/token token-type (current-lexeme scanner) literal (::line scanner)))))
|
||||||
|
|
||||||
|
(defn- add-number [scanner])
|
||||||
|
|
||||||
|
(defn- add-string [scanner])
|
||||||
|
|
||||||
|
(defn- scan-token [scanner]
|
||||||
|
(let [char (current-char scanner)
|
||||||
|
scanner (advance scanner)]
|
||||||
|
(case char
|
||||||
|
;; one-character tokens
|
||||||
|
\( (add-token scanner ::token/lparen)
|
||||||
|
\) (add-token scanner ::token/rparen)
|
||||||
|
\{ (add-token scanner ::token/lbrace)
|
||||||
|
\} (add-token scanner ::token/rbrace)
|
||||||
|
\[ (add-token scanner ::token/lbracket)
|
||||||
|
\] (add-token scanner ::token/rbracket)
|
||||||
|
\; (add-token scanner ::token/semicolon)
|
||||||
|
\newline (add-token scanner ::token/newline)
|
||||||
|
;; two-character tokens
|
||||||
|
;; ->
|
||||||
|
;; <-
|
||||||
|
;; //
|
||||||
|
;; begin hashmap #{
|
||||||
|
;; begin set ${
|
||||||
|
|
||||||
|
;; keywords
|
||||||
|
;;\: (add-keyword scanner)
|
||||||
|
|
||||||
|
;; strings
|
||||||
|
;;\"
|
||||||
|
|
||||||
|
;; word matches
|
||||||
|
(comment (cond
|
||||||
|
(digit? char) (add-number scanner)
|
||||||
|
(alpha? char) (add-word scanner)
|
||||||
|
(= \_ char) (add-placeholder scanner)
|
||||||
|
:else (add-error scanner (str "Unexpected character: " char)))))))
|
||||||
|
|
||||||
|
(defn- next-token [scanner]
|
||||||
|
(assoc scanner ::start (::current scanner)))
|
||||||
|
|
||||||
|
(defn scan [source]
|
||||||
|
(loop [scanner (new-scanner source)]
|
||||||
|
(if (at-end? scanner)
|
||||||
|
(let [scanner (add-token scanner ::eof)]
|
||||||
|
[(::tokens scanner) (::errors scanner)])
|
||||||
|
(recur (-> scanner (scan-token) (next-token))))))
|
13
src/ludus/token.clj
Normal file
13
src/ludus/token.clj
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
(ns ludus.token)
|
||||||
|
|
||||||
|
(defn token
|
||||||
|
([type text]
|
||||||
|
(token type text nil 1))
|
||||||
|
([type text literal line]
|
||||||
|
{::type type
|
||||||
|
::lexeme text
|
||||||
|
::literal literal
|
||||||
|
::line line}))
|
||||||
|
|
||||||
|
(defn from-keyword [kw]
|
||||||
|
(keyword "ludus.token" kw))
|
7
test/cludus/core_test.clj
Normal file
7
test/cludus/core_test.clj
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
(ns cludus.core-test
|
||||||
|
(:require [clojure.test :refer :all]
|
||||||
|
[cludus.core :refer :all]))
|
||||||
|
|
||||||
|
(deftest a-test
|
||||||
|
(testing "FIXME, I fail."
|
||||||
|
(is (= 0 1))))
|
Loading…
Reference in New Issue
Block a user