├── .gitignore ├── clojurescript.png ├── clojurescript-site-org-mode.png ├── assets └── images │ └── content │ ├── guides │ └── quick-start │ │ └── browser.png │ └── news │ └── 2018-03-26-clojurescript-command-line │ ├── browser.png │ ├── blue-circle.png │ └── blue-red-circle.png ├── README.org └── LICENSE /.gitignore: -------------------------------------------------------------------------------- 1 | clojurescript-site/ -------------------------------------------------------------------------------- /clojurescript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tonyaldon/clojurescript-site-org-mode/HEAD/clojurescript.png -------------------------------------------------------------------------------- /clojurescript-site-org-mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tonyaldon/clojurescript-site-org-mode/HEAD/clojurescript-site-org-mode.png -------------------------------------------------------------------------------- /assets/images/content/guides/quick-start/browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tonyaldon/clojurescript-site-org-mode/HEAD/assets/images/content/guides/quick-start/browser.png -------------------------------------------------------------------------------- /assets/images/content/news/2018-03-26-clojurescript-command-line/browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tonyaldon/clojurescript-site-org-mode/HEAD/assets/images/content/news/2018-03-26-clojurescript-command-line/browser.png -------------------------------------------------------------------------------- /assets/images/content/news/2018-03-26-clojurescript-command-line/blue-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tonyaldon/clojurescript-site-org-mode/HEAD/assets/images/content/news/2018-03-26-clojurescript-command-line/blue-circle.png -------------------------------------------------------------------------------- /assets/images/content/news/2018-03-26-clojurescript-command-line/blue-red-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tonyaldon/clojurescript-site-org-mode/HEAD/assets/images/content/news/2018-03-26-clojurescript-command-line/blue-red-circle.png -------------------------------------------------------------------------------- /README.org: -------------------------------------------------------------------------------- 1 | #+TITLE: ClojureScript website in org-mode 2 | #+AUTHOR: Tony aldon 3 | #+DATE: <2021-11-27 Sat> 4 | 5 | * About 6 | 7 | This repository contains the documentation of https://clojurescript.org/ 8 | converted into a single org-mode file [[./clojurescript-site.org]]. 9 | 10 | [[./clojurescript-site-org-mode.png]] 11 | 12 | It's just a single file, so you can download it and read it right 13 | away. But if you want to have the (local) links to work correctly you 14 | have to clone some other repositories. See [[* Installation][Installation]] section. 15 | 16 | You might be interested in [[https://github.com/tonyaldon/clojure-site-org-mode][clojure-site-org-mode]]. 17 | 18 | Note that the development of https://clojurescript.org/ happens in the 19 | Github repository https://github.com/clojure/clojurescript-site. 20 | 21 | * Installation 22 | 23 | The documentation is in the file [[./clojurescript-site.org]]. 24 | 25 | Some links are images in the directory [[./assets/]]. So if you want 26 | those links to work correctly it is better to clone the whole 27 | project. 28 | 29 | Each section in ~clojurescript-site.org~ that corresponds to an asciidoc 30 | file in [[https://github.com/clojure/clojurescript-site][clojurescript-site]] has a (local) link to this file. So if you 31 | want to refer to the original files, you need to clone 32 | ~clojurescript-site~ repository. 33 | 34 | To install everything run these following commands: 35 | 36 | #+BEGIN_SRC bash 37 | git clone https://github.com/tonyaldon/clojurescript-site-org-mode.git 38 | cd clojurescript-site-org-mode 39 | git clone https://github.com/clojure/clojurescript-site.git 40 | #+END_SRC 41 | 42 | * Converting clojurescript-site to one org file 43 | 44 | I describe here the steps I followed to convert the asciidoc files 45 | constituing the ClojureScript documentation into a single org file. 46 | 47 | As It was the second time I did it (I did it first with the Clojure 48 | documentation -> [[https://github.com/tonyaldon/clojure-site-org-mode][clojure-site-org-mode]]), I didn't have to discovered 49 | everything. And so, I tried to make the process more reproducible, 50 | more automatic and less manual/interactive (knowing that there is 51 | still parts that could/should be automated). 52 | 53 | To do the conversion I've used: 54 | - ~assciidoctor~, ~pandoc~, ~fd~, ~sed~, 55 | - ~bash~ "scripts", 56 | - ~emacs-lisp~ code, 57 | - interactive modification via ~emacs~ with ~rg.el~, ~isearch~, 58 | ~query-replace-regexp~, ~iedit~, ~multiple-cursors~, keyboard macros, 59 | - manual proofreading and adjustment. 60 | 61 | First I cloned ~clojurescript-site~ repository: 62 | 63 | #+BEGIN_SRC bash 64 | git clone https://github.com/clojure/clojurescript-site.git 65 | #+END_SRC 66 | 67 | ** 01) asciidoc -> docbook -> org 68 | 69 | Then I converted all the ~asciidoc~ files of ~clojurescript-site~ into one 70 | single org file running the following ~bash~ snippet: 71 | 72 | #+BEGIN_SRC bash :results output 73 | for f in `fd --no-ignore .adoc ./clojurescript-site/`; do 74 | asciidoctor -b docbook $f -o tmpdocbook ; 75 | pandoc --wrap=none -f docbook -t org -o tmporg tmpdocbook ; 76 | sed -i -r 's/^[*]+ /*&/g' tmporg ; 77 | sed -n "1p" < $f | sed -r "s/^= /* /g" > tmpfile; 78 | path_in_content_dir_no_extension=`sed -E 's:.*/content/(.*).adoc:\1:g' <<< $f` ; 79 | custom_id=`echo content/$path_in_content_dir_no_extension` ; 80 | cljs_page=`echo https://clojurescript.org/$path_in_content_dir_no_extension` ; 81 | printf ":PROPERTIES:\n" >> tmpfile ; 82 | printf ":CLOJURESCRIPT_SITE_FILE: [[./$f]]\n" >> tmpfile ; 83 | printf ":CLOJURESCRIPT_SITE_PAGE: $cljs_page\n" >> tmpfile ; 84 | printf ":CLOJURESCRIPT_SITE_AUTHOR: `sed -n "2p" < $f`\n" >> tmpfile ; 85 | printf ":CLOJURESCRIPT_SITE_DATE: `sed -n "3p" < $f`\n" >> tmpfile ; 86 | printf ":CUSTOM_ID: $custom_id\n" >> tmpfile ; 87 | printf ":END:\n" >> tmpfile ; 88 | cat tmpfile >> clojurescript-site.org ; 89 | cat tmporg >> clojurescript-site.org ; 90 | done 91 | 92 | rm tmpdocbook tmporg tmpfile ; 93 | #+END_SRC 94 | 95 | Let's break down the previous snippet: 96 | 1) use ~fd~ to list the ~.adoc~ files, 97 | 2) loop on that list, 98 | 3) use ~asciidoctor~ to convert each ~.adoc~ file into temporary ~docbook~ 99 | file, 100 | 4) use ~pandoc~ to convert each ~docbook~ file into temporary ~org~ file, 101 | 5) multiple use of ~sed~ and ~printf~ to 102 | - collect the fontmatter of the ~.adoc~ files, 103 | - format the data into ~org~ properties, 104 | - store it in a temporary file, 105 | 6) append the temporary files to ~clojurescript-site.org~. 106 | 107 | At this point, each section of the new created file 108 | ~clojurescript-site.org~ corresponds to an ~asciidoc~ file in the 109 | ClojureScript documentation. 110 | 111 | ** 02) Tree structure 112 | 113 | Then I manually made the tree structure: 114 | 1) I removed the unused sections: "Page Not Found", "README", "Search 115 | Results", 116 | 2) I added the top sections: "About", "Community", "Guide", "News", 117 | "Reference", "Tools", 118 | 3) I added dates to the headlines of the subsection of the "News" 119 | section, 120 | 4) I added the pagination and reordered the section "About". 121 | 122 | I also removed the unused ~CUSTOM_ID~ org properties added by ~pandoc~. 123 | 124 | ** 03) Org list 125 | 126 | Then, in ~clojurescript-site.org~, I removed empty lines in list that 127 | was added by ~pandoc~: 128 | 129 | #+BEGIN_SRC emacs-lisp 130 | ;; remove empty lines in list 131 | (while (re-search-forward "^ *\\(-\\|[1-9]+\\.\\) " nil t) 132 | (when (org-match-line (org-item-re)) 133 | (save-excursion 134 | (forward-line -1) 135 | (when (and (org-in-item-p) (= (point-at-bol) (point-at-eol))) 136 | (delete-char 1))))) 137 | #+END_SRC 138 | 139 | Then in ~clojurescript-site.org~, I replaced list items with 2 spaces 140 | after the dash ~-~ (added by ~pandoc~), with only one space: 141 | 142 | #+BEGIN_SRC emacs-lisp 143 | ;; replace list with "- " (2 spaces) with "- " (1 space) 144 | ;; this step must be done before (hard) wrapping lines 145 | (while (re-search-forward "^ *\\(- \\) " nil t) 146 | (when (save-match-data (org-match-line (org-item-re))) 147 | (let* ((indentation (save-match-data 148 | (goto-char (match-beginning 0)) 149 | (current-indentation))) 150 | (new-indentation (* (/ indentation 3) 2))) 151 | (replace-match "\\1" nil nil) 152 | (indent-line-to new-indentation)))) 153 | #+END_SRC 154 | 155 | ** 04) Source Blocks 156 | 157 | In ~clojurescript-site.org~, I removed the left padding in every blocks 158 | that has been added by ~pandoc~ when converting from ~docbook~ to ~org~: 159 | 160 | #+BEGIN_SRC emacs-lisp 161 | ;; remove left padding in org blocks 162 | ;; Warning: this loop doesn't take care of line starting by a * 163 | ;; after removing the left padding lp which make the line become 164 | ;; a headline in org. 165 | (while (re-search-forward org-block-regexp nil t) 166 | (let ((beg (match-beginning 0)) 167 | (end-line (save-excursion (goto-char (match-end 0)) (line-number-at-pos)))) 168 | (goto-char beg) 169 | (if-let* ((lp (progn (forward-line) (current-indentation))) 170 | ((not (zerop lp)))) 171 | (while (< (line-number-at-pos) end-line) 172 | (unless (= (point-at-bol) (point-at-eol)) 173 | (delete-char lp)) 174 | (forward-line))))) 175 | #+END_SRC 176 | 177 | ** 05) Wrap lines 178 | 179 | I interactively (hard) wrapped the lines at 72 characters. 180 | 181 | ** 06) Markers 182 | 183 | Then, I replaced inline verbatim markers ~=~ by code markers ~~~ in 184 | ~clojurescript-site.org~. 185 | 186 | #+BEGIN_SRC emacs-lisp 187 | ;; replace inline code markers = by ~ 188 | (while (re-search-forward "=" nil t) 189 | (backward-char 1) 190 | (if-let ((inline-code (cadr (org-element-code-parser)))) 191 | (progn 192 | (goto-char (plist-get inline-code :begin)) 193 | (delete-char 1) 194 | (insert "~") 195 | (goto-char (- (plist-get inline-code :end) 196 | (plist-get inline-code :post-blank))) 197 | (delete-char -1) 198 | (insert "~")) 199 | (forward-char 1))) 200 | #+END_SRC 201 | 202 | Then, I interactively removed ~=~ verbatim markers when inside links 203 | (like this ~[[link][=verbatim=]]~). Org markers don't nest inside org 204 | links. We keep the links because they are more meaningful than the 205 | markers. 206 | 207 | Then, I interactively replaced nested emphasis markers like this 208 | ~/*set!*/~ by ~*set!*~ as Org emphasis markers don't nest. 209 | 210 | ** 07) Breaklines and escaped character 211 | 212 | Then, I interactively removed ~\\~ breaklines and removed unnecessary 213 | use of escaped character ~\~. 214 | 215 | ** 08) Footnotes 216 | 217 | Then I made footnotes unique. As they came from different files in 218 | the ClojureScript documentation they were conflicting in 219 | ~clojurescript-site.org~ org file. For instance, the footnotes ~[fn:1]~ 220 | used to refer to two different footnotes have been renamed uniquely as 221 | ~[fn:closure_lib]~ and ~[fn:closure_comp]~. 222 | 223 | ** 09) Faq 224 | 225 | Then I converted faq's questions into headlines. 226 | 227 | ** 10) Example block and source block 228 | 229 | Then I replaced org example blocks (~#+BEGIN_EXAMPLE ... #+END_EXAMPLE~) 230 | with specific source code blocks (~#+BEGIN_SRC ... #+END_SRC~) when 231 | appropiated: 232 | - ~#+BEGIN_EXAMPLE~ -> ~#+BEGIN_SRC clojure~ (for Clojure snippets), 233 | - ~#+BEGIN_EXAMPLE~ -> ~#+BEGIN_SRC js~ (for Javascript snippets), 234 | - ~#+BEGIN_EXAMPLE~ -> ~#+BEGIN_SRC sh~ (for command lines snippets), 235 | - ~#+BEGIN_EXAMPLE~ -> ~#+BEGIN_SRC html~ (for HTML snippets). 236 | 237 | ** 12) Internal links and images 238 | 239 | I interactively set the internal links using ~CUSTOM_ID~ org 240 | property of nodes to be sure to have unicity of links (which might 241 | not be the case using headlines content) and anchors in a few cases. 242 | 243 | Then I added the ~assets~ directory of Clojure documentation (containing 244 | the images) in the project and modified the link to the images. 245 | 246 | * Terms of Use 247 | 248 | Copyright © 2015 Rich Hickey and contributors 249 | 250 | All documentation contained in this repository is licensed by Rich 251 | Hickey under the [[http://www.eclipse.org/legal/epl-v10.html][Eclipse Public License v1.0]] unless otherwise 252 | noted. To submit a pull request 253 | or other contribution, you must sign the [[http://clojurescript.org/community/contributing][Clojure Contributor Agreement]]. 254 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Eclipse Public License - v 1.0 2 | 3 | THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC 4 | LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM 5 | CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 6 | 7 | 1. DEFINITIONS 8 | 9 | "Contribution" means: 10 | 11 | a) in the case of the initial Contributor, the initial code and documentation 12 | distributed under this Agreement, and 13 | b) in the case of each subsequent Contributor: 14 | i) changes to the Program, and 15 | ii) additions to the Program; 16 | 17 | where such changes and/or additions to the Program originate from and are 18 | distributed by that particular Contributor. A Contribution 'originates' 19 | from a Contributor if it was added to the Program by such Contributor 20 | itself or anyone acting on such Contributor's behalf. Contributions do not 21 | include additions to the Program which: (i) are separate modules of 22 | software distributed in conjunction with the Program under their own 23 | license agreement, and (ii) are not derivative works of the Program. 24 | 25 | "Contributor" means any person or entity that distributes the Program. 26 | 27 | "Licensed Patents" mean patent claims licensable by a Contributor which are 28 | necessarily infringed by the use or sale of its Contribution alone or when 29 | combined with the Program. 30 | 31 | "Program" means the Contributions distributed in accordance with this 32 | Agreement. 33 | 34 | "Recipient" means anyone who receives the Program under this Agreement, 35 | including all Contributors. 36 | 37 | 2. GRANT OF RIGHTS 38 | a) Subject to the terms of this Agreement, each Contributor hereby grants 39 | Recipient a non-exclusive, worldwide, royalty-free copyright license to 40 | reproduce, prepare derivative works of, publicly display, publicly 41 | perform, distribute and sublicense the Contribution of such Contributor, 42 | if any, and such derivative works, in source code and object code form. 43 | b) Subject to the terms of this Agreement, each Contributor hereby grants 44 | Recipient a non-exclusive, worldwide, royalty-free patent license under 45 | Licensed Patents to make, use, sell, offer to sell, import and otherwise 46 | transfer the Contribution of such Contributor, if any, in source code and 47 | object code form. This patent license shall apply to the combination of 48 | the Contribution and the Program if, at the time the Contribution is 49 | added by the Contributor, such addition of the Contribution causes such 50 | combination to be covered by the Licensed Patents. The patent license 51 | shall not apply to any other combinations which include the Contribution. 52 | No hardware per se is licensed hereunder. 53 | c) Recipient understands that although each Contributor grants the licenses 54 | to its Contributions set forth herein, no assurances are provided by any 55 | Contributor that the Program does not infringe the patent or other 56 | intellectual property rights of any other entity. Each Contributor 57 | disclaims any liability to Recipient for claims brought by any other 58 | entity based on infringement of intellectual property rights or 59 | otherwise. As a condition to exercising the rights and licenses granted 60 | hereunder, each Recipient hereby assumes sole responsibility to secure 61 | any other intellectual property rights needed, if any. For example, if a 62 | third party patent license is required to allow Recipient to distribute 63 | the Program, it is Recipient's responsibility to acquire that license 64 | before distributing the Program. 65 | d) Each Contributor represents that to its knowledge it has sufficient 66 | copyright rights in its Contribution, if any, to grant the copyright 67 | license set forth in this Agreement. 68 | 69 | 3. REQUIREMENTS 70 | 71 | A Contributor may choose to distribute the Program in object code form under 72 | its own license agreement, provided that: 73 | 74 | a) it complies with the terms and conditions of this Agreement; and 75 | b) its license agreement: 76 | i) effectively disclaims on behalf of all Contributors all warranties 77 | and conditions, express and implied, including warranties or 78 | conditions of title and non-infringement, and implied warranties or 79 | conditions of merchantability and fitness for a particular purpose; 80 | ii) effectively excludes on behalf of all Contributors all liability for 81 | damages, including direct, indirect, special, incidental and 82 | consequential damages, such as lost profits; 83 | iii) states that any provisions which differ from this Agreement are 84 | offered by that Contributor alone and not by any other party; and 85 | iv) states that source code for the Program is available from such 86 | Contributor, and informs licensees how to obtain it in a reasonable 87 | manner on or through a medium customarily used for software exchange. 88 | 89 | When the Program is made available in source code form: 90 | 91 | a) it must be made available under this Agreement; and 92 | b) a copy of this Agreement must be included with each copy of the Program. 93 | Contributors may not remove or alter any copyright notices contained 94 | within the Program. 95 | 96 | Each Contributor must identify itself as the originator of its Contribution, 97 | if 98 | any, in a manner that reasonably allows subsequent Recipients to identify the 99 | originator of the Contribution. 100 | 101 | 4. COMMERCIAL DISTRIBUTION 102 | 103 | Commercial distributors of software may accept certain responsibilities with 104 | respect to end users, business partners and the like. While this license is 105 | intended to facilitate the commercial use of the Program, the Contributor who 106 | includes the Program in a commercial product offering should do so in a manner 107 | which does not create potential liability for other Contributors. Therefore, 108 | if a Contributor includes the Program in a commercial product offering, such 109 | Contributor ("Commercial Contributor") hereby agrees to defend and indemnify 110 | every other Contributor ("Indemnified Contributor") against any losses, 111 | damages and costs (collectively "Losses") arising from claims, lawsuits and 112 | other legal actions brought by a third party against the Indemnified 113 | Contributor to the extent caused by the acts or omissions of such Commercial 114 | Contributor in connection with its distribution of the Program in a commercial 115 | product offering. The obligations in this section do not apply to any claims 116 | or Losses relating to any actual or alleged intellectual property 117 | infringement. In order to qualify, an Indemnified Contributor must: 118 | a) promptly notify the Commercial Contributor in writing of such claim, and 119 | b) allow the Commercial Contributor to control, and cooperate with the 120 | Commercial Contributor in, the defense and any related settlement 121 | negotiations. The Indemnified Contributor may participate in any such claim at 122 | its own expense. 123 | 124 | For example, a Contributor might include the Program in a commercial product 125 | offering, Product X. That Contributor is then a Commercial Contributor. If 126 | that Commercial Contributor then makes performance claims, or offers 127 | warranties related to Product X, those performance claims and warranties are 128 | such Commercial Contributor's responsibility alone. Under this section, the 129 | Commercial Contributor would have to defend claims against the other 130 | Contributors related to those performance claims and warranties, and if a 131 | court requires any other Contributor to pay any damages as a result, the 132 | Commercial Contributor must pay those damages. 133 | 134 | 5. NO WARRANTY 135 | 136 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN 137 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR 138 | IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, 139 | NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each 140 | Recipient is solely responsible for determining the appropriateness of using 141 | and distributing the Program and assumes all risks associated with its 142 | exercise of rights under this Agreement , including but not limited to the 143 | risks and costs of program errors, compliance with applicable laws, damage to 144 | or loss of data, programs or equipment, and unavailability or interruption of 145 | operations. 146 | 147 | 6. DISCLAIMER OF LIABILITY 148 | 149 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY 150 | CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, 151 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION 152 | LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 153 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 154 | ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE 155 | EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY 156 | OF SUCH DAMAGES. 157 | 158 | 7. GENERAL 159 | 160 | If any provision of this Agreement is invalid or unenforceable under 161 | applicable law, it shall not affect the validity or enforceability of the 162 | remainder of the terms of this Agreement, and without further action by the 163 | parties hereto, such provision shall be reformed to the minimum extent 164 | necessary to make such provision valid and enforceable. 165 | 166 | If Recipient institutes patent litigation against any entity (including a 167 | cross-claim or counterclaim in a lawsuit) alleging that the Program itself 168 | (excluding combinations of the Program with other software or hardware) 169 | infringes such Recipient's patent(s), then such Recipient's rights granted 170 | under Section 2(b) shall terminate as of the date such litigation is filed. 171 | 172 | All Recipient's rights under this Agreement shall terminate if it fails to 173 | comply with any of the material terms or conditions of this Agreement and does 174 | not cure such failure in a reasonable period of time after becoming aware of 175 | such noncompliance. If all Recipient's rights under this Agreement terminate, 176 | Recipient agrees to cease use and distribution of the Program as soon as 177 | reasonably practicable. However, Recipient's obligations under this Agreement 178 | and any licenses granted by Recipient relating to the Program shall continue 179 | and survive. 180 | 181 | Everyone is permitted to copy and distribute copies of this Agreement, but in 182 | order to avoid inconsistency the Agreement is copyrighted and may only be 183 | modified in the following manner. The Agreement Steward reserves the right to 184 | publish new versions (including revisions) of this Agreement from time to 185 | time. No one other than the Agreement Steward has the right to modify this 186 | Agreement. The Eclipse Foundation is the initial Agreement Steward. The 187 | Eclipse Foundation may assign the responsibility to serve as the Agreement 188 | Steward to a suitable separate entity. Each new version of the Agreement will 189 | be given a distinguishing version number. The Program (including 190 | Contributions) may always be distributed subject to the version of the 191 | Agreement under which it was received. In addition, after a new version of the 192 | Agreement is published, Contributor may elect to distribute the Program 193 | (including its Contributions) under the new version. Except as expressly 194 | stated in Sections 2(a) and 2(b) above, Recipient receives no rights or 195 | licenses to the intellectual property of any Contributor under this Agreement, 196 | whether expressly, by implication, estoppel or otherwise. All rights in the 197 | Program not expressly granted under this Agreement are reserved. 198 | 199 | This Agreement is governed by the laws of the State of New York and the 200 | intellectual property laws of the United States of America. No party to this 201 | Agreement will bring a legal action under this Agreement more than one year 202 | after the cause of action arose. Each party waives its rights to a jury trial in 203 | any resulting litigation. 204 | 205 | 206 | --------------------------------------------------------------------------------