diff --git a/.github/workflows/doc-build.yml b/.github/workflows/doc-build.yml deleted file mode 100644 index 9767a94..0000000 --- a/.github/workflows/doc-build.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: Build API Docs - -permissions: - contents: write - -on: - workflow_dispatch: - -jobs: - call-doc-build-workflow: - uses: clojure/build.ci/.github/workflows/doc-build.yml@master - with: - project: clojure/data.codec diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 286cf95..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Release on demand - -permissions: - contents: write - -on: - workflow_dispatch: - inputs: - releaseVersion: - description: "Version to release" - required: true - snapshotVersion: - description: "Snapshot version after release" - required: true - -jobs: - call-release: - uses: clojure/build.ci/.github/workflows/release.yml@master - with: - releaseVersion: ${{ github.event.inputs.releaseVersion }} - snapshotVersion: ${{ github.event.inputs.snapshotVersion }} - secrets: inherit \ No newline at end of file diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml deleted file mode 100644 index 9fdad8c..0000000 --- a/.github/workflows/snapshot.yml +++ /dev/null @@ -1,11 +0,0 @@ -name: Snapshot on demand - -permissions: - contents: read - -on: [workflow_dispatch] - -jobs: - call-snapshot: - uses: clojure/build.ci/.github/workflows/snapshot.yml@master - secrets: inherit diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 2cc441a..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,10 +0,0 @@ -name: Test - -permissions: - contents: read - -on: [push] - -jobs: - call-test: - uses: clojure/build.ci/.github/workflows/test.yml@master diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 8342daa..0000000 --- a/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -target/ -bin/ -classes/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index f9df35b..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,12 +0,0 @@ -This is a [Clojure contrib] project. - -Under the Clojure contrib [guidelines], this project cannot accept -pull requests. All patches must be submitted via [JIRA]. - -See [Contributing] on the Clojure website for -more information on how to contribute. - -[Clojure contrib]: https://clojure.org/community/contrib_libs -[Contributing]: https://clojure.org/community/contributing -[JIRA]: https://clojure.atlassian.net/browse/DCODEC -[guidelines]: https://clojure.org/community/contrib_howto diff --git a/LICENSE b/LICENSE deleted file mode 100644 index e246f6a..0000000 --- a/LICENSE +++ /dev/null @@ -1,205 +0,0 @@ -Eclipse Public License - v 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this -Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: - - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. - -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. - - diff --git a/README.md b/README.md deleted file mode 100644 index 8f02c6a..0000000 --- a/README.md +++ /dev/null @@ -1,48 +0,0 @@ -# data.codec - -Native codec implementations. Currently only base64 has been implemented. - -API documentation: https://clojure.github.io/data.codec - -## base64 - -NOTE: Superseded by [Base64](https://docs.oracle.com/javase/8/docs/api/java/util/Base64.html), included in the JDK since Java 8. - -Implements the standard base64 encoding character set, but does not yet support automatic fixed line-length encoding. - -All operations work on either byte arrays or Input/OutputStreams. - -Performance is on par with Java implementations, e.g., Apache commons-codec. - -### Example Usage - -Transform a binary file into a base64 encoded file: - -```clojure -(require '[clojure.data.codec.base64 :as b64] - '[clojure.java.io :as io]) - -(with-open [in (io/input-stream "input.bin") - out (io/output-stream "output.b64")] - (b64/encoding-transfer in out)) -``` - -## Installation - -The data.codec library is available in Maven central. Add it to your Maven project's `pom.xml`: - - - org.clojure - data.codec - 0.2.1 - - -or your leiningen `project.clj`: - - [org.clojure/data.codec "0.2.1"] - -## License - -Copyright © Alex Taggart, Rich Hickey, and contributors - -Licensed under the EPL. (See the file epl.html.) diff --git a/api-index.html b/api-index.html new file mode 100644 index 0000000..340faf9 --- /dev/null +++ b/api-index.html @@ -0,0 +1,233 @@ + + + + Index - data.codec 0.1.2-SNAPSHOT API documentation + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +

Index of Public Functions and Variables - data.codec 0.1.2-SNAPSHOT (in development)

+This page has an alphabetical index of all the documented functions and variables +in data.codec. + + +

+

+Shortcuts:
+A B C D + E F G H + I J K L + M +
+N O P Q + R S T U + V W X Y + Z +
+Other +
+
+ +
+

A

+
+
+  
+
+

B

+
+
+  
+
+

C

+
+
+  
+
+

D

+
+ dec-length                   function      clojure.data.codec.base64 Calculates what would be the length after d...
+ decode                       function      clojure.data.codec.base64 Returns a base64 decoded byte array.  Note:...
+ decode!                      function      clojure.data.codec.base64 Reads from the input byte array for the spe...
+ decoding-transfer            function      clojure.data.codec.base64 Base64 decodes from input-stream to output-...
+
+  
+
+

E

+
+ enc-length                   function      clojure.data.codec.base64 Calculates what would be the length after e...
+ encode                       function      clojure.data.codec.base64 Returns a base64 encoded byte array..
+ encode!                      function      clojure.data.codec.base64 Reads from the input byte array for the spe...
+ encoding-transfer            function      clojure.data.codec.base64 Base64 encodes from input-stream to output-...
+
+  
+
+

F

+
+
+  
+
+

G

+
+
+  
+
+

H

+
+
+  
+
+

I

+
+
+  
+
+

J

+
+
+  
+
+

K

+
+
+  
+
+

L

+
+
+  
+
+

M

+
+
+  
+
+

N

+
+
+  
+
+

O

+
+
+  
+
+

P

+
+ pad-length                   function      clojure.data.codec.base64 Returns the length of padding on the end of...
+
+  
+
+

Q

+
+
+  
+
+

R

+
+
+  
+
+

S

+
+
+  
+
+

T

+
+
+  
+
+

U

+
+
+  
+
+

V

+
+
+  
+
+

W

+
+
+  
+
+

X

+
+
+  
+
+

Y

+
+
+  
+
+

Z

+
+
+  
+
+

Other

+
+
+  
+
+ +
+
+
+
+
+ +
+
Logo & site design by Tom Hickey.
+ Clojure auto-documentation system by Tom Faulhaber.
+
+ + + + \ No newline at end of file diff --git a/epl.html b/epl.html deleted file mode 100644 index fd39122..0000000 --- a/epl.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - -Eclipse Public License - Version 1.0 - - - - - - -

Eclipse Public License - v 1.0

- -

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE -PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR -DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS -AGREEMENT.

- -

1. DEFINITIONS

- -

"Contribution" means:

- -

a) in the case of the initial Contributor, the initial -code and documentation distributed under this Agreement, and

-

b) in the case of each subsequent Contributor:

-

i) changes to the Program, and

-

ii) additions to the Program;

-

where such changes and/or additions to the Program -originate from and are distributed by that particular Contributor. A -Contribution 'originates' from a Contributor if it was added to the -Program by such Contributor itself or anyone acting on such -Contributor's behalf. Contributions do not include additions to the -Program which: (i) are separate modules of software distributed in -conjunction with the Program under their own license agreement, and (ii) -are not derivative works of the Program.

- -

"Contributor" means any person or entity that distributes -the Program.

- -

"Licensed Patents" mean patent claims licensable by a -Contributor which are necessarily infringed by the use or sale of its -Contribution alone or when combined with the Program.

- -

"Program" means the Contributions distributed in accordance -with this Agreement.

- -

"Recipient" means anyone who receives the Program under -this Agreement, including all Contributors.

- -

2. GRANT OF RIGHTS

- -

a) Subject to the terms of this Agreement, each -Contributor hereby grants Recipient a non-exclusive, worldwide, -royalty-free copyright license to reproduce, prepare derivative works -of, publicly display, publicly perform, distribute and sublicense the -Contribution of such Contributor, if any, and such derivative works, in -source code and object code form.

- -

b) Subject to the terms of this Agreement, each -Contributor hereby grants Recipient a non-exclusive, worldwide, -royalty-free patent license under Licensed Patents to make, use, sell, -offer to sell, import and otherwise transfer the Contribution of such -Contributor, if any, in source code and object code form. This patent -license shall apply to the combination of the Contribution and the -Program if, at the time the Contribution is added by the Contributor, -such addition of the Contribution causes such combination to be covered -by the Licensed Patents. The patent license shall not apply to any other -combinations which include the Contribution. No hardware per se is -licensed hereunder.

- -

c) Recipient understands that although each Contributor -grants the licenses to its Contributions set forth herein, no assurances -are provided by any Contributor that the Program does not infringe the -patent or other intellectual property rights of any other entity. Each -Contributor disclaims any liability to Recipient for claims brought by -any other entity based on infringement of intellectual property rights -or otherwise. As a condition to exercising the rights and licenses -granted hereunder, each Recipient hereby assumes sole responsibility to -secure any other intellectual property rights needed, if any. For -example, if a third party patent license is required to allow Recipient -to distribute the Program, it is Recipient's responsibility to acquire -that license before distributing the Program.

- -

d) Each Contributor represents that to its knowledge it -has sufficient copyright rights in its Contribution, if any, to grant -the copyright license set forth in this Agreement.

- -

3. REQUIREMENTS

- -

A Contributor may choose to distribute the Program in object code -form under its own license agreement, provided that:

- -

a) it complies with the terms and conditions of this -Agreement; and

- -

b) its license agreement:

- -

i) effectively disclaims on behalf of all Contributors -all warranties and conditions, express and implied, including warranties -or conditions of title and non-infringement, and implied warranties or -conditions of merchantability and fitness for a particular purpose;

- -

ii) effectively excludes on behalf of all Contributors -all liability for damages, including direct, indirect, special, -incidental and consequential damages, such as lost profits;

- -

iii) states that any provisions which differ from this -Agreement are offered by that Contributor alone and not by any other -party; and

- -

iv) states that source code for the Program is available -from such Contributor, and informs licensees how to obtain it in a -reasonable manner on or through a medium customarily used for software -exchange.

- -

When the Program is made available in source code form:

- -

a) it must be made available under this Agreement; and

- -

b) a copy of this Agreement must be included with each -copy of the Program.

- -

Contributors may not remove or alter any copyright notices contained -within the Program.

- -

Each Contributor must identify itself as the originator of its -Contribution, if any, in a manner that reasonably allows subsequent -Recipients to identify the originator of the Contribution.

- -

4. COMMERCIAL DISTRIBUTION

- -

Commercial distributors of software may accept certain -responsibilities with respect to end users, business partners and the -like. While this license is intended to facilitate the commercial use of -the Program, the Contributor who includes the Program in a commercial -product offering should do so in a manner which does not create -potential liability for other Contributors. Therefore, if a Contributor -includes the Program in a commercial product offering, such Contributor -("Commercial Contributor") hereby agrees to defend and -indemnify every other Contributor ("Indemnified Contributor") -against any losses, damages and costs (collectively "Losses") -arising from claims, lawsuits and other legal actions brought by a third -party against the Indemnified Contributor to the extent caused by the -acts or omissions of such Commercial Contributor in connection with its -distribution of the Program in a commercial product offering. The -obligations in this section do not apply to any claims or Losses -relating to any actual or alleged intellectual property infringement. In -order to qualify, an Indemnified Contributor must: a) promptly notify -the Commercial Contributor in writing of such claim, and b) allow the -Commercial Contributor to control, and cooperate with the Commercial -Contributor in, the defense and any related settlement negotiations. The -Indemnified Contributor may participate in any such claim at its own -expense.

- -

For example, a Contributor might include the Program in a commercial -product offering, Product X. That Contributor is then a Commercial -Contributor. If that Commercial Contributor then makes performance -claims, or offers warranties related to Product X, those performance -claims and warranties are such Commercial Contributor's responsibility -alone. Under this section, the Commercial Contributor would have to -defend claims against the other Contributors related to those -performance claims and warranties, and if a court requires any other -Contributor to pay any damages as a result, the Commercial Contributor -must pay those damages.

- -

5. NO WARRANTY

- -

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS -PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS -OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, -ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY -OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely -responsible for determining the appropriateness of using and -distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to -the risks and costs of program errors, compliance with applicable laws, -damage to or loss of data, programs or equipment, and unavailability or -interruption of operations.

- -

6. DISCLAIMER OF LIABILITY

- -

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT -NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING -WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR -DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED -HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

- -

7. GENERAL

- -

If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of -the remainder of the terms of this Agreement, and without further action -by the parties hereto, such provision shall be reformed to the minimum -extent necessary to make such provision valid and enforceable.

- -

If Recipient institutes patent litigation against any entity -(including a cross-claim or counterclaim in a lawsuit) alleging that the -Program itself (excluding combinations of the Program with other -software or hardware) infringes such Recipient's patent(s), then such -Recipient's rights granted under Section 2(b) shall terminate as of the -date such litigation is filed.

- -

All Recipient's rights under this Agreement shall terminate if it -fails to comply with any of the material terms or conditions of this -Agreement and does not cure such failure in a reasonable period of time -after becoming aware of such noncompliance. If all Recipient's rights -under this Agreement terminate, Recipient agrees to cease use and -distribution of the Program as soon as reasonably practicable. However, -Recipient's obligations under this Agreement and any licenses granted by -Recipient relating to the Program shall continue and survive.

- -

Everyone is permitted to copy and distribute copies of this -Agreement, but in order to avoid inconsistency the Agreement is -copyrighted and may only be modified in the following manner. The -Agreement Steward reserves the right to publish new versions (including -revisions) of this Agreement from time to time. No one other than the -Agreement Steward has the right to modify this Agreement. The Eclipse -Foundation is the initial Agreement Steward. The Eclipse Foundation may -assign the responsibility to serve as the Agreement Steward to a -suitable separate entity. Each new version of the Agreement will be -given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version -of the Agreement is published, Contributor may elect to distribute the -Program (including its Contributions) under the new version. Except as -expressly stated in Sections 2(a) and 2(b) above, Recipient receives no -rights or licenses to the intellectual property of any Contributor under -this Agreement, whether expressly, by implication, estoppel or -otherwise. All rights in the Program not expressly granted under this -Agreement are reserved.

- -

This Agreement is governed by the laws of the State of New York and -the intellectual property laws of the United States of America. No party -to this Agreement will bring a legal action under this Agreement more -than one year after the cause of action arose. Each party waives its -rights to a jury trial in any resulting litigation.

- - - - diff --git a/index-0.1.1.clj b/index-0.1.1.clj new file mode 100644 index 0000000..e99fdbf --- /dev/null +++ b/index-0.1.1.clj @@ -0,0 +1,132 @@ +{:namespaces + ({:doc "Functions for working with base64 encodings.", + :author "Alex Taggart", + :name "clojure.data.codec.base64", + :wiki-url "http://clojure.github.io/data.codec/index.html", + :source-url + "https://github.com/clojure/data.codec/blob/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj"}), + :vars + ({:raw-source-url + "https://github.com/clojure/data.codec/raw/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj", + :name "dec-length", + :file "src/main/clojure/clojure/data/codec/base64.clj", + :source-url + "https://github.com/clojure/data.codec/blob/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj#L39", + :line 39, + :var-type "function", + :arglists ([in-length pad-length]), + :doc + "Calculates what would be the length after decoding of an input array of length\nin-length with the specified padding length.", + :namespace "clojure.data.codec.base64", + :wiki-url + "http://clojure.github.io/data.codec//index.html#clojure.data.codec.base64/dec-length"} + {:raw-source-url + "https://github.com/clojure/data.codec/raw/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj", + :name "decode", + :file "src/main/clojure/clojure/data/codec/base64.clj", + :source-url + "https://github.com/clojure/data.codec/blob/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj#L139", + :line 139, + :var-type "function", + :arglists ([input] [input offset length]), + :doc + "Returns a base64 decoded byte array.\n\nNote: length must be a multiple of 4.", + :namespace "clojure.data.codec.base64", + :wiki-url + "http://clojure.github.io/data.codec//index.html#clojure.data.codec.base64/decode"} + {:raw-source-url + "https://github.com/clojure/data.codec/raw/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj", + :name "decode!", + :file "src/main/clojure/clojure/data/codec/base64.clj", + :source-url + "https://github.com/clojure/data.codec/blob/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj#L59", + :line 59, + :var-type "function", + :arglists ([input offset length output]), + :doc + "Reads from the input byte array for the specified length starting at the offset\nindex, and base64 decodes into the output array starting at index 0. Returns the\nlength written to output.\n\nNote: length must be a multiple of 4.", + :namespace "clojure.data.codec.base64", + :wiki-url + "http://clojure.github.io/data.codec//index.html#clojure.data.codec.base64/decode!"} + {:raw-source-url + "https://github.com/clojure/data.codec/raw/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj", + :name "decoding-transfer", + :file "src/main/clojure/clojure/data/codec/base64.clj", + :source-url + "https://github.com/clojure/data.codec/blob/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj#L260", + :line 260, + :var-type "function", + :arglists ([input-stream output-stream & opts]), + :doc + "Base64 decodes from input-stream to output-stream. Returns nil or throws IOException.\n\nOptions are key/value pairs and may be one of\n :buffer-size read buffer size to use, must be a multiple of 4; default is 8192.", + :namespace "clojure.data.codec.base64", + :wiki-url + "http://clojure.github.io/data.codec//index.html#clojure.data.codec.base64/decoding-transfer"} + {:raw-source-url + "https://github.com/clojure/data.codec/raw/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj", + :name "enc-length", + :file "src/main/clojure/clojure/data/codec/base64.clj", + :source-url + "https://github.com/clojure/data.codec/blob/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj#L31", + :line 31, + :var-type "function", + :arglists ([n]), + :doc + "Calculates what would be the length after encoding of an input array of length n.", + :namespace "clojure.data.codec.base64", + :wiki-url + "http://clojure.github.io/data.codec//index.html#clojure.data.codec.base64/enc-length"} + {:raw-source-url + "https://github.com/clojure/data.codec/raw/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj", + :name "encode", + :file "src/main/clojure/clojure/data/codec/base64.clj", + :source-url + "https://github.com/clojure/data.codec/blob/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj#L230", + :line 230, + :var-type "function", + :arglists ([input] [input offset length]), + :doc "Returns a base64 encoded byte array.", + :namespace "clojure.data.codec.base64", + :wiki-url + "http://clojure.github.io/data.codec//index.html#clojure.data.codec.base64/encode"} + {:raw-source-url + "https://github.com/clojure/data.codec/raw/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj", + :name "encode!", + :file "src/main/clojure/clojure/data/codec/base64.clj", + :source-url + "https://github.com/clojure/data.codec/blob/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj#L151", + :line 151, + :var-type "function", + :arglists ([input offset length output]), + :doc + "Reads from the input byte array for the specified length starting at the offset\nindex, and base64 encodes into the output array starting at index 0. Returns the\nlength written to output.\n\nNote: if using partial input, length must be a multiple of 3 to avoid padding.", + :namespace "clojure.data.codec.base64", + :wiki-url + "http://clojure.github.io/data.codec//index.html#clojure.data.codec.base64/encode!"} + {:raw-source-url + "https://github.com/clojure/data.codec/raw/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj", + :name "encoding-transfer", + :file "src/main/clojure/clojure/data/codec/base64.clj", + :source-url + "https://github.com/clojure/data.codec/blob/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj#L278", + :line 278, + :var-type "function", + :arglists ([input-stream output-stream & opts]), + :doc + "Base64 encodes from input-stream to output-stream. Returns nil or throws IOException.\n\nOptions are key/value pairs and may be one of\n :buffer-size read buffer size to use, must be a multiple of 3; default is 6144.", + :namespace "clojure.data.codec.base64", + :wiki-url + "http://clojure.github.io/data.codec//index.html#clojure.data.codec.base64/encoding-transfer"} + {:raw-source-url + "https://github.com/clojure/data.codec/raw/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj", + :name "pad-length", + :file "src/main/clojure/clojure/data/codec/base64.clj", + :source-url + "https://github.com/clojure/data.codec/blob/0261a9a265ab637c9c07cac6693bad28201d1840/src/main/clojure/clojure/data/codec/base64.clj#L49", + :line 49, + :var-type "function", + :arglists ([input offset length]), + :doc "Returns the length of padding on the end of the input array.", + :namespace "clojure.data.codec.base64", + :wiki-url + "http://clojure.github.io/data.codec//index.html#clojure.data.codec.base64/pad-length"})} diff --git a/index.html b/index.html new file mode 100644 index 0000000..9af2f1d --- /dev/null +++ b/index.html @@ -0,0 +1,254 @@ + + + + clojure.data.codec.base64 - data.codec 0.1.2-SNAPSHOT API documentation + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +

API for clojure.data.codec.base64 + - data.codec 0.1.2-SNAPSHOT (in development) +

+by Alex Taggart
+
Full namespace name: clojure.data.codec.base64 +

+

Overview

+ +
Functions for working with base64 encodings.
+ + +
+ + + +
+

+

Public Variables and Functions

+
+
+
+

dec-length

+ function
+
Usage: (dec-length in-length pad-length)
+
+
Calculates what would be the length after decoding of an input array of length
+in-length with the specified padding length.
+

+    
+    
+    Source
+  
+
+
+

decode

+ function
+
Usage: (decode input)
+       (decode input offset length)
+
+
Returns a base64 decoded byte array.
+
+Note: length must be a multiple of 4.
+

+    
+    
+    Source
+  
+
+
+

decode!

+ function
+
Usage: (decode! input offset length output)
+
+
Reads from the input byte array for the specified length starting at the offset
+index, and base64 decodes into the output array starting at index 0. Returns the
+length written to output.
+
+Note: length must be a multiple of 4.
+

+    
+    
+    Source
+  
+
+
+

decoding-transfer

+ function
+
Usage: (decoding-transfer input-stream output-stream & opts)
+
+
Base64 decodes from input-stream to output-stream. Returns nil or throws IOException.
+
+Options are key/value pairs and may be one of
+  :buffer-size  read buffer size to use, must be a multiple of 4; default is 8192.
+

+    
+    
+    Source
+  
+
+
+

enc-length

+ function
+
Usage: (enc-length n)
+
+
Calculates what would be the length after encoding of an input array of length n.
+

+    
+    
+    Source
+  
+
+
+

encode

+ function
+
Usage: (encode input)
+       (encode input offset length)
+
+
Returns a base64 encoded byte array.
+

+    
+    
+    Source
+  
+
+
+

encode!

+ function
+
Usage: (encode! input offset length output)
+
+
Reads from the input byte array for the specified length starting at the offset
+index, and base64 encodes into the output array starting at index 0. Returns the
+length written to output.
+
+Note: if using partial input, length must be a multiple of 3 to avoid padding.
+

+    
+    
+    Source
+  
+
+
+

encoding-transfer

+ function
+
Usage: (encoding-transfer input-stream output-stream & opts)
+
+
Base64 encodes from input-stream to output-stream. Returns nil or throws IOException.
+
+Options are key/value pairs and may be one of
+  :buffer-size  read buffer size to use, must be a multiple of 3; default is 6144.
+

+    
+    
+    Source
+  
+
+
+

pad-length

+ function
+
Usage: (pad-length input offset length)
+
+
Returns the length of padding on the end of the input array.
+

+    
+    
+    Source
+  
+
+ + +
+
+
+
+
+ +
+
Logo & site design by Tom Hickey.
+ Clojure auto-documentation system by Tom Faulhaber.
+
+ + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml deleted file mode 100644 index 528a70f..0000000 --- a/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ - - 4.0.0 - data.codec - 0.2.2-SNAPSHOT - data.codec - Native codec implementations. - - - org.clojure - pom.contrib - 1.4.0 - - - - - Alex Taggart - - - - - scm:git:git@github.com:clojure/data.codec.git - scm:git:git@github.com:clojure/data.codec.git - git@github.com:clojure/data.codec.git - HEAD - - - - 1.11.4 - true - - - - - org.clojure - test.check - 1.1.3 - test - - - commons-codec - commons-codec - 1.20.0 - test - - - diff --git a/project.clj b/project.clj deleted file mode 100644 index cb825c1..0000000 --- a/project.clj +++ /dev/null @@ -1,16 +0,0 @@ -(defproject org.clojure/data.codec "0.1.2-SNAPSHOT" - :description "Clojure codec implementations." - :url "https://github.com/clojure/data.codec" - :license {:name "Eclipse Public License" - :url "http://www.eclipse.org/legal/epl-v10.html"} - :source-paths ["src/main/clojure"] - :test-paths ["src/test/clojure"] - :dependencies [[org.clojure/clojure "1.11.4"]] - :aliases {"perf" ["with-profile" "perf" "run"]} - :profiles {:dev {:dependencies [[org.clojure/test.check "1.1.3"] - [commons-codec "1.12.0"]] - :plugins [[lein-cloverage "1.0.9"]]} - :perf {:dependencies [[commons-codec "1.16.1"] - [criterium "0.4.6"]] - :source-paths ["src/perf/clojure"] - :main clojure.data.codec.perf-base64}}) diff --git a/src/main/clojure/clojure/data/codec/base64.clj b/src/main/clojure/clojure/data/codec/base64.clj deleted file mode 100644 index b9dda11..0000000 --- a/src/main/clojure/clojure/data/codec/base64.clj +++ /dev/null @@ -1,292 +0,0 @@ -;; by Alex Taggart -;; October 11, 2011 - -;; Copyright (c) Alex Taggart, October 2011. All rights reserved. The use -;; and distribution terms for this software are covered by the Eclipse -;; Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) -;; which can be found in the file epl.html at the root of this -;; distribution. By using this software in any fashion, you are -;; agreeing to be bound by the terms of this license. You must not -;; remove this notice, or any other, from this software. - -(ns ^{:author "Alex Taggart" - :doc "Functions for working with base64 encodings."} - clojure.data.codec.base64 - (:import [java.io InputStream OutputStream])) - -(set! *unchecked-math* true) -(set! *warn-on-reflection* true) - -(def ^:private ^"[B" enc-bytes - (byte-array - (map (comp byte int) - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"))) - -(def ^:private ^"[B" dec-bytes - (let [^bytes ba (byte-array (inc (apply max enc-bytes)))] - (doseq [[idx enc] (map-indexed vector enc-bytes)] - (aset ba enc (unchecked-byte idx))) - ba)) - -(defn enc-length - "Calculates what would be the length after encoding of an input array of length n." - ^long [^long n] - (-> n - (+ 2) - (quot 3) - (* 4))) - -(defn dec-length - "Calculates what would be the length after decoding of an input array of length - in-length with the specified padding length." - ^long [^long in-length ^long pad-length] - (-> in-length - (quot 4) - (* 3) - (- pad-length))) - - -(defn pad-length - "Returns the length of padding on the end of the input array." - ^long [^bytes input ^long offset ^long length] - (if (zero? length) - 0 - (let [end (+ offset length -1)] - (if (== 61 (long (aget input end))) - (if (== 61 (long (aget input (dec end)))) - 2 - 1) - 0)))) - -(defn decode! - "Reads from the input byte array for the specified length starting at the offset - index, and base64 decodes into the output array starting at index 0. Returns the - length written to output. - - Note: length must be a multiple of 4." - ^long [^bytes input ^long offset ^long length ^bytes output] - (if (zero? length) - 0 - (let [pad-len (pad-length input offset length) - out-len (dec-length length pad-len) - tail-len (rem out-len 3) - loop-lim (- out-len tail-len)] - (loop [i offset j 0] - (if (< j loop-lim) - (let [a (long (aget dec-bytes (aget input i))) - b (long (aget dec-bytes (aget input (inc i)))) - c (long (aget dec-bytes (aget input (+ 2 i)))) - d (long (aget dec-bytes (aget input (+ 3 i)))) - x1 (-> a - (bit-and 0x3F) - (bit-shift-left 2)) - x2 (-> b - (bit-shift-right 4) - (bit-and 0x3)) - y1 (-> - (bit-and b 0xF) - (bit-shift-left 4)) - y2 (-> c - (bit-shift-right 2) - (bit-and 0xF)) - z1 (-> c - (bit-and 0x3) - (bit-shift-left 6)) - z2 (bit-and d 0x3F) - x (bit-or x1 x2) - y (bit-or y1 y2) - z (bit-or z1 z2)] - (aset output j (unchecked-byte x)) - (aset output (inc j) (unchecked-byte y)) - (aset output (+ 2 j) (unchecked-byte z)) - (recur (+ 4 i) (+ 3 j))) - - ; handle padded section - (case tail-len - 0 j - 1 (let [a (long (aget dec-bytes (aget input i))) - b (long (aget dec-bytes (aget input (inc i)))) - x1 (-> a - (bit-and 0x3F) - (bit-shift-left 2)) - x2 (-> b - (bit-shift-right 4) - (bit-and 0x3)) - x (bit-or x1 x2)] - (aset output j (unchecked-byte x)) - (inc j)) - 2 (let [a (long (aget dec-bytes (aget input i))) - b (long (aget dec-bytes (aget input (inc i)))) - c (long (aget dec-bytes (aget input (+ 2 i)))) - x1 (-> a - (bit-and 0x3F) - (bit-shift-left 2)) - x2 (-> b - (bit-shift-right 4) - (bit-and 0x3)) - y1 (-> - (bit-and b 0xF) - (bit-shift-left 4)) - y2 (-> c - (bit-shift-right 2) - (bit-and 0xF)) - x (bit-or x1 x2) - y (bit-or y1 y2)] - (aset output j (unchecked-byte x)) - (aset output (inc j) (unchecked-byte y)) - (+ 2 j)))))))) - -(defn decode - "Returns a base64 decoded byte array. - - Note: length must be a multiple of 4." - ([^bytes input] - (decode input 0 (alength input))) - ([^bytes input ^long offset ^long length] - (let [dest (byte-array (dec-length length (pad-length input offset length)))] - (decode! input offset length dest) - dest))) - - -(defn encode! - "Reads from the input byte array for the specified length starting at the offset - index, and base64 encodes into the output array starting at index 0. Returns the - length written to output. - - Note: if using partial input, length must be a multiple of 3 to avoid padding." - ^long [^bytes input ^long offset ^long length ^bytes output] - (if (zero? length) - 0 - (let [tail-len (rem length 3) - loop-lim (- (+ offset length) tail-len)] - (loop [i offset j 0] - (if (< i loop-lim) - (let [x (long (aget input i)) - y (long (aget input (inc i))) - z (long (aget input (+ 2 i))) - a (-> x - (bit-shift-right 2) - (bit-and 0x3F)) - b1 (-> x - (bit-and 0x3) - (bit-shift-left 4)) - b2 (-> y - (bit-shift-right 4) - (bit-and 0xF)) - b (bit-or b1 b2) - c1 (-> y - (bit-and 0xF) - (bit-shift-left 2)) - c2 (-> z - (bit-shift-right 6) - (bit-and 0x3)) - c (bit-or c1 c2) - d (bit-and z 0x3F)] - (aset output j (aget enc-bytes a)) - (aset output (inc j) (aget enc-bytes b)) - (aset output (+ 2 j) (aget enc-bytes c)) - (aset output (+ 3 j) (aget enc-bytes d)) - (recur (+ 3 i) (+ 4 j))) - - ; write padded section - (case tail-len - 0 j - 1 (let [x (long (aget input i)) - a (-> x - (bit-shift-right 2) - (bit-and 0x3F)) - b1 (-> x - (bit-and 0x3) - (bit-shift-left 4))] - (aset output j (aget enc-bytes a)) - (aset output (inc j) (aget enc-bytes b1)) - (aset output (+ 2 j) (unchecked-byte 61)) - (aset output (+ 3 j) (unchecked-byte 61)) - (+ 4 j)) - 2 (let [x (long (aget input i)) - y (long (aget input (inc i))) - a (-> x - (bit-shift-right 2) - (bit-and 0x3F)) - b1 (-> x - (bit-and 0x3) - (bit-shift-left 4)) - b2 (-> y - (bit-shift-right 4) - (bit-and 0xF)) - b (bit-or b1 b2) - c1 (-> y - (bit-and 0xF) - (bit-shift-left 2))] - (aset output j (aget enc-bytes a)) - (aset output (inc j) (aget enc-bytes b)) - (aset output (+ 2 j) (aget enc-bytes c1)) - (aset output (+ 3 j) (unchecked-byte 61)) - (+ 4 j)))))))) - -(defn encode - "Returns a base64 encoded byte array." - ([^bytes input] - (encode input 0 (alength input))) - ([^bytes input ^long offset ^long length] - (let [dest (byte-array (enc-length length))] - (encode! input offset length dest) - dest))) - - -(defn- read-fully - "Will fill the buffer to capacity, or with whatever is left in the input. - Returns the bytes read." - ; This is necessary since a partial fill from .read does not necessarily mean EOS, - ; and we need full buffers to avoid incorrect padding. - ^long [^InputStream input ^bytes buf] - (loop [off 0 len (alength buf)] - (let [in-size (.read input buf off len)] - (cond - (== in-size len) (+ off in-size) - (neg? in-size) off - :else (recur (+ off in-size) (- len in-size)))))) - -(defn- buf-size ^long [opts ^long default ^long multiple-of] - (if-let [in-size (:buffer-size opts)] - (if (zero? (rem in-size multiple-of)) - in-size - (throw (IllegalArgumentException. ^String (format "Buffer size must be a multiple of %d." multiple-of)))) - default)) - -(defn decoding-transfer - "Base64 decodes from input-stream to output-stream. Returns nil or throws IOException. - - Options are key/value pairs and may be one of - :buffer-size read buffer size to use, must be a multiple of 4; default is 8192." - [^InputStream input-stream ^OutputStream output-stream & opts] - (let [opts (when opts (apply hash-map opts)) - in-size (buf-size opts 8192 4) - out-size (if (== in-size 8192) 6144 (dec-length in-size 0)) - in-buf (byte-array in-size) - out-buf (byte-array out-size)] - (loop [] - (let [in-size (read-fully input-stream in-buf)] - (when (pos? in-size) - (let [out-size (decode! in-buf 0 in-size out-buf)] - (.write output-stream out-buf 0 out-size) - (recur))))))) - -(defn encoding-transfer - "Base64 encodes from input-stream to output-stream. Returns nil or throws IOException. - - Options are key/value pairs and may be one of - :buffer-size read buffer size to use, must be a multiple of 3; default is 6144." - [^InputStream input-stream ^OutputStream output-stream & opts] - (let [opts (when opts (apply hash-map opts)) - in-size (buf-size opts 6144 3) - out-size (if (== in-size 6144) 8192 (enc-length in-size)) - in-buf (byte-array in-size) - out-buf (byte-array out-size)] - (loop [] - (let [in-size (read-fully input-stream in-buf)] - (when (pos? in-size) - (let [out-size (encode! in-buf 0 in-size out-buf)] - (.write output-stream out-buf 0 out-size) - (recur))))))) - diff --git a/src/perf/clojure/clojure/data/codec/perf_base64.clj b/src/perf/clojure/clojure/data/codec/perf_base64.clj deleted file mode 100644 index 0c3d925..0000000 --- a/src/perf/clojure/clojure/data/codec/perf_base64.clj +++ /dev/null @@ -1,32 +0,0 @@ -(ns clojure.data.codec.perf-base64 - (:import org.apache.commons.codec.binary.Base64) - (:use clojure.test - clojure.data.codec.base64) - (:require [criterium.core :as crit])) - -(set! *warn-on-reflection* true) - -(defn rand-bytes [n] - (->> #(byte (- (rand-int 256) 128)) - (repeatedly n) - (byte-array n))) - -(defmacro mean [expr] - `(-> ~expr (crit/quick-benchmark {}) :mean first)) - -(defn -main [& _] - (let [byte-counts [1e2 1e4 1e6] - byte-arrays (map rand-bytes byte-counts) - encoded-arrays (map encode byte-arrays)] - (binding [crit/*final-gc-problem-threshold* 1] - (printf "%23s %14s%n" "base64.clj" "commons-codec") - (println "encode:") - (flush) - (doseq [^bytes ba byte-arrays] - (printf "%7dB %ems %ems%n" (alength ba) (mean (encode ba)) (mean (Base64/encodeBase64 ba))) - (flush)) - (println "decode:") - (doseq [^bytes ba encoded-arrays] - (printf "%7dB %ems %ems%n" (alength ba) (mean (decode ba)) (mean (Base64/decodeBase64 ba))) - (flush))))) - diff --git a/src/test/clojure/clojure/data/codec/test_base64.clj b/src/test/clojure/clojure/data/codec/test_base64.clj deleted file mode 100644 index 66ef527..0000000 --- a/src/test/clojure/clojure/data/codec/test_base64.clj +++ /dev/null @@ -1,161 +0,0 @@ -(ns clojure.data.codec.test-base64 - (:import org.apache.commons.codec.binary.Base64 - java.io.ByteArrayInputStream - java.io.ByteArrayOutputStream) - (:require [clojure.test :refer [deftest is]] - [clojure.test.check :as tc] - [clojure.test.check.clojure-test :refer [defspec]] - [clojure.test.check.generators :as gen] - [clojure.test.check.properties :as prop]) - (:use clojure.data.codec.base64)) - -(set! *warn-on-reflection* true) - -(defmethod print-method (class (byte-array 0)) [bytes, ^java.io.Writer w] - (.write w "#bytes") - (print-method (vec bytes) w)) - -(defn aeq? - ([a b] - (= (seq a) (seq b))) - ([a b len] - (= (take len a) (take len b)))) - -(defn copy-bytes ^bytes [array offset length] - (let [arr (byte-array length)] - (when (pos? length) - (System/arraycopy array offset arr 0 length)) - arr)) - -(defn expected-enc - (^bytes [input] - (Base64/encodeBase64 input)) - (^bytes [input offset length] - (Base64/encodeBase64 (copy-bytes input offset length)))) - -(defn expected-dec - (^bytes [^bytes input] - (Base64/decodeBase64 input)) - (^bytes [input offset length] - (Base64/decodeBase64 (copy-bytes input offset length)))) - -(defn gen-discrete [min max base] - (let [min (quot min base) - max (quot max base)] - (gen/fmap #(* base %) (gen/large-integer* {:min min :max max})))) - -(defn gen-with-offset-length [gen-array step] - (gen/bind gen-array - (fn [^bytes array] - (if (zero? (alength array)) - (gen/tuple (gen/return array) - (gen/return -1) - (gen/return 0)) - (gen/bind (gen-discrete 0 (dec (alength array)) step) - (fn [len] - (gen/tuple - (gen/return array) - (gen-discrete 0 (- (alength array) len) step) - (gen/return len)))))))) - -(def gen-bytes-offset-length (gen-with-offset-length gen/bytes 1)) - -(def gen-encbytes (gen/fmap #(Base64/encodeBase64 %) gen/bytes)) - -(def gen-encbytes-offset-length (gen-with-offset-length gen-encbytes 4)) - -(defspec check-encode! - (prop/for-all [[^bytes input offset length] gen-bytes-offset-length] - (let [dest (byte-array (* 2 (alength input))) - enc-len (encode! input offset length dest) - exp (expected-enc input offset length)] - (and (= enc-len (alength exp)) - (aeq? dest exp enc-len))))) - -(deftest test-encode!-prim - (is (instance? clojure.lang.IFn$OLLOL encode!))) - -(defspec check-encode-1 - (prop/for-all [^bytes input gen/bytes] - (let [enc (encode input) - exp (expected-enc input)] - (aeq? enc exp)))) - -(defspec check-encode-3 - (prop/for-all [[^bytes input offset length] gen-bytes-offset-length] - (let [enc (encode input offset length) - exp (expected-enc input offset length)] - (aeq? enc exp)))) - -(defspec check-decode! - (prop/for-all [[^bytes input offset length] gen-encbytes-offset-length] - (let [dest (byte-array (alength input)) - dec-len (decode! input offset length dest) - exp (expected-dec input offset length)] - (and (= dec-len (alength exp)) - (aeq? dest exp dec-len))))) - -(deftest test-decode!-prim - (is (instance? clojure.lang.IFn$OLLOL decode!))) - -(defspec check-decode-1 - (prop/for-all [^bytes input gen-encbytes] - (let [dec (decode input) - exp (expected-dec input)] - (aeq? dec exp)))) - -(defspec check-decode-3 - (prop/for-all [[^bytes input offset length] gen-encbytes-offset-length] - (let [dec (decode input offset length) - exp (expected-dec input offset length)] - (aeq? dec exp)))) - -(defspec check-encoding-transfer-default-buffer-size - (prop/for-all [input gen/bytes] - (let [in (ByteArrayInputStream. input) - out (ByteArrayOutputStream.)] - (encoding-transfer in out) - (aeq? (.toByteArray out) (expected-enc input))))) - -(defspec check-encoding-transfer-buffer-size - (prop/for-all [input gen/bytes - buffer-size (gen/fmap #(* 3 %) (gen/fmap inc gen/nat))] - (let [in (ByteArrayInputStream. input) - out (ByteArrayOutputStream.)] - (encoding-transfer in out :buffer-size buffer-size) - (aeq? (.toByteArray out) (expected-enc input))))) - -(defspec check-encoding-transfer-bad-buffer-size - (prop/for-all [input gen/bytes] - (let [in (ByteArrayInputStream. input) - out (ByteArrayOutputStream.)] - (try - (encoding-transfer in out :buffer-size 2) - false - (catch IllegalArgumentException _ - true))))) - -(defspec check-decoding-transfer-default-buffer-size - (prop/for-all [input gen-encbytes] - (let [in (ByteArrayInputStream. input) - out (ByteArrayOutputStream.)] - (decoding-transfer in out) - (aeq? (.toByteArray out) (expected-dec input))))) - -(defspec check-decoding-transfer-buffer-size - (prop/for-all [input gen-encbytes - buffer-size (gen/fmap #(* 4 %) (gen/fmap inc gen/nat))] - (let [in (ByteArrayInputStream. input) - out (ByteArrayOutputStream.)] - (decoding-transfer in out :buffer-size buffer-size) - (aeq? (.toByteArray out) (expected-dec input))))) - -(defspec check-decoding-transfer-bad-buffer-size - (prop/for-all [input gen-encbytes] - (let [in (ByteArrayInputStream. input) - out (ByteArrayOutputStream.)] - (try - (decoding-transfer in out :buffer-size 2) - false - (catch IllegalArgumentException _ - true))))) diff --git a/static/clojure-icon.gif b/static/clojure-icon.gif new file mode 100644 index 0000000..84eee16 Binary files /dev/null and b/static/clojure-icon.gif differ diff --git a/static/clojure.css b/static/clojure.css new file mode 100644 index 0000000..d40ea35 --- /dev/null +++ b/static/clojure.css @@ -0,0 +1,53 @@ + +body {margin: 0;padding: 0;background-color: #e3e3e3;border-top: 4px solid #b3ccfe;color: #272727} +body, .wiki, #Content, .wikipage {font-family: "Lucida Grande","Trebuchet MS","Bitstream Vera Sans",Verdana,Helvetica,sans-serif;font-size: 12px;line-height: 18px;} +#leftcolumn .wiki_link, #toc, #toc a, .toc-header {font-size: 11px;line-height: 18px;text-decoration: none} +img {border: 0;} +#AllContentContainer {max-width: 96em;min-width: 663px;background: #fff url(space/content-background.gif) right repeat-y;padding: 0 40px 18px 0;} + +#Header {position: relative;clear: both;overflow: auto;height: 110px} +#Logo {position: absolute;top: 0;left: 0;padding: 10px 0 0 62px;width: 138px;height: 100px} +#Header h1 {float: left;border: 0;margin: 0;padding: 0;position: absolute;top: 50;left: 200px; height: 60px} +#Header h1 a:link, #Header h1 a:visited, #Header h1 a:hover {color:#000000; text-decoration: none;} +#Resources {min-height: 110px;width: 234px;padding: 5px 0;float: right;border-bottom: 1px solid #abc4e2;background: #e4eaf7 url(space/resources-background.gif) repeat-y;overflow: auto;} +#Resources ul {margin: 0;padding: 0 25px;list-style: none;} +#ResourcesB {float: right;} +#Resources a {text-decoration: none;} +#Resources a:link, #Resources a:visited, #Resources a:hover, #Resources a:active {color: #4c5770;} +#Resources a:hover {text-decoration: underline;} + +#leftcolumn {margin: 0 0 0 22px;float: left;width: 168px;padding-bottom: 18px;background: #c5d2eb url(space/left-nav-bottom.gif) bottom no-repeat;} + +#leftcolumn ul {list-style: none;margin: 0;padding: 0;} + +#leftcolumn a, #leftcolumn .toc-header {font-weight: bold;display: block;background: transparent url(space/left-nav-divider.gif) repeat-x;padding: 6px 0 0 17px;margin: 12px 0 0 0;} +#leftcolumn li a {font-weight: normal;background:none;margin: 0;padding: 0 0 0 17px;} +#leftcolumn br {display: none;} +#leftcolumn .menu {margin-top: 14px;background: #fff url(space/left-nav-background.gif) repeat-y;} + +#leftcolumn a:link , #leftcolumn a:visited , #leftcolumn a:active {color: #666;} +#leftcolumn a:hover {text-decoration: underline;color: #222;} + +#rightcolumn {margin-left: 220px;} + +.wiki #toc {border: none;margin: 0 0 30px 18px;width: 222px;padding: 0 0 17px 12px;background: transparent url(space/toc-background.gif) repeat-y;border-bottom: 1px solid #d6d6d6;} +.wiki #toc h1, .wiki #toc div {margin: 0;padding: 0;} +.wiki #toc h1 {font-size: 14px;line-height: 18px;font-family: Georgia, "Times New Roman", Times, serif;font-style: italic;font-weight: normal;color: #969696;padding: 10px 0 8px 11px;} +.wiki #toc a:link, .wiki #toc a:visited, .wiki #toc a:active {color: #646464;} +.wiki #toc a:hover {background: none;color: #333333;} + +.wiki pre {font-family: Inconsolata, Monaco, Consolas, "Lucida Console", "Courier New", Courier, monospace;background-color: transparent;border: 0px;color: #000000} +#DesignedBy { clear: both; text-align: right; margin-top: 18px;} +#DesignedBy, #DesignedBy a, #DesignedBy a:link, #DesignedBy a:visited, #DesignedBy a:hover, #DesignedBy a:active { color: #999; } + +#WikiHeaderNavContainer { height: 36px; position: relative; } +#leftcolumn .WikiActions a {display: inline;} + +.comment { color: gray; } +.string { color: teal; } +.function { color: #00c; } +.macro, .specialops { color: #60c; } +.parens { color: #000; } +.keyword { color: #c09; } +.brackets { color: #006; } +.curlybrackets { color: #906; } diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000..b1653e8 Binary files /dev/null and b/static/favicon.png differ diff --git a/static/internal.css b/static/internal.css new file mode 100644 index 0000000..08ce7fb --- /dev/null +++ b/static/internal.css @@ -0,0 +1,18 @@ +/* *** MISC STUFF USED ALL OVER *** */ +.nowrap { white-space: nowrap; } +.hidden { display: none; } +tr td .sm { font-size: 90%; } +.grey { color: #666; } +.smgrey { color: #666; font-size: 80%; } +.grey a { color: #666; } +.textentry { font-family: arial, helvetica, sans-serif; border: 1px solid #999; } +.nopad { padding: 0; margin: 0; } +.bblack { color: #000; font-size: 1.1em; font-weight: bold; } +.bblacklight { color: #000; font-size: 1.1em; } + +/* IE6 min-height: http://www.dustindiaz.com/min-height-fast-hack */ +#content_view { display: block; padding-bottom: 2em; width: 100%; min-height: 600px; height: auto !important; height: 600px; } + +/* Used with .innerContentBox and #WikiAds to position the ad column */ +.contentBox { position: relative; min-height: 600px; height: auto !important; height: 600px; } + diff --git a/static/space/content-background.gif b/static/space/content-background.gif new file mode 100644 index 0000000..0786c72 Binary files /dev/null and b/static/space/content-background.gif differ diff --git a/static/space/left-nav-background.gif b/static/space/left-nav-background.gif new file mode 100644 index 0000000..e6e5904 Binary files /dev/null and b/static/space/left-nav-background.gif differ diff --git a/static/space/left-nav-bottom.gif b/static/space/left-nav-bottom.gif new file mode 100644 index 0000000..061c089 Binary files /dev/null and b/static/space/left-nav-bottom.gif differ diff --git a/static/space/left-nav-divider.gif b/static/space/left-nav-divider.gif new file mode 100644 index 0000000..1854e56 Binary files /dev/null and b/static/space/left-nav-divider.gif differ diff --git a/static/space/resources-background.gif b/static/space/resources-background.gif new file mode 100644 index 0000000..9657769 Binary files /dev/null and b/static/space/resources-background.gif differ diff --git a/static/space/toc-background.gif b/static/space/toc-background.gif new file mode 100644 index 0000000..0b7c95b Binary files /dev/null and b/static/space/toc-background.gif differ diff --git a/static/wiki.css b/static/wiki.css new file mode 100644 index 0000000..1cb1bdd --- /dev/null +++ b/static/wiki.css @@ -0,0 +1,22 @@ +/* Wiki Rendered Styles */ +.wiki { line-height: 150%; font-family: arial, helvetica, sans-serif; font-size: small; } +.wiki h1 { font-weight: bold; padding: 5px 0 0 0; margin: 0; font-size: 1.4em; } +.wiki h2 { font-weight: bold; padding: 5px 0 0 0; margin: 0; font-size: 1.3em; } +.wiki h3 { font-weight: bold; padding: 5px 0 0 0; margin: 0; font-size: 1.1em; } +.wiki h4 { font-weight: normal; padding: 5px 0 0 0; margin: 0; font-size: 1.066em; } +.wiki h5 { font-weight: normal; padding: 5px 0 0 0; margin: 0; font-size: 1.033em; } +.wiki h6 { font-weight: normal; padding: 5px 0 0 0; margin: 0; font-size: 1.0em; } +.wiki table { border-collapse: collapse; margin: 10px 0; font-size: small; } +.wiki p { margin: 0; padding: 0; padding: 5px 0; } +.wiki td { border: 1px solid #DDD; } +.wiki #toc { border: 1px solid #AAA; background: #fff; padding: 5px; margin: 0 0 10px 10px; width: 25%; float: right; clear: right;} +.wiki #toc h1 { font-weight: normal; font-size: 1.2em; padding: 0; } +.wiki #toc a:hover { color: #00D; background: #FFD; } + +.wiki hr { height: 1px; color: #AAA; background-color: #AAA; border: 0; margin: 0 10px; } +.wiki ul { padding: .5em 0 0 3em; margin: 0; } +.wiki ol { padding: .5em 0 0 3em; margin: 0; } +.wiki ul.quotelist { list-style: none; } +.wiki tt { font-size: small; } +.wiki img { border: 0; padding: 4px; } +