├── .github └── workflows │ ├── lint.yml │ └── test.yml ├── .gitignore ├── .rubocop.yml ├── .ruby-version ├── Gemfile ├── Gemfile.lock ├── LICENSE-DEPENDENCIES.md ├── LICENSE.txt ├── README.md ├── Rakefile ├── bin └── release ├── config └── quickdraw.rb ├── difftastic.gemspec ├── exe └── difft ├── lib ├── difftastic.rb └── difftastic │ ├── ansi.rb │ ├── differ.rb │ ├── upstream.rb │ └── version.rb ├── rakelib └── package.rake └── test ├── diff_files.test.rb ├── difftastic.test.rb ├── display.test.rb ├── labels.test.rb └── width.test.rb /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | name: Lint 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | name: Lint 9 | 10 | steps: 11 | - name: Checkout 12 | uses: actions/checkout@v3 13 | 14 | - name: Set up Ruby 15 | uses: ruby/setup-ruby@v1 16 | with: 17 | bundler-cache: true 18 | 19 | - name: Run rubocop 20 | run: bundle exec rubocop 21 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | name: Ruby ${{ matrix.ruby }} 9 | strategy: 10 | matrix: 11 | ruby: 12 | - '3.1' 13 | - '3.2' 14 | - '3.3' 15 | - '3.4' 16 | 17 | steps: 18 | - name: Checkout 19 | uses: actions/checkout@v3 20 | 21 | - name: Set up Ruby 22 | uses: ruby/setup-ruby@v1 23 | with: 24 | ruby-version: ${{ matrix.ruby }} 25 | bundler-cache: true 26 | 27 | - name: Run tests 28 | run: bundle exec qt 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.bundle/ 2 | /.yardoc 3 | /_yardoc/ 4 | /coverage/ 5 | /doc/ 6 | /pkg/ 7 | /spec/reports/ 8 | /tmp/ 9 | /exe/*/ 10 | test/dummy/log/test.log 11 | .DS_Store 12 | vendor/cache/* 13 | .rubocop-* 14 | -------------------------------------------------------------------------------- /.rubocop.yml: -------------------------------------------------------------------------------- 1 | inherit_from: 2 | - "https://www.goodcop.style/tabs.yml" 3 | 4 | AllCops: 5 | TargetRubyVersion: 3.1 6 | 7 | Security/Open: 8 | Enabled: false 9 | 10 | Layout/HeredocIndentation: 11 | Enabled: false 12 | -------------------------------------------------------------------------------- /.ruby-version: -------------------------------------------------------------------------------- 1 | 3.4.1 2 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source "https://rubygems.org" 4 | 5 | gemspec 6 | 7 | gem "rake" 8 | gem "rubyzip" 9 | gem "rubocop" 10 | gem "ruby-lsp" 11 | gem "quickdraw", git: "https://github.com/joeldrapper/quickdraw.git" 12 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GIT 2 | remote: https://github.com/joeldrapper/quickdraw.git 3 | revision: 850ed1c36d5d61f6b4a860ef5dc8cdbe97942397 4 | specs: 5 | quickdraw (0.1.0) 6 | difftastic (~> 0.1) 7 | io-watch (~> 0.6) 8 | 9 | PATH 10 | remote: . 11 | specs: 12 | difftastic (0.6.0) 13 | pretty_please 14 | 15 | GEM 16 | remote: https://rubygems.org/ 17 | specs: 18 | ast (2.4.2) 19 | dispersion (0.2.0) 20 | prism 21 | io-watch (0.6.3) 22 | json (2.9.1) 23 | language_server-protocol (3.17.0.4) 24 | logger (1.6.5) 25 | parallel (1.26.3) 26 | parser (3.3.7.1) 27 | ast (~> 2.4.1) 28 | racc 29 | pretty_please (0.1.1) 30 | dispersion (~> 0.2) 31 | prism (1.3.0) 32 | racc (1.8.1) 33 | rainbow (3.1.1) 34 | rake (13.2.1) 35 | rbs (3.8.1) 36 | logger 37 | regexp_parser (2.10.0) 38 | rubocop (1.71.2) 39 | json (~> 2.3) 40 | language_server-protocol (>= 3.17.0) 41 | parallel (~> 1.10) 42 | parser (>= 3.3.0.2) 43 | rainbow (>= 2.2.2, < 4.0) 44 | regexp_parser (>= 2.9.3, < 3.0) 45 | rubocop-ast (>= 1.38.0, < 2.0) 46 | ruby-progressbar (~> 1.7) 47 | unicode-display_width (>= 2.4.0, < 4.0) 48 | rubocop-ast (1.38.0) 49 | parser (>= 3.3.1.0) 50 | ruby-lsp (0.23.8) 51 | language_server-protocol (~> 3.17.0) 52 | prism (>= 1.2, < 2.0) 53 | rbs (>= 3, < 4) 54 | sorbet-runtime (>= 0.5.10782) 55 | ruby-progressbar (1.13.0) 56 | rubyzip (2.4.1) 57 | sorbet-runtime (0.5.11802) 58 | unicode-display_width (3.1.4) 59 | unicode-emoji (~> 4.0, >= 4.0.4) 60 | unicode-emoji (4.0.4) 61 | 62 | PLATFORMS 63 | aarch64-linux-gnu 64 | aarch64-linux-musl 65 | arm-linux-gnu 66 | arm-linux-musl 67 | arm64-darwin 68 | x86_64-darwin 69 | x86_64-linux-gnu 70 | x86_64-linux-musl 71 | 72 | DEPENDENCIES 73 | difftastic! 74 | quickdraw! 75 | rake 76 | rubocop 77 | ruby-lsp 78 | rubyzip 79 | 80 | BUNDLED WITH 81 | 2.6.2 82 | -------------------------------------------------------------------------------- /LICENSE-DEPENDENCIES.md: -------------------------------------------------------------------------------- 1 | Difftastic (Ruby) may ship with some third party dependencies, which are listed here along with their licenses. 2 | 3 | ### [`difftastic`](https://github.com/Wilfred/difftastic/blob/master/LICENSE) 4 | 5 | ``` 6 | MIT License 7 | 8 | Copyright (c) 2021-2025 Wilfred Hughes 9 | 10 | Permission is hereby granted, free of charge, to any person obtaining a copy 11 | of this software and associated documentation files (the "Software"), to deal 12 | in the Software without restriction, including without limitation the rights 13 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 14 | copies of the Software, and to permit persons to whom the Software is 15 | furnished to do so, subject to the following conditions: 16 | 17 | The above copyright notice and this permission notice shall be included in all 18 | copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 26 | SOFTWARE. 27 | ``` 28 | 29 | ### [`tree-sitter-ada`](https://github.com/briot/tree-sitter-ada/blob/master/LICENSE.txt) 30 | 31 | ``` 32 | MIT License 33 | 34 | Copyright (c) 2023 Emmanuel Briot 35 | 36 | Permission is hereby granted, free of charge, to any person obtaining a copy 37 | of this software and associated documentation files (the "Software"), to deal 38 | in the Software without restriction, including without limitation the rights 39 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 40 | copies of the Software, and to permit persons to whom the Software is 41 | furnished to do so, subject to the following conditions: 42 | 43 | The above copyright notice and this permission notice shall be included in all 44 | copies or substantial portions of the Software. 45 | 46 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 47 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 48 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 49 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 50 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 51 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 52 | SOFTWARE. 53 | ``` 54 | 55 | ### [`tree-sitter-sfapex`](https://github.com/aheber/tree-sitter-sfapex/blob/main/LICENSE) 56 | 57 | ``` 58 | The MIT License (MIT) 59 | 60 | Copyright (c) 2012 Anthony Heber 61 | 62 | Permission is hereby granted, free of charge, to any person obtaining a copy 63 | of this software and associated documentation files (the "Software"), to deal 64 | in the Software without restriction, including without limitation the rights 65 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 66 | copies of the Software, and to permit persons to whom the Software is 67 | furnished to do so, subject to the following conditions: 68 | 69 | The above copyright notice and this permission notice shall be included in all 70 | copies or substantial portions of the Software. 71 | 72 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 73 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 74 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 75 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 76 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 77 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 78 | SOFTWARE. 79 | ``` 80 | 81 | ### [`tree-sitter-bash`](https://github.com/tree-sitter/tree-sitter-bash/blob/master/LICENSE) 82 | 83 | ``` 84 | The MIT License (MIT) 85 | 86 | Copyright (c) 2017 Max Brunsfeld 87 | 88 | Permission is hereby granted, free of charge, to any person obtaining a copy 89 | of this software and associated documentation files (the "Software"), to deal 90 | in the Software without restriction, including without limitation the rights 91 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 92 | copies of the Software, and to permit persons to whom the Software is 93 | furnished to do so, subject to the following conditions: 94 | 95 | The above copyright notice and this permission notice shall be included in all 96 | copies or substantial portions of the Software. 97 | 98 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 99 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 100 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 101 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 102 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 103 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 104 | SOFTWARE. 105 | ``` 106 | 107 | ### [`tree-sitter-c`](https://github.com/tree-sitter/tree-sitter-c/blob/master/LICENSE) 108 | 109 | ``` 110 | The MIT License (MIT) 111 | 112 | Copyright (c) 2014 Max Brunsfeld 113 | 114 | Permission is hereby granted, free of charge, to any person obtaining a copy 115 | of this software and associated documentation files (the "Software"), to deal 116 | in the Software without restriction, including without limitation the rights 117 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 118 | copies of the Software, and to permit persons to whom the Software is 119 | furnished to do so, subject to the following conditions: 120 | 121 | The above copyright notice and this permission notice shall be included in all 122 | copies or substantial portions of the Software. 123 | 124 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 125 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 126 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 127 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 128 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 129 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 130 | SOFTWARE. 131 | ``` 132 | 133 | ### [`tree-sitter-cpp`](https://github.com/tree-sitter/tree-sitter-cpp/blob/master/LICENSE) 134 | 135 | ``` 136 | The MIT License (MIT) 137 | 138 | Copyright (c) 2014 Max Brunsfeld 139 | 140 | Permission is hereby granted, free of charge, to any person obtaining a copy 141 | of this software and associated documentation files (the "Software"), to deal 142 | in the Software without restriction, including without limitation the rights 143 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 144 | copies of the Software, and to permit persons to whom the Software is 145 | furnished to do so, subject to the following conditions: 146 | 147 | The above copyright notice and this permission notice shall be included in all 148 | copies or substantial portions of the Software. 149 | 150 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 151 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 152 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 153 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 154 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 155 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 156 | SOFTWARE. 157 | ``` 158 | 159 | ### [`tree-sitter-c-sharp`](https://github.com/tree-sitter/tree-sitter-c-sharp/blob/master/LICENSE) 160 | 161 | ``` 162 | The MIT License (MIT) 163 | 164 | Copyright (c) 2014-2023 Max Brunsfeld, Damien Guard, Amaan Qureshi, and contributors. 165 | 166 | Permission is hereby granted, free of charge, to any person obtaining a copy 167 | of this software and associated documentation files (the "Software"), to deal 168 | in the Software without restriction, including without limitation the rights 169 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 170 | copies of the Software, and to permit persons to whom the Software is 171 | furnished to do so, subject to the following conditions: 172 | 173 | The above copyright notice and this permission notice shall be included in all 174 | copies or substantial portions of the Software. 175 | 176 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 177 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 178 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 179 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 180 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 181 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 182 | SOFTWARE. 183 | ``` 184 | 185 | ### [`tree-sitter-clojure`](https://github.com/sogaiu/tree-sitter-clojure?tab=CC0-1.0-1-ov-file) 186 | 187 | ``` 188 | Creative Commons Legal Code 189 | 190 | CC0 1.0 Universal 191 | 192 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 193 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 194 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 195 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 196 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 197 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 198 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 199 | HEREUNDER. 200 | 201 | Statement of Purpose 202 | 203 | The laws of most jurisdictions throughout the world automatically confer 204 | exclusive Copyright and Related Rights (defined below) upon the creator 205 | and subsequent owner(s) (each and all, an "owner") of an original work of 206 | authorship and/or a database (each, a "Work"). 207 | 208 | Certain owners wish to permanently relinquish those rights to a Work for 209 | the purpose of contributing to a commons of creative, cultural and 210 | scientific works ("Commons") that the public can reliably and without fear 211 | of later claims of infringement build upon, modify, incorporate in other 212 | works, reuse and redistribute as freely as possible in any form whatsoever 213 | and for any purposes, including without limitation commercial purposes. 214 | These owners may contribute to the Commons to promote the ideal of a free 215 | culture and the further production of creative, cultural and scientific 216 | works, or to gain reputation or greater distribution for their Work in 217 | part through the use and efforts of others. 218 | 219 | For these and/or other purposes and motivations, and without any 220 | expectation of additional consideration or compensation, the person 221 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 222 | is an owner of Copyright and Related Rights in the Work, voluntarily 223 | elects to apply CC0 to the Work and publicly distribute the Work under its 224 | terms, with knowledge of his or her Copyright and Related Rights in the 225 | Work and the meaning and intended legal effect of CC0 on those rights. 226 | 227 | 1. Copyright and Related Rights. A Work made available under CC0 may be 228 | protected by copyright and related or neighboring rights ("Copyright and 229 | Related Rights"). Copyright and Related Rights include, but are not 230 | limited to, the following: 231 | 232 | i. the right to reproduce, adapt, distribute, perform, display, 233 | communicate, and translate a Work; 234 | ii. moral rights retained by the original author(s) and/or performer(s); 235 | iii. publicity and privacy rights pertaining to a person's image or 236 | likeness depicted in a Work; 237 | iv. rights protecting against unfair competition in regards to a Work, 238 | subject to the limitations in paragraph 4(a), below; 239 | v. rights protecting the extraction, dissemination, use and reuse of data 240 | in a Work; 241 | vi. database rights (such as those arising under Directive 96/9/EC of the 242 | European Parliament and of the Council of 11 March 1996 on the legal 243 | protection of databases, and under any national implementation 244 | thereof, including any amended or successor version of such 245 | directive); and 246 | vii. other similar, equivalent or corresponding rights throughout the 247 | world based on applicable law or treaty, and any national 248 | implementations thereof. 249 | 250 | 2. Waiver. To the greatest extent permitted by, but not in contravention 251 | of, applicable law, Affirmer hereby overtly, fully, permanently, 252 | irrevocably and unconditionally waives, abandons, and surrenders all of 253 | Affirmer's Copyright and Related Rights and associated claims and causes 254 | of action, whether now known or unknown (including existing as well as 255 | future claims and causes of action), in the Work (i) in all territories 256 | worldwide, (ii) for the maximum duration provided by applicable law or 257 | treaty (including future time extensions), (iii) in any current or future 258 | medium and for any number of copies, and (iv) for any purpose whatsoever, 259 | including without limitation commercial, advertising or promotional 260 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 261 | member of the public at large and to the detriment of Affirmer's heirs and 262 | successors, fully intending that such Waiver shall not be subject to 263 | revocation, rescission, cancellation, termination, or any other legal or 264 | equitable action to disrupt the quiet enjoyment of the Work by the public 265 | as contemplated by Affirmer's express Statement of Purpose. 266 | 267 | 3. Public License Fallback. Should any part of the Waiver for any reason 268 | be judged legally invalid or ineffective under applicable law, then the 269 | Waiver shall be preserved to the maximum extent permitted taking into 270 | account Affirmer's express Statement of Purpose. In addition, to the 271 | extent the Waiver is so judged Affirmer hereby grants to each affected 272 | person a royalty-free, non transferable, non sublicensable, non exclusive, 273 | irrevocable and unconditional license to exercise Affirmer's Copyright and 274 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 275 | maximum duration provided by applicable law or treaty (including future 276 | time extensions), (iii) in any current or future medium and for any number 277 | of copies, and (iv) for any purpose whatsoever, including without 278 | limitation commercial, advertising or promotional purposes (the 279 | "License"). The License shall be deemed effective as of the date CC0 was 280 | applied by Affirmer to the Work. Should any part of the License for any 281 | reason be judged legally invalid or ineffective under applicable law, such 282 | partial invalidity or ineffectiveness shall not invalidate the remainder 283 | of the License, and in such case Affirmer hereby affirms that he or she 284 | will not (i) exercise any of his or her remaining Copyright and Related 285 | Rights in the Work or (ii) assert any associated claims and causes of 286 | action with respect to the Work, in either case contrary to Affirmer's 287 | express Statement of Purpose. 288 | 289 | 4. Limitations and Disclaimers. 290 | 291 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 292 | surrendered, licensed or otherwise affected by this document. 293 | b. Affirmer offers the Work as-is and makes no representations or 294 | warranties of any kind concerning the Work, express, implied, 295 | statutory or otherwise, including without limitation warranties of 296 | title, merchantability, fitness for a particular purpose, non 297 | infringement, or the absence of latent or other defects, accuracy, or 298 | the present or absence of errors, whether or not discoverable, all to 299 | the greatest extent permissible under applicable law. 300 | c. Affirmer disclaims responsibility for clearing rights of other persons 301 | that may apply to the Work or any use thereof, including without 302 | limitation any person's Copyright and Related Rights in the Work. 303 | Further, Affirmer disclaims responsibility for obtaining any necessary 304 | consents, permissions or other rights required for any use of the 305 | Work. 306 | d. Affirmer understands and acknowledges that Creative Commons is not a 307 | party to this document and has no duty or obligation with respect to 308 | this CC0 or use of the Work. 309 | ``` 310 | 311 | ### [`tree-sitter-cmake`](https://github.com/uyha/tree-sitter-cmake/blob/master/LICENSE) 312 | 313 | ``` 314 | The MIT License (MIT) 315 | 316 | Copyright (c) 2021 Uy Ha 317 | 318 | Permission is hereby granted, free of charge, to any person obtaining a copy 319 | of this software and associated documentation files (the "Software"), to deal 320 | in the Software without restriction, including without limitation the rights 321 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 322 | copies of the Software, and to permit persons to whom the Software is 323 | furnished to do so, subject to the following conditions: 324 | 325 | The above copyright notice and this permission notice shall be included in all 326 | copies or substantial portions of the Software. 327 | 328 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 329 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 330 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 331 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 332 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 333 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 334 | SOFTWARE. 335 | ``` 336 | 337 | ### [`tree-sitter-commonlisp`](https://github.com/tree-sitter-grammars/tree-sitter-commonlisp/blob/master/LICENSE.md) 338 | 339 | ``` 340 | The MIT License (MIT) 341 | 342 | Copyright (c) 2021 Stephan Seitz 343 | 344 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 345 | 346 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 347 | 348 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 349 | ``` 350 | 351 | ### [`tree-sitter-dart`](https://github.com/UserNobody14/tree-sitter-dart/blob/master/LICENSE) 352 | 353 | ``` 354 | Copyright (c) 2020-2023 UserNobody14 and others 355 | 356 | Permission is hereby granted, free of charge, to any person obtaining 357 | a copy of this software and associated documentation files (the 358 | "Software"), to deal in the Software without restriction, including 359 | without limitation the rights to use, copy, modify, merge, publish, 360 | distribute, sublicense, and/or sell copies of the Software, and to 361 | permit persons to whom the Software is furnished to do so, subject to 362 | the following conditions: 363 | 364 | The above copyright notice and this permission notice shall be 365 | included in all copies or substantial portions of the Software. 366 | 367 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 368 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 369 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 370 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 371 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 372 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 373 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 374 | ``` 375 | 376 | ### [`tree-sitter-devicetree`](https://github.com/joelspadin/tree-sitter-devicetree/blob/main/LICENSE) 377 | 378 | ``` 379 | The MIT License (MIT) 380 | 381 | Copyright (c) 2020 Joel Spadin 382 | 383 | Permission is hereby granted, free of charge, to any person obtaining a copy 384 | of this software and associated documentation files (the "Software"), to deal 385 | in the Software without restriction, including without limitation the rights 386 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 387 | copies of the Software, and to permit persons to whom the Software is 388 | furnished to do so, subject to the following conditions: 389 | 390 | The above copyright notice and this permission notice shall be included in all 391 | copies or substantial portions of the Software. 392 | 393 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 394 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 395 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 396 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 397 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 398 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 399 | SOFTWARE. 400 | ``` 401 | 402 | ### [`tree-sitter-elixir`](https://github.com/elixir-lang/tree-sitter-elixir/blob/main/LICENSE) 403 | 404 | ``` 405 | Apache License 406 | Version 2.0, January 2004 407 | http://www.apache.org/licenses/ 408 | 409 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 410 | 411 | 1. Definitions. 412 | 413 | "License" shall mean the terms and conditions for use, reproduction, 414 | and distribution as defined by Sections 1 through 9 of this document. 415 | 416 | "Licensor" shall mean the copyright owner or entity authorized by 417 | the copyright owner that is granting the License. 418 | 419 | "Legal Entity" shall mean the union of the acting entity and all 420 | other entities that control, are controlled by, or are under common 421 | control with that entity. For the purposes of this definition, 422 | "control" means (i) the power, direct or indirect, to cause the 423 | direction or management of such entity, whether by contract or 424 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 425 | outstanding shares, or (iii) beneficial ownership of such entity. 426 | 427 | "You" (or "Your") shall mean an individual or Legal Entity 428 | exercising permissions granted by this License. 429 | 430 | "Source" form shall mean the preferred form for making modifications, 431 | including but not limited to software source code, documentation 432 | source, and configuration files. 433 | 434 | "Object" form shall mean any form resulting from mechanical 435 | transformation or translation of a Source form, including but 436 | not limited to compiled object code, generated documentation, 437 | and conversions to other media types. 438 | 439 | "Work" shall mean the work of authorship, whether in Source or 440 | Object form, made available under the License, as indicated by a 441 | copyright notice that is included in or attached to the work 442 | (an example is provided in the Appendix below). 443 | 444 | "Derivative Works" shall mean any work, whether in Source or Object 445 | form, that is based on (or derived from) the Work and for which the 446 | editorial revisions, annotations, elaborations, or other modifications 447 | represent, as a whole, an original work of authorship. For the purposes 448 | of this License, Derivative Works shall not include works that remain 449 | separable from, or merely link (or bind by name) to the interfaces of, 450 | the Work and Derivative Works thereof. 451 | 452 | "Contribution" shall mean any work of authorship, including 453 | the original version of the Work and any modifications or additions 454 | to that Work or Derivative Works thereof, that is intentionally 455 | submitted to Licensor for inclusion in the Work by the copyright owner 456 | or by an individual or Legal Entity authorized to submit on behalf of 457 | the copyright owner. For the purposes of this definition, "submitted" 458 | means any form of electronic, verbal, or written communication sent 459 | to the Licensor or its representatives, including but not limited to 460 | communication on electronic mailing lists, source code control systems, 461 | and issue tracking systems that are managed by, or on behalf of, the 462 | Licensor for the purpose of discussing and improving the Work, but 463 | excluding communication that is conspicuously marked or otherwise 464 | designated in writing by the copyright owner as "Not a Contribution." 465 | 466 | "Contributor" shall mean Licensor and any individual or Legal Entity 467 | on behalf of whom a Contribution has been received by Licensor and 468 | subsequently incorporated within the Work. 469 | 470 | 2. Grant of Copyright License. Subject to the terms and conditions of 471 | this License, each Contributor hereby grants to You a perpetual, 472 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 473 | copyright license to reproduce, prepare Derivative Works of, 474 | publicly display, publicly perform, sublicense, and distribute the 475 | Work and such Derivative Works in Source or Object form. 476 | 477 | 3. Grant of Patent License. Subject to the terms and conditions of 478 | this License, each Contributor hereby grants to You a perpetual, 479 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 480 | (except as stated in this section) patent license to make, have made, 481 | use, offer to sell, sell, import, and otherwise transfer the Work, 482 | where such license applies only to those patent claims licensable 483 | by such Contributor that are necessarily infringed by their 484 | Contribution(s) alone or by combination of their Contribution(s) 485 | with the Work to which such Contribution(s) was submitted. If You 486 | institute patent litigation against any entity (including a 487 | cross-claim or counterclaim in a lawsuit) alleging that the Work 488 | or a Contribution incorporated within the Work constitutes direct 489 | or contributory patent infringement, then any patent licenses 490 | granted to You under this License for that Work shall terminate 491 | as of the date such litigation is filed. 492 | 493 | 4. Redistribution. You may reproduce and distribute copies of the 494 | Work or Derivative Works thereof in any medium, with or without 495 | modifications, and in Source or Object form, provided that You 496 | meet the following conditions: 497 | 498 | (a) You must give any other recipients of the Work or 499 | Derivative Works a copy of this License; and 500 | 501 | (b) You must cause any modified files to carry prominent notices 502 | stating that You changed the files; and 503 | 504 | (c) You must retain, in the Source form of any Derivative Works 505 | that You distribute, all copyright, patent, trademark, and 506 | attribution notices from the Source form of the Work, 507 | excluding those notices that do not pertain to any part of 508 | the Derivative Works; and 509 | 510 | (d) If the Work includes a "NOTICE" text file as part of its 511 | distribution, then any Derivative Works that You distribute must 512 | include a readable copy of the attribution notices contained 513 | within such NOTICE file, excluding those notices that do not 514 | pertain to any part of the Derivative Works, in at least one 515 | of the following places: within a NOTICE text file distributed 516 | as part of the Derivative Works; within the Source form or 517 | documentation, if provided along with the Derivative Works; or, 518 | within a display generated by the Derivative Works, if and 519 | wherever such third-party notices normally appear. The contents 520 | of the NOTICE file are for informational purposes only and 521 | do not modify the License. You may add Your own attribution 522 | notices within Derivative Works that You distribute, alongside 523 | or as an addendum to the NOTICE text from the Work, provided 524 | that such additional attribution notices cannot be construed 525 | as modifying the License. 526 | 527 | You may add Your own copyright statement to Your modifications and 528 | may provide additional or different license terms and conditions 529 | for use, reproduction, or distribution of Your modifications, or 530 | for any such Derivative Works as a whole, provided Your use, 531 | reproduction, and distribution of the Work otherwise complies with 532 | the conditions stated in this License. 533 | 534 | 5. Submission of Contributions. Unless You explicitly state otherwise, 535 | any Contribution intentionally submitted for inclusion in the Work 536 | by You to the Licensor shall be under the terms and conditions of 537 | this License, without any additional terms or conditions. 538 | Notwithstanding the above, nothing herein shall supersede or modify 539 | the terms of any separate license agreement you may have executed 540 | with Licensor regarding such Contributions. 541 | 542 | 6. Trademarks. This License does not grant permission to use the trade 543 | names, trademarks, service marks, or product names of the Licensor, 544 | except as required for reasonable and customary use in describing the 545 | origin of the Work and reproducing the content of the NOTICE file. 546 | 547 | 7. Disclaimer of Warranty. Unless required by applicable law or 548 | agreed to in writing, Licensor provides the Work (and each 549 | Contributor provides its Contributions) on an "AS IS" BASIS, 550 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 551 | implied, including, without limitation, any warranties or conditions 552 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 553 | PARTICULAR PURPOSE. You are solely responsible for determining the 554 | appropriateness of using or redistributing the Work and assume any 555 | risks associated with Your exercise of permissions under this License. 556 | 557 | 8. Limitation of Liability. In no event and under no legal theory, 558 | whether in tort (including negligence), contract, or otherwise, 559 | unless required by applicable law (such as deliberate and grossly 560 | negligent acts) or agreed to in writing, shall any Contributor be 561 | liable to You for damages, including any direct, indirect, special, 562 | incidental, or consequential damages of any character arising as a 563 | result of this License or out of the use or inability to use the 564 | Work (including but not limited to damages for loss of goodwill, 565 | work stoppage, computer failure or malfunction, or any and all 566 | other commercial damages or losses), even if such Contributor 567 | has been advised of the possibility of such damages. 568 | 569 | 9. Accepting Warranty or Additional Liability. While redistributing 570 | the Work or Derivative Works thereof, You may choose to offer, 571 | and charge a fee for, acceptance of support, warranty, indemnity, 572 | or other liability obligations and/or rights consistent with this 573 | License. However, in accepting such obligations, You may act only 574 | on Your own behalf and on Your sole responsibility, not on behalf 575 | of any other Contributor, and only if You agree to indemnify, 576 | defend, and hold each Contributor harmless for any liability 577 | incurred by, or claims asserted against, such Contributor by reason 578 | of your accepting any such warranty or additional liability. 579 | 580 | END OF TERMS AND CONDITIONS 581 | ``` 582 | 583 | ### [`tree-sitter-elm`](https://github.com/elm-tooling/tree-sitter-elm) 584 | 585 | ``` 586 | The MIT License (MIT) 587 | 588 | Copyright (c) 2018 Kolja Lampe 589 | 590 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 591 | 592 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 593 | 594 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 595 | ``` 596 | 597 | ### [`tree-sitter-elvish`](https://github.com/elves/tree-sitter-elvish/blob/main/LICENSE) 598 | 599 | ``` 600 | Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. 601 | 602 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 603 | ``` 604 | 605 | ### [`tree-sitter-erlang`](https://github.com/WhatsApp/tree-sitter-erlang/blob/main/LICENSE) 606 | 607 | ``` 608 | Apache License 609 | Version 2.0, January 2004 610 | http://www.apache.org/licenses/ 611 | 612 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 613 | 614 | 1. Definitions. 615 | 616 | "License" shall mean the terms and conditions for use, reproduction, 617 | and distribution as defined by Sections 1 through 9 of this document. 618 | 619 | "Licensor" shall mean the copyright owner or entity authorized by 620 | the copyright owner that is granting the License. 621 | 622 | "Legal Entity" shall mean the union of the acting entity and all 623 | other entities that control, are controlled by, or are under common 624 | control with that entity. For the purposes of this definition, 625 | "control" means (i) the power, direct or indirect, to cause the 626 | direction or management of such entity, whether by contract or 627 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 628 | outstanding shares, or (iii) beneficial ownership of such entity. 629 | 630 | "You" (or "Your") shall mean an individual or Legal Entity 631 | exercising permissions granted by this License. 632 | 633 | "Source" form shall mean the preferred form for making modifications, 634 | including but not limited to software source code, documentation 635 | source, and configuration files. 636 | 637 | "Object" form shall mean any form resulting from mechanical 638 | transformation or translation of a Source form, including but 639 | not limited to compiled object code, generated documentation, 640 | and conversions to other media types. 641 | 642 | "Work" shall mean the work of authorship, whether in Source or 643 | Object form, made available under the License, as indicated by a 644 | copyright notice that is included in or attached to the work 645 | (an example is provided in the Appendix below). 646 | 647 | "Derivative Works" shall mean any work, whether in Source or Object 648 | form, that is based on (or derived from) the Work and for which the 649 | editorial revisions, annotations, elaborations, or other modifications 650 | represent, as a whole, an original work of authorship. For the purposes 651 | of this License, Derivative Works shall not include works that remain 652 | separable from, or merely link (or bind by name) to the interfaces of, 653 | the Work and Derivative Works thereof. 654 | 655 | "Contribution" shall mean any work of authorship, including 656 | the original version of the Work and any modifications or additions 657 | to that Work or Derivative Works thereof, that is intentionally 658 | submitted to Licensor for inclusion in the Work by the copyright owner 659 | or by an individual or Legal Entity authorized to submit on behalf of 660 | the copyright owner. For the purposes of this definition, "submitted" 661 | means any form of electronic, verbal, or written communication sent 662 | to the Licensor or its representatives, including but not limited to 663 | communication on electronic mailing lists, source code control systems, 664 | and issue tracking systems that are managed by, or on behalf of, the 665 | Licensor for the purpose of discussing and improving the Work, but 666 | excluding communication that is conspicuously marked or otherwise 667 | designated in writing by the copyright owner as "Not a Contribution." 668 | 669 | "Contributor" shall mean Licensor and any individual or Legal Entity 670 | on behalf of whom a Contribution has been received by Licensor and 671 | subsequently incorporated within the Work. 672 | 673 | 2. Grant of Copyright License. Subject to the terms and conditions of 674 | this License, each Contributor hereby grants to You a perpetual, 675 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 676 | copyright license to reproduce, prepare Derivative Works of, 677 | publicly display, publicly perform, sublicense, and distribute the 678 | Work and such Derivative Works in Source or Object form. 679 | 680 | 3. Grant of Patent License. Subject to the terms and conditions of 681 | this License, each Contributor hereby grants to You a perpetual, 682 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 683 | (except as stated in this section) patent license to make, have made, 684 | use, offer to sell, sell, import, and otherwise transfer the Work, 685 | where such license applies only to those patent claims licensable 686 | by such Contributor that are necessarily infringed by their 687 | Contribution(s) alone or by combination of their Contribution(s) 688 | with the Work to which such Contribution(s) was submitted. If You 689 | institute patent litigation against any entity (including a 690 | cross-claim or counterclaim in a lawsuit) alleging that the Work 691 | or a Contribution incorporated within the Work constitutes direct 692 | or contributory patent infringement, then any patent licenses 693 | granted to You under this License for that Work shall terminate 694 | as of the date such litigation is filed. 695 | 696 | 4. Redistribution. You may reproduce and distribute copies of the 697 | Work or Derivative Works thereof in any medium, with or without 698 | modifications, and in Source or Object form, provided that You 699 | meet the following conditions: 700 | 701 | (a) You must give any other recipients of the Work or 702 | Derivative Works a copy of this License; and 703 | 704 | (b) You must cause any modified files to carry prominent notices 705 | stating that You changed the files; and 706 | 707 | (c) You must retain, in the Source form of any Derivative Works 708 | that You distribute, all copyright, patent, trademark, and 709 | attribution notices from the Source form of the Work, 710 | excluding those notices that do not pertain to any part of 711 | the Derivative Works; and 712 | 713 | (d) If the Work includes a "NOTICE" text file as part of its 714 | distribution, then any Derivative Works that You distribute must 715 | include a readable copy of the attribution notices contained 716 | within such NOTICE file, excluding those notices that do not 717 | pertain to any part of the Derivative Works, in at least one 718 | of the following places: within a NOTICE text file distributed 719 | as part of the Derivative Works; within the Source form or 720 | documentation, if provided along with the Derivative Works; or, 721 | within a display generated by the Derivative Works, if and 722 | wherever such third-party notices normally appear. The contents 723 | of the NOTICE file are for informational purposes only and 724 | do not modify the License. You may add Your own attribution 725 | notices within Derivative Works that You distribute, alongside 726 | or as an addendum to the NOTICE text from the Work, provided 727 | that such additional attribution notices cannot be construed 728 | as modifying the License. 729 | 730 | You may add Your own copyright statement to Your modifications and 731 | may provide additional or different license terms and conditions 732 | for use, reproduction, or distribution of Your modifications, or 733 | for any such Derivative Works as a whole, provided Your use, 734 | reproduction, and distribution of the Work otherwise complies with 735 | the conditions stated in this License. 736 | 737 | 5. Submission of Contributions. Unless You explicitly state otherwise, 738 | any Contribution intentionally submitted for inclusion in the Work 739 | by You to the Licensor shall be under the terms and conditions of 740 | this License, without any additional terms or conditions. 741 | Notwithstanding the above, nothing herein shall supersede or modify 742 | the terms of any separate license agreement you may have executed 743 | with Licensor regarding such Contributions. 744 | 745 | 6. Trademarks. This License does not grant permission to use the trade 746 | names, trademarks, service marks, or product names of the Licensor, 747 | except as required for reasonable and customary use in describing the 748 | origin of the Work and reproducing the content of the NOTICE file. 749 | 750 | 7. Disclaimer of Warranty. Unless required by applicable law or 751 | agreed to in writing, Licensor provides the Work (and each 752 | Contributor provides its Contributions) on an "AS IS" BASIS, 753 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 754 | implied, including, without limitation, any warranties or conditions 755 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 756 | PARTICULAR PURPOSE. You are solely responsible for determining the 757 | appropriateness of using or redistributing the Work and assume any 758 | risks associated with Your exercise of permissions under this License. 759 | 760 | 8. Limitation of Liability. In no event and under no legal theory, 761 | whether in tort (including negligence), contract, or otherwise, 762 | unless required by applicable law (such as deliberate and grossly 763 | negligent acts) or agreed to in writing, shall any Contributor be 764 | liable to You for damages, including any direct, indirect, special, 765 | incidental, or consequential damages of any character arising as a 766 | result of this License or out of the use or inability to use the 767 | Work (including but not limited to damages for loss of goodwill, 768 | work stoppage, computer failure or malfunction, or any and all 769 | other commercial damages or losses), even if such Contributor 770 | has been advised of the possibility of such damages. 771 | 772 | 9. Accepting Warranty or Additional Liability. While redistributing 773 | the Work or Derivative Works thereof, You may choose to offer, 774 | and charge a fee for, acceptance of support, warranty, indemnity, 775 | or other liability obligations and/or rights consistent with this 776 | License. However, in accepting such obligations, You may act only 777 | on Your own behalf and on Your sole responsibility, not on behalf 778 | of any other Contributor, and only if You agree to indemnify, 779 | defend, and hold each Contributor harmless for any liability 780 | incurred by, or claims asserted against, such Contributor by reason 781 | of your accepting any such warranty or additional liability. 782 | 783 | END OF TERMS AND CONDITIONS 784 | 785 | APPENDIX: How to apply the Apache License to your work. 786 | 787 | To apply the Apache License to your work, attach the following 788 | boilerplate notice, with the fields enclosed by brackets "[]" 789 | replaced with your own identifying information. (Don't include 790 | the brackets!) The text should be enclosed in the appropriate 791 | comment syntax for the file format. We also recommend that a 792 | file or class name and description of purpose be included on the 793 | same "printed page" as the copyright notice for easier 794 | identification within third-party archives. 795 | 796 | Copyright [yyyy] [name of copyright owner] 797 | 798 | Licensed under the Apache License, Version 2.0 (the "License"); 799 | you may not use this file except in compliance with the License. 800 | You may obtain a copy of the License at 801 | 802 | http://www.apache.org/licenses/LICENSE-2.0 803 | 804 | Unless required by applicable law or agreed to in writing, software 805 | distributed under the License is distributed on an "AS IS" BASIS, 806 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 807 | See the License for the specific language governing permissions and 808 | limitations under the License. 809 | ``` 810 | 811 | ### [`tree-sitter-elisp`](https://github.com/Wilfred/tree-sitter-elisp/blob/main/LICENSE) 812 | 813 | ``` 814 | MIT License 815 | 816 | Copyright (c) 2021 Wilfred Hughes 817 | 818 | Permission is hereby granted, free of charge, to any person obtaining a copy 819 | of this software and associated documentation files (the "Software"), to deal 820 | in the Software without restriction, including without limitation the rights 821 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 822 | copies of the Software, and to permit persons to whom the Software is 823 | furnished to do so, subject to the following conditions: 824 | 825 | The above copyright notice and this permission notice shall be included in all 826 | copies or substantial portions of the Software. 827 | 828 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 829 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 830 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 831 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 832 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 833 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 834 | SOFTWARE. 835 | ``` 836 | 837 | ### [`tree-sitter-fsharp`](https://github.com/ionide/tree-sitter-fsharp/blob/main/LICENSE) 838 | 839 | ``` 840 | MIT License 841 | 842 | Copyright (c) 2023 Nikolaj Sidorenco 843 | 844 | Permission is hereby granted, free of charge, to any person obtaining a copy 845 | of this software and associated documentation files (the "Software"), to deal 846 | in the Software without restriction, including without limitation the rights 847 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 848 | copies of the Software, and to permit persons to whom the Software is 849 | furnished to do so, subject to the following conditions: 850 | 851 | The above copyright notice and this permission notice shall be included in all 852 | copies or substantial portions of the Software. 853 | 854 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 855 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 856 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 857 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 858 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 859 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 860 | SOFTWARE. 861 | ``` 862 | 863 | ### [`tree-sitter-gleam`](https://github.com/gleam-lang/tree-sitter-gleam/blob/main/LICENSE) 864 | 865 | ``` 866 | 867 | Apache License 868 | Version 2.0, January 2004 869 | http://www.apache.org/licenses/ 870 | 871 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 872 | 873 | 1. Definitions. 874 | 875 | "License" shall mean the terms and conditions for use, reproduction, 876 | and distribution as defined by Sections 1 through 9 of this document. 877 | 878 | "Licensor" shall mean the copyright owner or entity authorized by 879 | the copyright owner that is granting the License. 880 | 881 | "Legal Entity" shall mean the union of the acting entity and all 882 | other entities that control, are controlled by, or are under common 883 | control with that entity. For the purposes of this definition, 884 | "control" means (i) the power, direct or indirect, to cause the 885 | direction or management of such entity, whether by contract or 886 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 887 | outstanding shares, or (iii) beneficial ownership of such entity. 888 | 889 | "You" (or "Your") shall mean an individual or Legal Entity 890 | exercising permissions granted by this License. 891 | 892 | "Source" form shall mean the preferred form for making modifications, 893 | including but not limited to software source code, documentation 894 | source, and configuration files. 895 | 896 | "Object" form shall mean any form resulting from mechanical 897 | transformation or translation of a Source form, including but 898 | not limited to compiled object code, generated documentation, 899 | and conversions to other media types. 900 | 901 | "Work" shall mean the work of authorship, whether in Source or 902 | Object form, made available under the License, as indicated by a 903 | copyright notice that is included in or attached to the work 904 | (an example is provided in the Appendix below). 905 | 906 | "Derivative Works" shall mean any work, whether in Source or Object 907 | form, that is based on (or derived from) the Work and for which the 908 | editorial revisions, annotations, elaborations, or other modifications 909 | represent, as a whole, an original work of authorship. For the purposes 910 | of this License, Derivative Works shall not include works that remain 911 | separable from, or merely link (or bind by name) to the interfaces of, 912 | the Work and Derivative Works thereof. 913 | 914 | "Contribution" shall mean any work of authorship, including 915 | the original version of the Work and any modifications or additions 916 | to that Work or Derivative Works thereof, that is intentionally 917 | submitted to Licensor for inclusion in the Work by the copyright owner 918 | or by an individual or Legal Entity authorized to submit on behalf of 919 | the copyright owner. For the purposes of this definition, "submitted" 920 | means any form of electronic, verbal, or written communication sent 921 | to the Licensor or its representatives, including but not limited to 922 | communication on electronic mailing lists, source code control systems, 923 | and issue tracking systems that are managed by, or on behalf of, the 924 | Licensor for the purpose of discussing and improving the Work, but 925 | excluding communication that is conspicuously marked or otherwise 926 | designated in writing by the copyright owner as "Not a Contribution." 927 | 928 | "Contributor" shall mean Licensor and any individual or Legal Entity 929 | on behalf of whom a Contribution has been received by Licensor and 930 | subsequently incorporated within the Work. 931 | 932 | 2. Grant of Copyright License. Subject to the terms and conditions of 933 | this License, each Contributor hereby grants to You a perpetual, 934 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 935 | copyright license to reproduce, prepare Derivative Works of, 936 | publicly display, publicly perform, sublicense, and distribute the 937 | Work and such Derivative Works in Source or Object form. 938 | 939 | 3. Grant of Patent License. Subject to the terms and conditions of 940 | this License, each Contributor hereby grants to You a perpetual, 941 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 942 | (except as stated in this section) patent license to make, have made, 943 | use, offer to sell, sell, import, and otherwise transfer the Work, 944 | where such license applies only to those patent claims licensable 945 | by such Contributor that are necessarily infringed by their 946 | Contribution(s) alone or by combination of their Contribution(s) 947 | with the Work to which such Contribution(s) was submitted. If You 948 | institute patent litigation against any entity (including a 949 | cross-claim or counterclaim in a lawsuit) alleging that the Work 950 | or a Contribution incorporated within the Work constitutes direct 951 | or contributory patent infringement, then any patent licenses 952 | granted to You under this License for that Work shall terminate 953 | as of the date such litigation is filed. 954 | 955 | 4. Redistribution. You may reproduce and distribute copies of the 956 | Work or Derivative Works thereof in any medium, with or without 957 | modifications, and in Source or Object form, provided that You 958 | meet the following conditions: 959 | 960 | (a) You must give any other recipients of the Work or 961 | Derivative Works a copy of this License; and 962 | 963 | (b) You must cause any modified files to carry prominent notices 964 | stating that You changed the files; and 965 | 966 | (c) You must retain, in the Source form of any Derivative Works 967 | that You distribute, all copyright, patent, trademark, and 968 | attribution notices from the Source form of the Work, 969 | excluding those notices that do not pertain to any part of 970 | the Derivative Works; and 971 | 972 | (d) If the Work includes a "NOTICE" text file as part of its 973 | distribution, then any Derivative Works that You distribute must 974 | include a readable copy of the attribution notices contained 975 | within such NOTICE file, excluding those notices that do not 976 | pertain to any part of the Derivative Works, in at least one 977 | of the following places: within a NOTICE text file distributed 978 | as part of the Derivative Works; within the Source form or 979 | documentation, if provided along with the Derivative Works; or, 980 | within a display generated by the Derivative Works, if and 981 | wherever such third-party notices normally appear. The contents 982 | of the NOTICE file are for informational purposes only and 983 | do not modify the License. You may add Your own attribution 984 | notices within Derivative Works that You distribute, alongside 985 | or as an addendum to the NOTICE text from the Work, provided 986 | that such additional attribution notices cannot be construed 987 | as modifying the License. 988 | 989 | You may add Your own copyright statement to Your modifications and 990 | may provide additional or different license terms and conditions 991 | for use, reproduction, or distribution of Your modifications, or 992 | for any such Derivative Works as a whole, provided Your use, 993 | reproduction, and distribution of the Work otherwise complies with 994 | the conditions stated in this License. 995 | 996 | 5. Submission of Contributions. Unless You explicitly state otherwise, 997 | any Contribution intentionally submitted for inclusion in the Work 998 | by You to the Licensor shall be under the terms and conditions of 999 | this License, without any additional terms or conditions. 1000 | Notwithstanding the above, nothing herein shall supersede or modify 1001 | the terms of any separate license agreement you may have executed 1002 | with Licensor regarding such Contributions. 1003 | 1004 | 6. Trademarks. This License does not grant permission to use the trade 1005 | names, trademarks, service marks, or product names of the Licensor, 1006 | except as required for reasonable and customary use in describing the 1007 | origin of the Work and reproducing the content of the NOTICE file. 1008 | 1009 | 7. Disclaimer of Warranty. Unless required by applicable law or 1010 | agreed to in writing, Licensor provides the Work (and each 1011 | Contributor provides its Contributions) on an "AS IS" BASIS, 1012 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 1013 | implied, including, without limitation, any warranties or conditions 1014 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 1015 | PARTICULAR PURPOSE. You are solely responsible for determining the 1016 | appropriateness of using or redistributing the Work and assume any 1017 | risks associated with Your exercise of permissions under this License. 1018 | 1019 | 8. Limitation of Liability. In no event and under no legal theory, 1020 | whether in tort (including negligence), contract, or otherwise, 1021 | unless required by applicable law (such as deliberate and grossly 1022 | negligent acts) or agreed to in writing, shall any Contributor be 1023 | liable to You for damages, including any direct, indirect, special, 1024 | incidental, or consequential damages of any character arising as a 1025 | result of this License or out of the use or inability to use the 1026 | Work (including but not limited to damages for loss of goodwill, 1027 | work stoppage, computer failure or malfunction, or any and all 1028 | other commercial damages or losses), even if such Contributor 1029 | has been advised of the possibility of such damages. 1030 | 1031 | 9. Accepting Warranty or Additional Liability. While redistributing 1032 | the Work or Derivative Works thereof, You may choose to offer, 1033 | and charge a fee for, acceptance of support, warranty, indemnity, 1034 | or other liability obligations and/or rights consistent with this 1035 | License. However, in accepting such obligations, You may act only 1036 | on Your own behalf and on Your sole responsibility, not on behalf 1037 | of any other Contributor, and only if You agree to indemnify, 1038 | defend, and hold each Contributor harmless for any liability 1039 | incurred by, or claims asserted against, such Contributor by reason 1040 | of your accepting any such warranty or additional liability. 1041 | 1042 | END OF TERMS AND CONDITIONS 1043 | 1044 | APPENDIX: How to apply the Apache License to your work. 1045 | 1046 | To apply the Apache License to your work, attach the following 1047 | boilerplate notice, with the fields enclosed by brackets "[]" 1048 | replaced with your own identifying information. (Don't include 1049 | the brackets!) The text should be enclosed in the appropriate 1050 | comment syntax for the file format. We also recommend that a 1051 | file or class name and description of purpose be included on the 1052 | same "printed page" as the copyright notice for easier 1053 | identification within third-party archives. 1054 | 1055 | Copyright [yyyy] [name of copyright owner] 1056 | 1057 | Licensed under the Apache License, Version 2.0 (the "License"); 1058 | you may not use this file except in compliance with the License. 1059 | You may obtain a copy of the License at 1060 | 1061 | http://www.apache.org/licenses/LICENSE-2.0 1062 | 1063 | Unless required by applicable law or agreed to in writing, software 1064 | distributed under the License is distributed on an "AS IS" BASIS, 1065 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1066 | See the License for the specific language governing permissions and 1067 | limitations under the License. 1068 | ``` 1069 | 1070 | ### [`tree-sitter-go`](https://github.com/tree-sitter/tree-sitter-go/blob/master/LICENSE) 1071 | 1072 | ``` 1073 | The MIT License (MIT) 1074 | 1075 | Copyright (c) 2014 Max Brunsfeld 1076 | 1077 | Permission is hereby granted, free of charge, to any person obtaining a copy 1078 | of this software and associated documentation files (the "Software"), to deal 1079 | in the Software without restriction, including without limitation the rights 1080 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1081 | copies of the Software, and to permit persons to whom the Software is 1082 | furnished to do so, subject to the following conditions: 1083 | 1084 | The above copyright notice and this permission notice shall be included in all 1085 | copies or substantial portions of the Software. 1086 | 1087 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1088 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1089 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1090 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1091 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1092 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1093 | SOFTWARE. 1094 | ``` 1095 | 1096 | ### [`tree-sitter-hack`](https://github.com/slackhq/tree-sitter-hack/blob/main/LICENSE) 1097 | 1098 | ``` 1099 | MIT License 1100 | 1101 | Copyright (c) 2020 Antonio de Jesus Ochoa Solano 1102 | 1103 | Permission is hereby granted, free of charge, to any person obtaining a copy 1104 | of this software and associated documentation files (the "Software"), to deal 1105 | in the Software without restriction, including without limitation the rights 1106 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1107 | copies of the Software, and to permit persons to whom the Software is 1108 | furnished to do so, subject to the following conditions: 1109 | 1110 | The above copyright notice and this permission notice shall be included in all 1111 | copies or substantial portions of the Software. 1112 | 1113 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1114 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1115 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1116 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1117 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1118 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1119 | SOFTWARE. 1120 | ``` 1121 | 1122 | ### [`tree-sitter-hare`](https://git.sr.ht/~ecmma/tree-sitter-hare/tree/master/item/COPYING) 1123 | 1124 | ``` 1125 | GNU GENERAL PUBLIC LICENSE 1126 | Version 3, 29 June 2007 1127 | 1128 | Copyright (C) 2007 Free Software Foundation, Inc. 1129 | Everyone is permitted to copy and distribute verbatim copies 1130 | of this license document, but changing it is not allowed. 1131 | 1132 | Preamble 1133 | 1134 | The GNU General Public License is a free, copyleft license for 1135 | software and other kinds of works. 1136 | 1137 | The licenses for most software and other practical works are designed 1138 | to take away your freedom to share and change the works. By contrast, 1139 | the GNU General Public License is intended to guarantee your freedom to 1140 | share and change all versions of a program--to make sure it remains free 1141 | software for all its users. We, the Free Software Foundation, use the 1142 | GNU General Public License for most of our software; it applies also to 1143 | any other work released this way by its authors. You can apply it to 1144 | your programs, too. 1145 | 1146 | When we speak of free software, we are referring to freedom, not 1147 | price. Our General Public Licenses are designed to make sure that you 1148 | have the freedom to distribute copies of free software (and charge for 1149 | them if you wish), that you receive source code or can get it if you 1150 | want it, that you can change the software or use pieces of it in new 1151 | free programs, and that you know you can do these things. 1152 | 1153 | To protect your rights, we need to prevent others from denying you 1154 | these rights or asking you to surrender the rights. Therefore, you have 1155 | certain responsibilities if you distribute copies of the software, or if 1156 | you modify it: responsibilities to respect the freedom of others. 1157 | 1158 | For example, if you distribute copies of such a program, whether 1159 | gratis or for a fee, you must pass on to the recipients the same 1160 | freedoms that you received. You must make sure that they, too, receive 1161 | or can get the source code. And you must show them these terms so they 1162 | know their rights. 1163 | 1164 | Developers that use the GNU GPL protect your rights with two steps: 1165 | (1) assert copyright on the software, and (2) offer you this License 1166 | giving you legal permission to copy, distribute and/or modify it. 1167 | 1168 | For the developers' and authors' protection, the GPL clearly explains 1169 | that there is no warranty for this free software. For both users' and 1170 | authors' sake, the GPL requires that modified versions be marked as 1171 | changed, so that their problems will not be attributed erroneously to 1172 | authors of previous versions. 1173 | 1174 | Some devices are designed to deny users access to install or run 1175 | modified versions of the software inside them, although the manufacturer 1176 | can do so. This is fundamentally incompatible with the aim of 1177 | protecting users' freedom to change the software. The systematic 1178 | pattern of such abuse occurs in the area of products for individuals to 1179 | use, which is precisely where it is most unacceptable. Therefore, we 1180 | have designed this version of the GPL to prohibit the practice for those 1181 | products. If such problems arise substantially in other domains, we 1182 | stand ready to extend this provision to those domains in future versions 1183 | of the GPL, as needed to protect the freedom of users. 1184 | 1185 | Finally, every program is threatened constantly by software patents. 1186 | States should not allow patents to restrict development and use of 1187 | software on general-purpose computers, but in those that do, we wish to 1188 | avoid the special danger that patents applied to a free program could 1189 | make it effectively proprietary. To prevent this, the GPL assures that 1190 | patents cannot be used to render the program non-free. 1191 | 1192 | The precise terms and conditions for copying, distribution and 1193 | modification follow. 1194 | 1195 | TERMS AND CONDITIONS 1196 | 1197 | 0. Definitions. 1198 | 1199 | "This License" refers to version 3 of the GNU General Public License. 1200 | 1201 | "Copyright" also means copyright-like laws that apply to other kinds of 1202 | works, such as semiconductor masks. 1203 | 1204 | "The Program" refers to any copyrightable work licensed under this 1205 | License. Each licensee is addressed as "you". "Licensees" and 1206 | "recipients" may be individuals or organizations. 1207 | 1208 | To "modify" a work means to copy from or adapt all or part of the work 1209 | in a fashion requiring copyright permission, other than the making of an 1210 | exact copy. The resulting work is called a "modified version" of the 1211 | earlier work or a work "based on" the earlier work. 1212 | 1213 | A "covered work" means either the unmodified Program or a work based 1214 | on the Program. 1215 | 1216 | To "propagate" a work means to do anything with it that, without 1217 | permission, would make you directly or secondarily liable for 1218 | infringement under applicable copyright law, except executing it on a 1219 | computer or modifying a private copy. Propagation includes copying, 1220 | distribution (with or without modification), making available to the 1221 | public, and in some countries other activities as well. 1222 | 1223 | To "convey" a work means any kind of propagation that enables other 1224 | parties to make or receive copies. Mere interaction with a user through 1225 | a computer network, with no transfer of a copy, is not conveying. 1226 | 1227 | An interactive user interface displays "Appropriate Legal Notices" 1228 | to the extent that it includes a convenient and prominently visible 1229 | feature that (1) displays an appropriate copyright notice, and (2) 1230 | tells the user that there is no warranty for the work (except to the 1231 | extent that warranties are provided), that licensees may convey the 1232 | work under this License, and how to view a copy of this License. If 1233 | the interface presents a list of user commands or options, such as a 1234 | menu, a prominent item in the list meets this criterion. 1235 | 1236 | 1. Source Code. 1237 | 1238 | The "source code" for a work means the preferred form of the work 1239 | for making modifications to it. "Object code" means any non-source 1240 | form of a work. 1241 | 1242 | A "Standard Interface" means an interface that either is an official 1243 | standard defined by a recognized standards body, or, in the case of 1244 | interfaces specified for a particular programming language, one that 1245 | is widely used among developers working in that language. 1246 | 1247 | The "System Libraries" of an executable work include anything, other 1248 | than the work as a whole, that (a) is included in the normal form of 1249 | packaging a Major Component, but which is not part of that Major 1250 | Component, and (b) serves only to enable use of the work with that 1251 | Major Component, or to implement a Standard Interface for which an 1252 | implementation is available to the public in source code form. A 1253 | "Major Component", in this context, means a major essential component 1254 | (kernel, window system, and so on) of the specific operating system 1255 | (if any) on which the executable work runs, or a compiler used to 1256 | produce the work, or an object code interpreter used to run it. 1257 | 1258 | The "Corresponding Source" for a work in object code form means all 1259 | the source code needed to generate, install, and (for an executable 1260 | work) run the object code and to modify the work, including scripts to 1261 | control those activities. However, it does not include the work's 1262 | System Libraries, or general-purpose tools or generally available free 1263 | programs which are used unmodified in performing those activities but 1264 | which are not part of the work. For example, Corresponding Source 1265 | includes interface definition files associated with source files for 1266 | the work, and the source code for shared libraries and dynamically 1267 | linked subprograms that the work is specifically designed to require, 1268 | such as by intimate data communication or control flow between those 1269 | subprograms and other parts of the work. 1270 | 1271 | The Corresponding Source need not include anything that users 1272 | can regenerate automatically from other parts of the Corresponding 1273 | Source. 1274 | 1275 | The Corresponding Source for a work in source code form is that 1276 | same work. 1277 | 1278 | 2. Basic Permissions. 1279 | 1280 | All rights granted under this License are granted for the term of 1281 | copyright on the Program, and are irrevocable provided the stated 1282 | conditions are met. This License explicitly affirms your unlimited 1283 | permission to run the unmodified Program. The output from running a 1284 | covered work is covered by this License only if the output, given its 1285 | content, constitutes a covered work. This License acknowledges your 1286 | rights of fair use or other equivalent, as provided by copyright law. 1287 | 1288 | You may make, run and propagate covered works that you do not 1289 | convey, without conditions so long as your license otherwise remains 1290 | in force. You may convey covered works to others for the sole purpose 1291 | of having them make modifications exclusively for you, or provide you 1292 | with facilities for running those works, provided that you comply with 1293 | the terms of this License in conveying all material for which you do 1294 | not control copyright. Those thus making or running the covered works 1295 | for you must do so exclusively on your behalf, under your direction 1296 | and control, on terms that prohibit them from making any copies of 1297 | your copyrighted material outside their relationship with you. 1298 | 1299 | Conveying under any other circumstances is permitted solely under 1300 | the conditions stated below. Sublicensing is not allowed; section 10 1301 | makes it unnecessary. 1302 | 1303 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 1304 | 1305 | No covered work shall be deemed part of an effective technological 1306 | measure under any applicable law fulfilling obligations under article 1307 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 1308 | similar laws prohibiting or restricting circumvention of such 1309 | measures. 1310 | 1311 | When you convey a covered work, you waive any legal power to forbid 1312 | circumvention of technological measures to the extent such circumvention 1313 | is effected by exercising rights under this License with respect to 1314 | the covered work, and you disclaim any intention to limit operation or 1315 | modification of the work as a means of enforcing, against the work's 1316 | users, your or third parties' legal rights to forbid circumvention of 1317 | technological measures. 1318 | 1319 | 4. Conveying Verbatim Copies. 1320 | 1321 | You may convey verbatim copies of the Program's source code as you 1322 | receive it, in any medium, provided that you conspicuously and 1323 | appropriately publish on each copy an appropriate copyright notice; 1324 | keep intact all notices stating that this License and any 1325 | non-permissive terms added in accord with section 7 apply to the code; 1326 | keep intact all notices of the absence of any warranty; and give all 1327 | recipients a copy of this License along with the Program. 1328 | 1329 | You may charge any price or no price for each copy that you convey, 1330 | and you may offer support or warranty protection for a fee. 1331 | 1332 | 5. Conveying Modified Source Versions. 1333 | 1334 | You may convey a work based on the Program, or the modifications to 1335 | produce it from the Program, in the form of source code under the 1336 | terms of section 4, provided that you also meet all of these conditions: 1337 | 1338 | a) The work must carry prominent notices stating that you modified 1339 | it, and giving a relevant date. 1340 | 1341 | b) The work must carry prominent notices stating that it is 1342 | released under this License and any conditions added under section 1343 | 7. This requirement modifies the requirement in section 4 to 1344 | "keep intact all notices". 1345 | 1346 | c) You must license the entire work, as a whole, under this 1347 | License to anyone who comes into possession of a copy. This 1348 | License will therefore apply, along with any applicable section 7 1349 | additional terms, to the whole of the work, and all its parts, 1350 | regardless of how they are packaged. This License gives no 1351 | permission to license the work in any other way, but it does not 1352 | invalidate such permission if you have separately received it. 1353 | 1354 | d) If the work has interactive user interfaces, each must display 1355 | Appropriate Legal Notices; however, if the Program has interactive 1356 | interfaces that do not display Appropriate Legal Notices, your 1357 | work need not make them do so. 1358 | 1359 | A compilation of a covered work with other separate and independent 1360 | works, which are not by their nature extensions of the covered work, 1361 | and which are not combined with it such as to form a larger program, 1362 | in or on a volume of a storage or distribution medium, is called an 1363 | "aggregate" if the compilation and its resulting copyright are not 1364 | used to limit the access or legal rights of the compilation's users 1365 | beyond what the individual works permit. Inclusion of a covered work 1366 | in an aggregate does not cause this License to apply to the other 1367 | parts of the aggregate. 1368 | 1369 | 6. Conveying Non-Source Forms. 1370 | 1371 | You may convey a covered work in object code form under the terms 1372 | of sections 4 and 5, provided that you also convey the 1373 | machine-readable Corresponding Source under the terms of this License, 1374 | in one of these ways: 1375 | 1376 | a) Convey the object code in, or embodied in, a physical product 1377 | (including a physical distribution medium), accompanied by the 1378 | Corresponding Source fixed on a durable physical medium 1379 | customarily used for software interchange. 1380 | 1381 | b) Convey the object code in, or embodied in, a physical product 1382 | (including a physical distribution medium), accompanied by a 1383 | written offer, valid for at least three years and valid for as 1384 | long as you offer spare parts or customer support for that product 1385 | model, to give anyone who possesses the object code either (1) a 1386 | copy of the Corresponding Source for all the software in the 1387 | product that is covered by this License, on a durable physical 1388 | medium customarily used for software interchange, for a price no 1389 | more than your reasonable cost of physically performing this 1390 | conveying of source, or (2) access to copy the 1391 | Corresponding Source from a network server at no charge. 1392 | 1393 | c) Convey individual copies of the object code with a copy of the 1394 | written offer to provide the Corresponding Source. This 1395 | alternative is allowed only occasionally and noncommercially, and 1396 | only if you received the object code with such an offer, in accord 1397 | with subsection 6b. 1398 | 1399 | d) Convey the object code by offering access from a designated 1400 | place (gratis or for a charge), and offer equivalent access to the 1401 | Corresponding Source in the same way through the same place at no 1402 | further charge. You need not require recipients to copy the 1403 | Corresponding Source along with the object code. If the place to 1404 | copy the object code is a network server, the Corresponding Source 1405 | may be on a different server (operated by you or a third party) 1406 | that supports equivalent copying facilities, provided you maintain 1407 | clear directions next to the object code saying where to find the 1408 | Corresponding Source. Regardless of what server hosts the 1409 | Corresponding Source, you remain obligated to ensure that it is 1410 | available for as long as needed to satisfy these requirements. 1411 | 1412 | e) Convey the object code using peer-to-peer transmission, provided 1413 | you inform other peers where the object code and Corresponding 1414 | Source of the work are being offered to the general public at no 1415 | charge under subsection 6d. 1416 | 1417 | A separable portion of the object code, whose source code is excluded 1418 | from the Corresponding Source as a System Library, need not be 1419 | included in conveying the object code work. 1420 | 1421 | A "User Product" is either (1) a "consumer product", which means any 1422 | tangible personal property which is normally used for personal, family, 1423 | or household purposes, or (2) anything designed or sold for incorporation 1424 | into a dwelling. In determining whether a product is a consumer product, 1425 | doubtful cases shall be resolved in favor of coverage. For a particular 1426 | product received by a particular user, "normally used" refers to a 1427 | typical or common use of that class of product, regardless of the status 1428 | of the particular user or of the way in which the particular user 1429 | actually uses, or expects or is expected to use, the product. A product 1430 | is a consumer product regardless of whether the product has substantial 1431 | commercial, industrial or non-consumer uses, unless such uses represent 1432 | the only significant mode of use of the product. 1433 | 1434 | "Installation Information" for a User Product means any methods, 1435 | procedures, authorization keys, or other information required to install 1436 | and execute modified versions of a covered work in that User Product from 1437 | a modified version of its Corresponding Source. The information must 1438 | suffice to ensure that the continued functioning of the modified object 1439 | code is in no case prevented or interfered with solely because 1440 | modification has been made. 1441 | 1442 | If you convey an object code work under this section in, or with, or 1443 | specifically for use in, a User Product, and the conveying occurs as 1444 | part of a transaction in which the right of possession and use of the 1445 | User Product is transferred to the recipient in perpetuity or for a 1446 | fixed term (regardless of how the transaction is characterized), the 1447 | Corresponding Source conveyed under this section must be accompanied 1448 | by the Installation Information. But this requirement does not apply 1449 | if neither you nor any third party retains the ability to install 1450 | modified object code on the User Product (for example, the work has 1451 | been installed in ROM). 1452 | 1453 | The requirement to provide Installation Information does not include a 1454 | requirement to continue to provide support service, warranty, or updates 1455 | for a work that has been modified or installed by the recipient, or for 1456 | the User Product in which it has been modified or installed. Access to a 1457 | network may be denied when the modification itself materially and 1458 | adversely affects the operation of the network or violates the rules and 1459 | protocols for communication across the network. 1460 | 1461 | Corresponding Source conveyed, and Installation Information provided, 1462 | in accord with this section must be in a format that is publicly 1463 | documented (and with an implementation available to the public in 1464 | source code form), and must require no special password or key for 1465 | unpacking, reading or copying. 1466 | 1467 | 7. Additional Terms. 1468 | 1469 | "Additional permissions" are terms that supplement the terms of this 1470 | License by making exceptions from one or more of its conditions. 1471 | Additional permissions that are applicable to the entire Program shall 1472 | be treated as though they were included in this License, to the extent 1473 | that they are valid under applicable law. If additional permissions 1474 | apply only to part of the Program, that part may be used separately 1475 | under those permissions, but the entire Program remains governed by 1476 | this License without regard to the additional permissions. 1477 | 1478 | When you convey a copy of a covered work, you may at your option 1479 | remove any additional permissions from that copy, or from any part of 1480 | it. (Additional permissions may be written to require their own 1481 | removal in certain cases when you modify the work.) You may place 1482 | additional permissions on material, added by you to a covered work, 1483 | for which you have or can give appropriate copyright permission. 1484 | 1485 | Notwithstanding any other provision of this License, for material you 1486 | add to a covered work, you may (if authorized by the copyright holders of 1487 | that material) supplement the terms of this License with terms: 1488 | 1489 | a) Disclaiming warranty or limiting liability differently from the 1490 | terms of sections 15 and 16 of this License; or 1491 | 1492 | b) Requiring preservation of specified reasonable legal notices or 1493 | author attributions in that material or in the Appropriate Legal 1494 | Notices displayed by works containing it; or 1495 | 1496 | c) Prohibiting misrepresentation of the origin of that material, or 1497 | requiring that modified versions of such material be marked in 1498 | reasonable ways as different from the original version; or 1499 | 1500 | d) Limiting the use for publicity purposes of names of licensors or 1501 | authors of the material; or 1502 | 1503 | e) Declining to grant rights under trademark law for use of some 1504 | trade names, trademarks, or service marks; or 1505 | 1506 | f) Requiring indemnification of licensors and authors of that 1507 | material by anyone who conveys the material (or modified versions of 1508 | it) with contractual assumptions of liability to the recipient, for 1509 | any liability that these contractual assumptions directly impose on 1510 | those licensors and authors. 1511 | 1512 | All other non-permissive additional terms are considered "further 1513 | restrictions" within the meaning of section 10. If the Program as you 1514 | received it, or any part of it, contains a notice stating that it is 1515 | governed by this License along with a term that is a further 1516 | restriction, you may remove that term. If a license document contains 1517 | a further restriction but permits relicensing or conveying under this 1518 | License, you may add to a covered work material governed by the terms 1519 | of that license document, provided that the further restriction does 1520 | not survive such relicensing or conveying. 1521 | 1522 | If you add terms to a covered work in accord with this section, you 1523 | must place, in the relevant source files, a statement of the 1524 | additional terms that apply to those files, or a notice indicating 1525 | where to find the applicable terms. 1526 | 1527 | Additional terms, permissive or non-permissive, may be stated in the 1528 | form of a separately written license, or stated as exceptions; 1529 | the above requirements apply either way. 1530 | 1531 | 8. Termination. 1532 | 1533 | You may not propagate or modify a covered work except as expressly 1534 | provided under this License. Any attempt otherwise to propagate or 1535 | modify it is void, and will automatically terminate your rights under 1536 | this License (including any patent licenses granted under the third 1537 | paragraph of section 11). 1538 | 1539 | However, if you cease all violation of this License, then your 1540 | license from a particular copyright holder is reinstated (a) 1541 | provisionally, unless and until the copyright holder explicitly and 1542 | finally terminates your license, and (b) permanently, if the copyright 1543 | holder fails to notify you of the violation by some reasonable means 1544 | prior to 60 days after the cessation. 1545 | 1546 | Moreover, your license from a particular copyright holder is 1547 | reinstated permanently if the copyright holder notifies you of the 1548 | violation by some reasonable means, this is the first time you have 1549 | received notice of violation of this License (for any work) from that 1550 | copyright holder, and you cure the violation prior to 30 days after 1551 | your receipt of the notice. 1552 | 1553 | Termination of your rights under this section does not terminate the 1554 | licenses of parties who have received copies or rights from you under 1555 | this License. If your rights have been terminated and not permanently 1556 | reinstated, you do not qualify to receive new licenses for the same 1557 | material under section 10. 1558 | 1559 | 9. Acceptance Not Required for Having Copies. 1560 | 1561 | You are not required to accept this License in order to receive or 1562 | run a copy of the Program. Ancillary propagation of a covered work 1563 | occurring solely as a consequence of using peer-to-peer transmission 1564 | to receive a copy likewise does not require acceptance. However, 1565 | nothing other than this License grants you permission to propagate or 1566 | modify any covered work. These actions infringe copyright if you do 1567 | not accept this License. Therefore, by modifying or propagating a 1568 | covered work, you indicate your acceptance of this License to do so. 1569 | 1570 | 10. Automatic Licensing of Downstream Recipients. 1571 | 1572 | Each time you convey a covered work, the recipient automatically 1573 | receives a license from the original licensors, to run, modify and 1574 | propagate that work, subject to this License. You are not responsible 1575 | for enforcing compliance by third parties with this License. 1576 | 1577 | An "entity transaction" is a transaction transferring control of an 1578 | organization, or substantially all assets of one, or subdividing an 1579 | organization, or merging organizations. If propagation of a covered 1580 | work results from an entity transaction, each party to that 1581 | transaction who receives a copy of the work also receives whatever 1582 | licenses to the work the party's predecessor in interest had or could 1583 | give under the previous paragraph, plus a right to possession of the 1584 | Corresponding Source of the work from the predecessor in interest, if 1585 | the predecessor has it or can get it with reasonable efforts. 1586 | 1587 | You may not impose any further restrictions on the exercise of the 1588 | rights granted or affirmed under this License. For example, you may 1589 | not impose a license fee, royalty, or other charge for exercise of 1590 | rights granted under this License, and you may not initiate litigation 1591 | (including a cross-claim or counterclaim in a lawsuit) alleging that 1592 | any patent claim is infringed by making, using, selling, offering for 1593 | sale, or importing the Program or any portion of it. 1594 | 1595 | 11. Patents. 1596 | 1597 | A "contributor" is a copyright holder who authorizes use under this 1598 | License of the Program or a work on which the Program is based. The 1599 | work thus licensed is called the contributor's "contributor version". 1600 | 1601 | A contributor's "essential patent claims" are all patent claims 1602 | owned or controlled by the contributor, whether already acquired or 1603 | hereafter acquired, that would be infringed by some manner, permitted 1604 | by this License, of making, using, or selling its contributor version, 1605 | but do not include claims that would be infringed only as a 1606 | consequence of further modification of the contributor version. For 1607 | purposes of this definition, "control" includes the right to grant 1608 | patent sublicenses in a manner consistent with the requirements of 1609 | this License. 1610 | 1611 | Each contributor grants you a non-exclusive, worldwide, royalty-free 1612 | patent license under the contributor's essential patent claims, to 1613 | make, use, sell, offer for sale, import and otherwise run, modify and 1614 | propagate the contents of its contributor version. 1615 | 1616 | In the following three paragraphs, a "patent license" is any express 1617 | agreement or commitment, however denominated, not to enforce a patent 1618 | (such as an express permission to practice a patent or covenant not to 1619 | sue for patent infringement). To "grant" such a patent license to a 1620 | party means to make such an agreement or commitment not to enforce a 1621 | patent against the party. 1622 | 1623 | If you convey a covered work, knowingly relying on a patent license, 1624 | and the Corresponding Source of the work is not available for anyone 1625 | to copy, free of charge and under the terms of this License, through a 1626 | publicly available network server or other readily accessible means, 1627 | then you must either (1) cause the Corresponding Source to be so 1628 | available, or (2) arrange to deprive yourself of the benefit of the 1629 | patent license for this particular work, or (3) arrange, in a manner 1630 | consistent with the requirements of this License, to extend the patent 1631 | license to downstream recipients. "Knowingly relying" means you have 1632 | actual knowledge that, but for the patent license, your conveying the 1633 | covered work in a country, or your recipient's use of the covered work 1634 | in a country, would infringe one or more identifiable patents in that 1635 | country that you have reason to believe are valid. 1636 | 1637 | If, pursuant to or in connection with a single transaction or 1638 | arrangement, you convey, or propagate by procuring conveyance of, a 1639 | covered work, and grant a patent license to some of the parties 1640 | receiving the covered work authorizing them to use, propagate, modify 1641 | or convey a specific copy of the covered work, then the patent license 1642 | you grant is automatically extended to all recipients of the covered 1643 | work and works based on it. 1644 | 1645 | A patent license is "discriminatory" if it does not include within 1646 | the scope of its coverage, prohibits the exercise of, or is 1647 | conditioned on the non-exercise of one or more of the rights that are 1648 | specifically granted under this License. You may not convey a covered 1649 | work if you are a party to an arrangement with a third party that is 1650 | in the business of distributing software, under which you make payment 1651 | to the third party based on the extent of your activity of conveying 1652 | the work, and under which the third party grants, to any of the 1653 | parties who would receive the covered work from you, a discriminatory 1654 | patent license (a) in connection with copies of the covered work 1655 | conveyed by you (or copies made from those copies), or (b) primarily 1656 | for and in connection with specific products or compilations that 1657 | contain the covered work, unless you entered into that arrangement, 1658 | or that patent license was granted, prior to 28 March 2007. 1659 | 1660 | Nothing in this License shall be construed as excluding or limiting 1661 | any implied license or other defenses to infringement that may 1662 | otherwise be available to you under applicable patent law. 1663 | 1664 | 12. No Surrender of Others' Freedom. 1665 | 1666 | If conditions are imposed on you (whether by court order, agreement or 1667 | otherwise) that contradict the conditions of this License, they do not 1668 | excuse you from the conditions of this License. If you cannot convey a 1669 | covered work so as to satisfy simultaneously your obligations under this 1670 | License and any other pertinent obligations, then as a consequence you may 1671 | not convey it at all. For example, if you agree to terms that obligate you 1672 | to collect a royalty for further conveying from those to whom you convey 1673 | the Program, the only way you could satisfy both those terms and this 1674 | License would be to refrain entirely from conveying the Program. 1675 | 1676 | 13. Use with the GNU Affero General Public License. 1677 | 1678 | Notwithstanding any other provision of this License, you have 1679 | permission to link or combine any covered work with a work licensed 1680 | under version 3 of the GNU Affero General Public License into a single 1681 | combined work, and to convey the resulting work. The terms of this 1682 | License will continue to apply to the part which is the covered work, 1683 | but the special requirements of the GNU Affero General Public License, 1684 | section 13, concerning interaction through a network will apply to the 1685 | combination as such. 1686 | 1687 | 14. Revised Versions of this License. 1688 | 1689 | The Free Software Foundation may publish revised and/or new versions of 1690 | the GNU General Public License from time to time. Such new versions will 1691 | be similar in spirit to the present version, but may differ in detail to 1692 | address new problems or concerns. 1693 | 1694 | Each version is given a distinguishing version number. If the 1695 | Program specifies that a certain numbered version of the GNU General 1696 | Public License "or any later version" applies to it, you have the 1697 | option of following the terms and conditions either of that numbered 1698 | version or of any later version published by the Free Software 1699 | Foundation. If the Program does not specify a version number of the 1700 | GNU General Public License, you may choose any version ever published 1701 | by the Free Software Foundation. 1702 | 1703 | If the Program specifies that a proxy can decide which future 1704 | versions of the GNU General Public License can be used, that proxy's 1705 | public statement of acceptance of a version permanently authorizes you 1706 | to choose that version for the Program. 1707 | 1708 | Later license versions may give you additional or different 1709 | permissions. However, no additional obligations are imposed on any 1710 | author or copyright holder as a result of your choosing to follow a 1711 | later version. 1712 | 1713 | 15. Disclaimer of Warranty. 1714 | 1715 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 1716 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 1717 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 1718 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 1719 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 1720 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 1721 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 1722 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 1723 | 1724 | 16. Limitation of Liability. 1725 | 1726 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 1727 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 1728 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 1729 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 1730 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 1731 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 1732 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 1733 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 1734 | SUCH DAMAGES. 1735 | 1736 | 17. Interpretation of Sections 15 and 16. 1737 | 1738 | If the disclaimer of warranty and limitation of liability provided 1739 | above cannot be given local legal effect according to their terms, 1740 | reviewing courts shall apply local law that most closely approximates 1741 | an absolute waiver of all civil liability in connection with the 1742 | Program, unless a warranty or assumption of liability accompanies a 1743 | copy of the Program in return for a fee. 1744 | 1745 | END OF TERMS AND CONDITIONS 1746 | 1747 | How to Apply These Terms to Your New Programs 1748 | 1749 | If you develop a new program, and you want it to be of the greatest 1750 | possible use to the public, the best way to achieve this is to make it 1751 | free software which everyone can redistribute and change under these terms. 1752 | 1753 | To do so, attach the following notices to the program. It is safest 1754 | to attach them to the start of each source file to most effectively 1755 | state the exclusion of warranty; and each file should have at least 1756 | the "copyright" line and a pointer to where the full notice is found. 1757 | 1758 | 1759 | Copyright (C) 1760 | 1761 | This program is free software: you can redistribute it and/or modify 1762 | it under the terms of the GNU General Public License as published by 1763 | the Free Software Foundation, either version 3 of the License, or 1764 | (at your option) any later version. 1765 | 1766 | This program is distributed in the hope that it will be useful, 1767 | but WITHOUT ANY WARRANTY; without even the implied warranty of 1768 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1769 | GNU General Public License for more details. 1770 | 1771 | You should have received a copy of the GNU General Public License 1772 | along with this program. If not, see . 1773 | 1774 | Also add information on how to contact you by electronic and paper mail. 1775 | 1776 | If the program does terminal interaction, make it output a short 1777 | notice like this when it starts in an interactive mode: 1778 | 1779 | Copyright (C) 1780 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 1781 | This is free software, and you are welcome to redistribute it 1782 | under certain conditions; type `show c' for details. 1783 | 1784 | The hypothetical commands `show w' and `show c' should show the appropriate 1785 | parts of the General Public License. Of course, your program's commands 1786 | might be different; for a GUI interface, you would use an "about box". 1787 | 1788 | You should also get your employer (if you work as a programmer) or school, 1789 | if any, to sign a "copyright disclaimer" for the program, if necessary. 1790 | For more information on this, and how to apply and follow the GNU GPL, see 1791 | . 1792 | 1793 | The GNU General Public License does not permit incorporating your program 1794 | into proprietary programs. If your program is a subroutine library, you 1795 | may consider it more useful to permit linking proprietary applications with 1796 | the library. If this is what you want to do, use the GNU Lesser General 1797 | Public License instead of this License. But first, please read 1798 | . 1799 | ``` 1800 | 1801 | ### [`tree-sitter-haskell`](https://github.com/tree-sitter/tree-sitter-haskell/blob/master/LICENSE) 1802 | 1803 | ``` 1804 | The MIT License (MIT) 1805 | 1806 | Copyright (c) 2014 Max Brunsfeld 1807 | 1808 | Permission is hereby granted, free of charge, to any person obtaining a copy 1809 | of this software and associated documentation files (the "Software"), to deal 1810 | in the Software without restriction, including without limitation the rights 1811 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1812 | copies of the Software, and to permit persons to whom the Software is 1813 | furnished to do so, subject to the following conditions: 1814 | 1815 | The above copyright notice and this permission notice shall be included in all 1816 | copies or substantial portions of the Software. 1817 | 1818 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1819 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1820 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1821 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1822 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1823 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1824 | SOFTWARE. 1825 | ``` 1826 | 1827 | ### [`tree-sitter-janet-simple`](https://github.com/sogaiu/tree-sitter-janet-simple/blob/master/COPYING.txt) 1828 | 1829 | ``` 1830 | Creative Commons Legal Code 1831 | 1832 | CC0 1.0 Universal 1833 | 1834 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 1835 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 1836 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 1837 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 1838 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 1839 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 1840 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 1841 | HEREUNDER. 1842 | 1843 | Statement of Purpose 1844 | 1845 | The laws of most jurisdictions throughout the world automatically confer 1846 | exclusive Copyright and Related Rights (defined below) upon the creator 1847 | and subsequent owner(s) (each and all, an "owner") of an original work of 1848 | authorship and/or a database (each, a "Work"). 1849 | 1850 | Certain owners wish to permanently relinquish those rights to a Work for 1851 | the purpose of contributing to a commons of creative, cultural and 1852 | scientific works ("Commons") that the public can reliably and without fear 1853 | of later claims of infringement build upon, modify, incorporate in other 1854 | works, reuse and redistribute as freely as possible in any form whatsoever 1855 | and for any purposes, including without limitation commercial purposes. 1856 | These owners may contribute to the Commons to promote the ideal of a free 1857 | culture and the further production of creative, cultural and scientific 1858 | works, or to gain reputation or greater distribution for their Work in 1859 | part through the use and efforts of others. 1860 | 1861 | For these and/or other purposes and motivations, and without any 1862 | expectation of additional consideration or compensation, the person 1863 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 1864 | is an owner of Copyright and Related Rights in the Work, voluntarily 1865 | elects to apply CC0 to the Work and publicly distribute the Work under its 1866 | terms, with knowledge of his or her Copyright and Related Rights in the 1867 | Work and the meaning and intended legal effect of CC0 on those rights. 1868 | 1869 | 1. Copyright and Related Rights. A Work made available under CC0 may be 1870 | protected by copyright and related or neighboring rights ("Copyright and 1871 | Related Rights"). Copyright and Related Rights include, but are not 1872 | limited to, the following: 1873 | 1874 | i. the right to reproduce, adapt, distribute, perform, display, 1875 | communicate, and translate a Work; 1876 | ii. moral rights retained by the original author(s) and/or performer(s); 1877 | iii. publicity and privacy rights pertaining to a person's image or 1878 | likeness depicted in a Work; 1879 | iv. rights protecting against unfair competition in regards to a Work, 1880 | subject to the limitations in paragraph 4(a), below; 1881 | v. rights protecting the extraction, dissemination, use and reuse of data 1882 | in a Work; 1883 | vi. database rights (such as those arising under Directive 96/9/EC of the 1884 | European Parliament and of the Council of 11 March 1996 on the legal 1885 | protection of databases, and under any national implementation 1886 | thereof, including any amended or successor version of such 1887 | directive); and 1888 | vii. other similar, equivalent or corresponding rights throughout the 1889 | world based on applicable law or treaty, and any national 1890 | implementations thereof. 1891 | 1892 | 2. Waiver. To the greatest extent permitted by, but not in contravention 1893 | of, applicable law, Affirmer hereby overtly, fully, permanently, 1894 | irrevocably and unconditionally waives, abandons, and surrenders all of 1895 | Affirmer's Copyright and Related Rights and associated claims and causes 1896 | of action, whether now known or unknown (including existing as well as 1897 | future claims and causes of action), in the Work (i) in all territories 1898 | worldwide, (ii) for the maximum duration provided by applicable law or 1899 | treaty (including future time extensions), (iii) in any current or future 1900 | medium and for any number of copies, and (iv) for any purpose whatsoever, 1901 | including without limitation commercial, advertising or promotional 1902 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 1903 | member of the public at large and to the detriment of Affirmer's heirs and 1904 | successors, fully intending that such Waiver shall not be subject to 1905 | revocation, rescission, cancellation, termination, or any other legal or 1906 | equitable action to disrupt the quiet enjoyment of the Work by the public 1907 | as contemplated by Affirmer's express Statement of Purpose. 1908 | 1909 | 3. Public License Fallback. Should any part of the Waiver for any reason 1910 | be judged legally invalid or ineffective under applicable law, then the 1911 | Waiver shall be preserved to the maximum extent permitted taking into 1912 | account Affirmer's express Statement of Purpose. In addition, to the 1913 | extent the Waiver is so judged Affirmer hereby grants to each affected 1914 | person a royalty-free, non transferable, non sublicensable, non exclusive, 1915 | irrevocable and unconditional license to exercise Affirmer's Copyright and 1916 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 1917 | maximum duration provided by applicable law or treaty (including future 1918 | time extensions), (iii) in any current or future medium and for any number 1919 | of copies, and (iv) for any purpose whatsoever, including without 1920 | limitation commercial, advertising or promotional purposes (the 1921 | "License"). The License shall be deemed effective as of the date CC0 was 1922 | applied by Affirmer to the Work. Should any part of the License for any 1923 | reason be judged legally invalid or ineffective under applicable law, such 1924 | partial invalidity or ineffectiveness shall not invalidate the remainder 1925 | of the License, and in such case Affirmer hereby affirms that he or she 1926 | will not (i) exercise any of his or her remaining Copyright and Related 1927 | Rights in the Work or (ii) assert any associated claims and causes of 1928 | action with respect to the Work, in either case contrary to Affirmer's 1929 | express Statement of Purpose. 1930 | 1931 | 4. Limitations and Disclaimers. 1932 | 1933 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 1934 | surrendered, licensed or otherwise affected by this document. 1935 | b. Affirmer offers the Work as-is and makes no representations or 1936 | warranties of any kind concerning the Work, express, implied, 1937 | statutory or otherwise, including without limitation warranties of 1938 | title, merchantability, fitness for a particular purpose, non 1939 | infringement, or the absence of latent or other defects, accuracy, or 1940 | the present or absence of errors, whether or not discoverable, all to 1941 | the greatest extent permissible under applicable law. 1942 | c. Affirmer disclaims responsibility for clearing rights of other persons 1943 | that may apply to the Work or any use thereof, including without 1944 | limitation any person's Copyright and Related Rights in the Work. 1945 | Further, Affirmer disclaims responsibility for obtaining any necessary 1946 | consents, permissions or other rights required for any use of the 1947 | Work. 1948 | d. Affirmer understands and acknowledges that Creative Commons is not a 1949 | party to this document and has no duty or obligation with respect to 1950 | this CC0 or use of the Work. 1951 | ``` 1952 | 1953 | ### [`tree-sitter-java`](https://github.com/tree-sitter/tree-sitter-java/blob/master/LICENSE) 1954 | 1955 | ``` 1956 | MIT License 1957 | 1958 | Copyright (c) 2017 Ayman Nadeem 1959 | 1960 | Permission is hereby granted, free of charge, to any person obtaining a copy 1961 | of this software and associated documentation files (the "Software"), to deal 1962 | in the Software without restriction, including without limitation the rights 1963 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1964 | copies of the Software, and to permit persons to whom the Software is 1965 | furnished to do so, subject to the following conditions: 1966 | 1967 | The above copyright notice and this permission notice shall be included in all 1968 | copies or substantial portions of the Software. 1969 | 1970 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1971 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1972 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1973 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1974 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1975 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1976 | SOFTWARE. 1977 | ``` 1978 | 1979 | ### [`tree-sitter-javascript`](https://github.com/tree-sitter/tree-sitter-javascript/blob/master/LICENSE) 1980 | 1981 | ``` 1982 | The MIT License (MIT) 1983 | 1984 | Copyright (c) 2014 Max Brunsfeld 1985 | 1986 | Permission is hereby granted, free of charge, to any person obtaining a copy 1987 | of this software and associated documentation files (the "Software"), to deal 1988 | in the Software without restriction, including without limitation the rights 1989 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1990 | copies of the Software, and to permit persons to whom the Software is 1991 | furnished to do so, subject to the following conditions: 1992 | 1993 | The above copyright notice and this permission notice shall be included in all 1994 | copies or substantial portions of the Software. 1995 | 1996 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1997 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1998 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1999 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2000 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2001 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2002 | SOFTWARE. 2003 | ``` 2004 | 2005 | ### [`tree-sitter-julia`](https://github.com/tree-sitter/tree-sitter-julia/blob/master/LICENSE) 2006 | 2007 | ``` 2008 | The MIT License (MIT) 2009 | 2010 | Copyright (c) 2018 Max Brunsfeld, GitHub 2011 | 2012 | Permission is hereby granted, free of charge, to any person obtaining a copy 2013 | of this software and associated documentation files (the "Software"), to deal 2014 | in the Software without restriction, including without limitation the rights 2015 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2016 | copies of the Software, and to permit persons to whom the Software is 2017 | furnished to do so, subject to the following conditions: 2018 | 2019 | The above copyright notice and this permission notice shall be included in all 2020 | copies or substantial portions of the Software. 2021 | 2022 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2023 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2024 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2025 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2026 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2027 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2028 | SOFTWARE. 2029 | ``` 2030 | 2031 | ### [`tree-sitter-kotlin`](https://github.com/fwcd/tree-sitter-kotlin/blob/main/LICENSE) 2032 | 2033 | ``` 2034 | The MIT License (MIT) 2035 | 2036 | Copyright (c) 2019 fwcd 2037 | 2038 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 2039 | 2040 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 2041 | 2042 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2043 | ``` 2044 | 2045 | ### [`tree-sitter-lua`](https://github.com/tree-sitter-grammars/tree-sitter-lua/blob/main/LICENSE.md) 2046 | 2047 | ``` 2048 | The MIT License (MIT) 2049 | 2050 | Copyright (c) 2021 Munif Tanjim 2051 | 2052 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 2053 | 2054 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 2055 | 2056 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2057 | ``` 2058 | 2059 | ### [`tree-sitter-make`](https://github.com/tree-sitter-grammars/tree-sitter-make/blob/main/LICENSE) 2060 | 2061 | ``` 2062 | MIT License 2063 | 2064 | Copyright (c) 2021 Alexandre A. Muller 2065 | 2066 | Permission is hereby granted, free of charge, to any person obtaining a copy 2067 | of this software and associated documentation files (the "Software"), to deal 2068 | in the Software without restriction, including without limitation the rights 2069 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2070 | copies of the Software, and to permit persons to whom the Software is 2071 | furnished to do so, subject to the following conditions: 2072 | 2073 | The above copyright notice and this permission notice shall be included in all 2074 | copies or substantial portions of the Software. 2075 | 2076 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2077 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2078 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2079 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2080 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2081 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2082 | SOFTWARE. 2083 | ``` 2084 | 2085 | ### [`tree-sitter-nix`](https://github.com/nix-community/tree-sitter-nix/blob/master/LICENSE) 2086 | 2087 | ``` 2088 | MIT License 2089 | 2090 | Copyright (c) 2019 Charles Strahan 2091 | 2092 | Permission is hereby granted, free of charge, to any person obtaining a copy 2093 | of this software and associated documentation files (the "Software"), to deal 2094 | in the Software without restriction, including without limitation the rights 2095 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2096 | copies of the Software, and to permit persons to whom the Software is 2097 | furnished to do so, subject to the following conditions: 2098 | 2099 | The above copyright notice and this permission notice shall be included in all 2100 | copies or substantial portions of the Software. 2101 | 2102 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2103 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2104 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2105 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2106 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2107 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2108 | SOFTWARE. 2109 | ``` 2110 | 2111 | ### [`tree-sitter-objc`](https://github.com/tree-sitter-grammars/tree-sitter-objc/blob/master/LICENSE) 2112 | 2113 | ``` 2114 | The MIT License (MIT) 2115 | 2116 | Copyright (c) 2023 Amaan Qureshi 2117 | 2118 | Permission is hereby granted, free of charge, to any person obtaining a copy 2119 | of this software and associated documentation files (the "Software"), to deal 2120 | in the Software without restriction, including without limitation the rights 2121 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2122 | copies of the Software, and to permit persons to whom the Software is 2123 | furnished to do so, subject to the following conditions: 2124 | 2125 | The above copyright notice and this permission notice shall be included in all 2126 | copies or substantial portions of the Software. 2127 | 2128 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2129 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2130 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2131 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2132 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2133 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2134 | SOFTWARE. 2135 | ``` 2136 | 2137 | ### [`tree-sitter-ocaml`](https://github.com/tree-sitter/tree-sitter-ocaml/blob/master/LICENSE) 2138 | 2139 | ``` 2140 | MIT License 2141 | 2142 | Copyright (c) 2020 Max Brunsfeld and Pieter Goetschalckx 2143 | 2144 | Permission is hereby granted, free of charge, to any person obtaining a copy 2145 | of this software and associated documentation files (the "Software"), to deal 2146 | in the Software without restriction, including without limitation the rights 2147 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2148 | copies of the Software, and to permit persons to whom the Software is 2149 | furnished to do so, subject to the following conditions: 2150 | 2151 | The above copyright notice and this permission notice shall be included in all 2152 | copies or substantial portions of the Software. 2153 | 2154 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2155 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2156 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2157 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2158 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2159 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2160 | SOFTWARE. 2161 | ``` 2162 | 2163 | ### [`tree-sitter-perl`](https://github.com/ganezdragon/tree-sitter-perl/blob/master/LICENSE) 2164 | 2165 | ``` 2166 | MIT License 2167 | 2168 | Copyright (c) 2020 Ganesan 2169 | 2170 | Permission is hereby granted, free of charge, to any person obtaining a copy 2171 | of this software and associated documentation files (the "Software"), to deal 2172 | in the Software without restriction, including without limitation the rights 2173 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2174 | copies of the Software, and to permit persons to whom the Software is 2175 | furnished to do so, subject to the following conditions: 2176 | 2177 | The above copyright notice and this permission notice shall be included in all 2178 | copies or substantial portions of the Software. 2179 | 2180 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2181 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2182 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2183 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2184 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2185 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2186 | SOFTWARE. 2187 | ``` 2188 | 2189 | ### [`tree-sitter-php`](https://github.com/tree-sitter/tree-sitter-php/blob/master/LICENSE) 2190 | 2191 | ``` 2192 | The MIT License (MIT) 2193 | 2194 | Copyright (c) 2017 Josh Vera, GitHub 2195 | Copyright (c) 2019 Max Brunsfeld, Amaan Qureshi, Christian Frøystad, Caleb White 2196 | 2197 | Permission is hereby granted, free of charge, to any person obtaining a copy 2198 | of this software and associated documentation files (the "Software"), to deal 2199 | in the Software without restriction, including without limitation the rights 2200 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2201 | copies of the Software, and to permit persons to whom the Software is 2202 | furnished to do so, subject to the following conditions: 2203 | 2204 | The above copyright notice and this permission notice shall be included in all 2205 | copies or substantial portions of the Software. 2206 | 2207 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2208 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2209 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2210 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2211 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2212 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2213 | SOFTWARE. 2214 | ``` 2215 | 2216 | ### [`tree-sitter-python`](https://github.com/tree-sitter/tree-sitter-python/blob/master/LICENSE) 2217 | 2218 | ``` 2219 | The MIT License (MIT) 2220 | 2221 | Copyright (c) 2016 Max Brunsfeld 2222 | 2223 | Permission is hereby granted, free of charge, to any person obtaining a copy 2224 | of this software and associated documentation files (the "Software"), to deal 2225 | in the Software without restriction, including without limitation the rights 2226 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2227 | copies of the Software, and to permit persons to whom the Software is 2228 | furnished to do so, subject to the following conditions: 2229 | 2230 | The above copyright notice and this permission notice shall be included in all 2231 | copies or substantial portions of the Software. 2232 | 2233 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2234 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2235 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2236 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2237 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2238 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2239 | SOFTWARE. 2240 | ``` 2241 | 2242 | ### [`tree-sitter-qmljs`](https://github.com/yuja/tree-sitter-qmljs/blob/master/LICENSE) 2243 | 2244 | ``` 2245 | Copyright (c) 2021 Yuya Nishihara 2246 | 2247 | Permission is hereby granted, free of charge, to any person obtaining 2248 | a copy of this software and associated documentation files (the 2249 | "Software"), to deal in the Software without restriction, including 2250 | without limitation the rights to use, copy, modify, merge, publish, 2251 | distribute, sublicense, and/or sell copies of the Software, and to 2252 | permit persons to whom the Software is furnished to do so, subject to 2253 | the following conditions: 2254 | 2255 | The above copyright notice and this permission notice shall be 2256 | included in all copies or substantial portions of the Software. 2257 | 2258 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 2259 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 2260 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 2261 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 2262 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 2263 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 2264 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2265 | ``` 2266 | 2267 | ### [`tree-sitter-r`](https://github.com/r-lib/tree-sitter-r/blob/main/LICENSE) 2268 | 2269 | ``` 2270 | MIT License 2271 | 2272 | Copyright (c) 2024 tree-sitter-r authors 2273 | 2274 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 2275 | 2276 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 2277 | 2278 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2279 | ``` 2280 | 2281 | ### [`tree-sitter-racket`](https://github.com/6cdh/tree-sitter-racket/blob/main/LICENSE) 2282 | 2283 | ``` 2284 | MIT License 2285 | 2286 | Copyright (c) 2022 6cdh 2287 | 2288 | Permission is hereby granted, free of charge, to any person obtaining a copy 2289 | of this software and associated documentation files (the "Software"), to deal 2290 | in the Software without restriction, including without limitation the rights 2291 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2292 | copies of the Software, and to permit persons to whom the Software is 2293 | furnished to do so, subject to the following conditions: 2294 | 2295 | The above copyright notice and this permission notice shall be included in all 2296 | copies or substantial portions of the Software. 2297 | 2298 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2299 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2300 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2301 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2302 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2303 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2304 | SOFTWARE. 2305 | ``` 2306 | 2307 | ### [`tree-sitter-ruby`](https://github.com/tree-sitter/tree-sitter-ruby/blob/master/LICENSE) 2308 | 2309 | ``` 2310 | The MIT License (MIT) 2311 | 2312 | Copyright (c) 2016 Rob Rix 2313 | 2314 | Permission is hereby granted, free of charge, to any person obtaining a copy 2315 | of this software and associated documentation files (the "Software"), to deal 2316 | in the Software without restriction, including without limitation the rights 2317 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2318 | copies of the Software, and to permit persons to whom the Software is 2319 | furnished to do so, subject to the following conditions: 2320 | 2321 | The above copyright notice and this permission notice shall be included in all 2322 | copies or substantial portions of the Software. 2323 | 2324 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2325 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2326 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2327 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2328 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2329 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2330 | SOFTWARE. 2331 | ``` 2332 | 2333 | ### [`tree-sitter-rust`](https://github.com/tree-sitter/tree-sitter-rust/blob/master/LICENSE) 2334 | 2335 | ``` 2336 | The MIT License (MIT) 2337 | 2338 | Copyright (c) 2017 Maxim Sokolov 2339 | 2340 | Permission is hereby granted, free of charge, to any person obtaining a copy 2341 | of this software and associated documentation files (the "Software"), to deal 2342 | in the Software without restriction, including without limitation the rights 2343 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2344 | copies of the Software, and to permit persons to whom the Software is 2345 | furnished to do so, subject to the following conditions: 2346 | 2347 | The above copyright notice and this permission notice shall be included in all 2348 | copies or substantial portions of the Software. 2349 | 2350 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2351 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2352 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2353 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2354 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2355 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2356 | SOFTWARE. 2357 | ``` 2358 | 2359 | ### [`tree-sitter-scala`](https://github.com/tree-sitter/tree-sitter-scala/blob/master/LICENSE) 2360 | 2361 | ``` 2362 | The MIT License (MIT) 2363 | 2364 | Copyright (c) 2018 Max Brunsfeld and GitHub 2365 | 2366 | Permission is hereby granted, free of charge, to any person obtaining a copy 2367 | of this software and associated documentation files (the "Software"), to deal 2368 | in the Software without restriction, including without limitation the rights 2369 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2370 | copies of the Software, and to permit persons to whom the Software is 2371 | furnished to do so, subject to the following conditions: 2372 | 2373 | The above copyright notice and this permission notice shall be included in all 2374 | copies or substantial portions of the Software. 2375 | 2376 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2377 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2378 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2379 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2380 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2381 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2382 | SOFTWARE. 2383 | ``` 2384 | 2385 | ### [`tree-sitter-scheme`](https://github.com/6cdh/tree-sitter-scheme/blob/main/LICENSE) 2386 | 2387 | ``` 2388 | MIT License 2389 | 2390 | Copyright (c) 2022 6cdh 2391 | 2392 | Permission is hereby granted, free of charge, to any person obtaining a copy 2393 | of this software and associated documentation files (the "Software"), to deal 2394 | in the Software without restriction, including without limitation the rights 2395 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2396 | copies of the Software, and to permit persons to whom the Software is 2397 | furnished to do so, subject to the following conditions: 2398 | 2399 | The above copyright notice and this permission notice shall be included in all 2400 | copies or substantial portions of the Software. 2401 | 2402 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2403 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2404 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2405 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2406 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2407 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2408 | SOFTWARE. 2409 | ``` 2410 | 2411 | ### [`tree-sitter-smali`](https://github.com/tree-sitter-grammars/tree-sitter-smali/blob/master/LICENSE) 2412 | 2413 | ``` 2414 | The MIT License (MIT) 2415 | 2416 | Copyright (c) 2023 Yotam Nachum , Amaan Qureshi 2417 | 2418 | Permission is hereby granted, free of charge, to any person obtaining a copy 2419 | of this software and associated documentation files (the "Software"), to deal 2420 | in the Software without restriction, including without limitation the rights 2421 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2422 | copies of the Software, and to permit persons to whom the Software is 2423 | furnished to do so, subject to the following conditions: 2424 | 2425 | The above copyright notice and this permission notice shall be included in all 2426 | copies or substantial portions of the Software. 2427 | 2428 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2429 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2430 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2431 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2432 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2433 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2434 | SOFTWARE. 2435 | ``` 2436 | 2437 | ### [`tree-sitter-solidity`](https://github.com/JoranHonig/tree-sitter-solidity/blob/master/LICENSE) 2438 | 2439 | ``` 2440 | Copyright (c) 2020 Joran Honig 2441 | 2442 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 2443 | 2444 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 2445 | 2446 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2447 | ``` 2448 | 2449 | ### [`tree-sitter-sql`](https://github.com/m-novikov/tree-sitter-sql/blob/main/LICENSE) 2450 | 2451 | ``` 2452 | MIT License 2453 | 2454 | Copyright (c) 2021 Maksim Novikov 2455 | 2456 | Permission is hereby granted, free of charge, to any person obtaining a copy 2457 | of this software and associated documentation files (the "Software"), to deal 2458 | in the Software without restriction, including without limitation the rights 2459 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2460 | copies of the Software, and to permit persons to whom the Software is 2461 | furnished to do so, subject to the following conditions: 2462 | 2463 | The above copyright notice and this permission notice shall be included in all 2464 | copies or substantial portions of the Software. 2465 | 2466 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2467 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2468 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2469 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2470 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2471 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2472 | SOFTWARE. 2473 | ``` 2474 | 2475 | ### [`tree-sitter-swift`](https://github.com/alex-pinkus/tree-sitter-swift/blob/main/LICENSE) 2476 | 2477 | ``` 2478 | MIT License 2479 | 2480 | Copyright (c) 2021 alex-pinkus 2481 | 2482 | Permission is hereby granted, free of charge, to any person obtaining a copy 2483 | of this software and associated documentation files (the "Software"), to deal 2484 | in the Software without restriction, including without limitation the rights 2485 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2486 | copies of the Software, and to permit persons to whom the Software is 2487 | furnished to do so, subject to the following conditions: 2488 | 2489 | The above copyright notice and this permission notice shall be included in all 2490 | copies or substantial portions of the Software. 2491 | 2492 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2493 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2494 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2495 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2496 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2497 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2498 | SOFTWARE. 2499 | ``` 2500 | 2501 | ### [`tree-sitter-typescript`](https://github.com/tree-sitter/tree-sitter-typescript/blob/master/LICENSE) 2502 | 2503 | ``` 2504 | The MIT License (MIT) 2505 | 2506 | Copyright (c) 2017 Max Brunsfeld 2507 | 2508 | Permission is hereby granted, free of charge, to any person obtaining a copy 2509 | of this software and associated documentation files (the "Software"), to deal 2510 | in the Software without restriction, including without limitation the rights 2511 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2512 | copies of the Software, and to permit persons to whom the Software is 2513 | furnished to do so, subject to the following conditions: 2514 | 2515 | The above copyright notice and this permission notice shall be included in all 2516 | copies or substantial portions of the Software. 2517 | 2518 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2519 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2520 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2521 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2522 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2523 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2524 | SOFTWARE. 2525 | ``` 2526 | 2527 | ### [`tree-sitter-vhdl`](https://github.com/JLeemaster/tree-sitter-vhdl/blob/main/LICENSE) 2528 | 2529 | ``` 2530 | MIT License 2531 | 2532 | Copyright (c) 2020 Alexandre A. Muller 2533 | 2534 | Permission is hereby granted, free of charge, to any person obtaining a copy 2535 | of this software and associated documentation files (the "Software"), to deal 2536 | in the Software without restriction, including without limitation the rights 2537 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2538 | copies of the Software, and to permit persons to whom the Software is 2539 | furnished to do so, subject to the following conditions: 2540 | 2541 | The above copyright notice and this permission notice shall be included in all 2542 | copies or substantial portions of the Software. 2543 | 2544 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2545 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2546 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2547 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2548 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2549 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2550 | SOFTWARE. 2551 | ``` 2552 | 2553 | ### [`tree-sitter-zig`](https://github.com/maxxnino/tree-sitter-zig/blob/main/LICENSE) 2554 | 2555 | ``` 2556 | MIT License 2557 | 2558 | Copyright (c) 2022 maxxnino 2559 | 2560 | Permission is hereby granted, free of charge, to any person obtaining a copy 2561 | of this software and associated documentation files (the "Software"), to deal 2562 | in the Software without restriction, including without limitation the rights 2563 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2564 | copies of the Software, and to permit persons to whom the Software is 2565 | furnished to do so, subject to the following conditions: 2566 | 2567 | The above copyright notice and this permission notice shall be included in all 2568 | copies or substantial portions of the Software. 2569 | 2570 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2571 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2572 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2573 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2574 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2575 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2576 | SOFTWARE. 2577 | ``` 2578 | 2579 | ### [`tree-sitter-css`](https://github.com/tree-sitter/tree-sitter-css/blob/master/LICENSE) 2580 | 2581 | ``` 2582 | The MIT License (MIT) 2583 | 2584 | Copyright (c) 2018 Max Brunsfeld 2585 | 2586 | Permission is hereby granted, free of charge, to any person obtaining a copy 2587 | of this software and associated documentation files (the "Software"), to deal 2588 | in the Software without restriction, including without limitation the rights 2589 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2590 | copies of the Software, and to permit persons to whom the Software is 2591 | furnished to do so, subject to the following conditions: 2592 | 2593 | The above copyright notice and this permission notice shall be included in all 2594 | copies or substantial portions of the Software. 2595 | 2596 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2597 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2598 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2599 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2600 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2601 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2602 | SOFTWARE. 2603 | ``` 2604 | 2605 | ### [`tree-sitter-hcl`](https://github.com/tree-sitter-grammars/tree-sitter-hcl/blob/main/LICENSE) 2606 | 2607 | ``` 2608 | Apache License 2609 | Version 2.0, January 2004 2610 | http://www.apache.org/licenses/ 2611 | 2612 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 2613 | 2614 | 1. Definitions. 2615 | 2616 | "License" shall mean the terms and conditions for use, reproduction, 2617 | and distribution as defined by Sections 1 through 9 of this document. 2618 | 2619 | "Licensor" shall mean the copyright owner or entity authorized by 2620 | the copyright owner that is granting the License. 2621 | 2622 | "Legal Entity" shall mean the union of the acting entity and all 2623 | other entities that control, are controlled by, or are under common 2624 | control with that entity. For the purposes of this definition, 2625 | "control" means (i) the power, direct or indirect, to cause the 2626 | direction or management of such entity, whether by contract or 2627 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 2628 | outstanding shares, or (iii) beneficial ownership of such entity. 2629 | 2630 | "You" (or "Your") shall mean an individual or Legal Entity 2631 | exercising permissions granted by this License. 2632 | 2633 | "Source" form shall mean the preferred form for making modifications, 2634 | including but not limited to software source code, documentation 2635 | source, and configuration files. 2636 | 2637 | "Object" form shall mean any form resulting from mechanical 2638 | transformation or translation of a Source form, including but 2639 | not limited to compiled object code, generated documentation, 2640 | and conversions to other media types. 2641 | 2642 | "Work" shall mean the work of authorship, whether in Source or 2643 | Object form, made available under the License, as indicated by a 2644 | copyright notice that is included in or attached to the work 2645 | (an example is provided in the Appendix below). 2646 | 2647 | "Derivative Works" shall mean any work, whether in Source or Object 2648 | form, that is based on (or derived from) the Work and for which the 2649 | editorial revisions, annotations, elaborations, or other modifications 2650 | represent, as a whole, an original work of authorship. For the purposes 2651 | of this License, Derivative Works shall not include works that remain 2652 | separable from, or merely link (or bind by name) to the interfaces of, 2653 | the Work and Derivative Works thereof. 2654 | 2655 | "Contribution" shall mean any work of authorship, including 2656 | the original version of the Work and any modifications or additions 2657 | to that Work or Derivative Works thereof, that is intentionally 2658 | submitted to Licensor for inclusion in the Work by the copyright owner 2659 | or by an individual or Legal Entity authorized to submit on behalf of 2660 | the copyright owner. For the purposes of this definition, "submitted" 2661 | means any form of electronic, verbal, or written communication sent 2662 | to the Licensor or its representatives, including but not limited to 2663 | communication on electronic mailing lists, source code control systems, 2664 | and issue tracking systems that are managed by, or on behalf of, the 2665 | Licensor for the purpose of discussing and improving the Work, but 2666 | excluding communication that is conspicuously marked or otherwise 2667 | designated in writing by the copyright owner as "Not a Contribution." 2668 | 2669 | "Contributor" shall mean Licensor and any individual or Legal Entity 2670 | on behalf of whom a Contribution has been received by Licensor and 2671 | subsequently incorporated within the Work. 2672 | 2673 | 2. Grant of Copyright License. Subject to the terms and conditions of 2674 | this License, each Contributor hereby grants to You a perpetual, 2675 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 2676 | copyright license to reproduce, prepare Derivative Works of, 2677 | publicly display, publicly perform, sublicense, and distribute the 2678 | Work and such Derivative Works in Source or Object form. 2679 | 2680 | 3. Grant of Patent License. Subject to the terms and conditions of 2681 | this License, each Contributor hereby grants to You a perpetual, 2682 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 2683 | (except as stated in this section) patent license to make, have made, 2684 | use, offer to sell, sell, import, and otherwise transfer the Work, 2685 | where such license applies only to those patent claims licensable 2686 | by such Contributor that are necessarily infringed by their 2687 | Contribution(s) alone or by combination of their Contribution(s) 2688 | with the Work to which such Contribution(s) was submitted. If You 2689 | institute patent litigation against any entity (including a 2690 | cross-claim or counterclaim in a lawsuit) alleging that the Work 2691 | or a Contribution incorporated within the Work constitutes direct 2692 | or contributory patent infringement, then any patent licenses 2693 | granted to You under this License for that Work shall terminate 2694 | as of the date such litigation is filed. 2695 | 2696 | 4. Redistribution. You may reproduce and distribute copies of the 2697 | Work or Derivative Works thereof in any medium, with or without 2698 | modifications, and in Source or Object form, provided that You 2699 | meet the following conditions: 2700 | 2701 | (a) You must give any other recipients of the Work or 2702 | Derivative Works a copy of this License; and 2703 | 2704 | (b) You must cause any modified files to carry prominent notices 2705 | stating that You changed the files; and 2706 | 2707 | (c) You must retain, in the Source form of any Derivative Works 2708 | that You distribute, all copyright, patent, trademark, and 2709 | attribution notices from the Source form of the Work, 2710 | excluding those notices that do not pertain to any part of 2711 | the Derivative Works; and 2712 | 2713 | (d) If the Work includes a "NOTICE" text file as part of its 2714 | distribution, then any Derivative Works that You distribute must 2715 | include a readable copy of the attribution notices contained 2716 | within such NOTICE file, excluding those notices that do not 2717 | pertain to any part of the Derivative Works, in at least one 2718 | of the following places: within a NOTICE text file distributed 2719 | as part of the Derivative Works; within the Source form or 2720 | documentation, if provided along with the Derivative Works; or, 2721 | within a display generated by the Derivative Works, if and 2722 | wherever such third-party notices normally appear. The contents 2723 | of the NOTICE file are for informational purposes only and 2724 | do not modify the License. You may add Your own attribution 2725 | notices within Derivative Works that You distribute, alongside 2726 | or as an addendum to the NOTICE text from the Work, provided 2727 | that such additional attribution notices cannot be construed 2728 | as modifying the License. 2729 | 2730 | You may add Your own copyright statement to Your modifications and 2731 | may provide additional or different license terms and conditions 2732 | for use, reproduction, or distribution of Your modifications, or 2733 | for any such Derivative Works as a whole, provided Your use, 2734 | reproduction, and distribution of the Work otherwise complies with 2735 | the conditions stated in this License. 2736 | 2737 | 5. Submission of Contributions. Unless You explicitly state otherwise, 2738 | any Contribution intentionally submitted for inclusion in the Work 2739 | by You to the Licensor shall be under the terms and conditions of 2740 | this License, without any additional terms or conditions. 2741 | Notwithstanding the above, nothing herein shall supersede or modify 2742 | the terms of any separate license agreement you may have executed 2743 | with Licensor regarding such Contributions. 2744 | 2745 | 6. Trademarks. This License does not grant permission to use the trade 2746 | names, trademarks, service marks, or product names of the Licensor, 2747 | except as required for reasonable and customary use in describing the 2748 | origin of the Work and reproducing the content of the NOTICE file. 2749 | 2750 | 7. Disclaimer of Warranty. Unless required by applicable law or 2751 | agreed to in writing, Licensor provides the Work (and each 2752 | Contributor provides its Contributions) on an "AS IS" BASIS, 2753 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 2754 | implied, including, without limitation, any warranties or conditions 2755 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 2756 | PARTICULAR PURPOSE. You are solely responsible for determining the 2757 | appropriateness of using or redistributing the Work and assume any 2758 | risks associated with Your exercise of permissions under this License. 2759 | 2760 | 8. Limitation of Liability. In no event and under no legal theory, 2761 | whether in tort (including negligence), contract, or otherwise, 2762 | unless required by applicable law (such as deliberate and grossly 2763 | negligent acts) or agreed to in writing, shall any Contributor be 2764 | liable to You for damages, including any direct, indirect, special, 2765 | incidental, or consequential damages of any character arising as a 2766 | result of this License or out of the use or inability to use the 2767 | Work (including but not limited to damages for loss of goodwill, 2768 | work stoppage, computer failure or malfunction, or any and all 2769 | other commercial damages or losses), even if such Contributor 2770 | has been advised of the possibility of such damages. 2771 | 2772 | 9. Accepting Warranty or Additional Liability. While redistributing 2773 | the Work or Derivative Works thereof, You may choose to offer, 2774 | and charge a fee for, acceptance of support, warranty, indemnity, 2775 | or other liability obligations and/or rights consistent with this 2776 | License. However, in accepting such obligations, You may act only 2777 | on Your own behalf and on Your sole responsibility, not on behalf 2778 | of any other Contributor, and only if You agree to indemnify, 2779 | defend, and hold each Contributor harmless for any liability 2780 | incurred by, or claims asserted against, such Contributor by reason 2781 | of your accepting any such warranty or additional liability. 2782 | 2783 | END OF TERMS AND CONDITIONS 2784 | 2785 | APPENDIX: How to apply the Apache License to your work. 2786 | 2787 | To apply the Apache License to your work, attach the following 2788 | boilerplate notice, with the fields enclosed by brackets "[]" 2789 | replaced with your own identifying information. (Don't include 2790 | the brackets!) The text should be enclosed in the appropriate 2791 | comment syntax for the file format. We also recommend that a 2792 | file or class name and description of purpose be included on the 2793 | same "printed page" as the copyright notice for easier 2794 | identification within third-party archives. 2795 | 2796 | Copyright [yyyy] [name of copyright owner] 2797 | 2798 | Licensed under the Apache License, Version 2.0 (the "License"); 2799 | you may not use this file except in compliance with the License. 2800 | You may obtain a copy of the License at 2801 | 2802 | http://www.apache.org/licenses/LICENSE-2.0 2803 | 2804 | Unless required by applicable law or agreed to in writing, software 2805 | distributed under the License is distributed on an "AS IS" BASIS, 2806 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 2807 | See the License for the specific language governing permissions and 2808 | limitations under the License. 2809 | ``` 2810 | 2811 | ### [`tree-sitter-html`](https://github.com/tree-sitter/tree-sitter-html/blob/master/LICENSE) 2812 | 2813 | ``` 2814 | The MIT License (MIT) 2815 | 2816 | Copyright (c) 2014 Max Brunsfeld 2817 | 2818 | Permission is hereby granted, free of charge, to any person obtaining a copy 2819 | of this software and associated documentation files (the "Software"), to deal 2820 | in the Software without restriction, including without limitation the rights 2821 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2822 | copies of the Software, and to permit persons to whom the Software is 2823 | furnished to do so, subject to the following conditions: 2824 | 2825 | The above copyright notice and this permission notice shall be included in all 2826 | copies or substantial portions of the Software. 2827 | 2828 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2829 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2830 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2831 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2832 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2833 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2834 | SOFTWARE. 2835 | ``` 2836 | 2837 | ### [`tree-sitter-json`](https://github.com/tree-sitter/tree-sitter-json/blob/master/LICENSE) 2838 | 2839 | ``` 2840 | The MIT License (MIT) 2841 | 2842 | Copyright (c) 2014 Max Brunsfeld 2843 | 2844 | Permission is hereby granted, free of charge, to any person obtaining a copy 2845 | of this software and associated documentation files (the "Software"), to deal 2846 | in the Software without restriction, including without limitation the rights 2847 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2848 | copies of the Software, and to permit persons to whom the Software is 2849 | furnished to do so, subject to the following conditions: 2850 | 2851 | The above copyright notice and this permission notice shall be included in all 2852 | copies or substantial portions of the Software. 2853 | 2854 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2855 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2856 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2857 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2858 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2859 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2860 | SOFTWARE. 2861 | ``` 2862 | 2863 | ### [`tree-sitter-latex`](https://github.com/latex-lsp/tree-sitter-latex/blob/master/LICENSE) 2864 | 2865 | ``` 2866 | MIT License 2867 | 2868 | Copyright (c) 2021 Patrick Förster 2869 | 2870 | Permission is hereby granted, free of charge, to any person obtaining a copy 2871 | of this software and associated documentation files (the "Software"), to deal 2872 | in the Software without restriction, including without limitation the rights 2873 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 2874 | copies of the Software, and to permit persons to whom the Software is 2875 | furnished to do so, subject to the following conditions: 2876 | 2877 | The above copyright notice and this permission notice shall be included in all 2878 | copies or substantial portions of the Software. 2879 | 2880 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2881 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 2882 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 2883 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2884 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2885 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 2886 | SOFTWARE. 2887 | ``` 2888 | 2889 | ### [`tree-sitter-newick`](https://github.com/delehef/tree-sitter-newick/blob/master/LICENSE.txt) 2890 | 2891 | ``` 2892 | CeCILL-C FREE SOFTWARE LICENSE AGREEMENT 2893 | 2894 | 2895 | Notice 2896 | 2897 | This Agreement is a Free Software license agreement that is the result 2898 | of discussions between its authors in order to ensure compliance with 2899 | the two main principles guiding its drafting: 2900 | 2901 | * firstly, compliance with the principles governing the distribution 2902 | of Free Software: access to source code, broad rights granted to 2903 | users, 2904 | * secondly, the election of a governing law, French law, with which 2905 | it is conformant, both as regards the law of torts and 2906 | intellectual property law, and the protection that it offers to 2907 | both authors and holders of the economic rights over software. 2908 | 2909 | The authors of the CeCILL-C (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre]) 2910 | license are: 2911 | 2912 | Commissariat à l'Energie Atomique - CEA, a public scientific, technical 2913 | and industrial research establishment, having its principal place of 2914 | business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France. 2915 | 2916 | Centre National de la Recherche Scientifique - CNRS, a public scientific 2917 | and technological establishment, having its principal place of business 2918 | at 3 rue Michel-Ange, 75794 Paris cedex 16, France. 2919 | 2920 | Institut National de Recherche en Informatique et en Automatique - 2921 | INRIA, a public scientific and technological establishment, having its 2922 | principal place of business at Domaine de Voluceau, Rocquencourt, BP 2923 | 105, 78153 Le Chesnay cedex, France. 2924 | 2925 | 2926 | Preamble 2927 | 2928 | The purpose of this Free Software license agreement is to grant users 2929 | the right to modify and re-use the software governed by this license. 2930 | 2931 | The exercising of this right is conditional upon the obligation to make 2932 | available to the community the modifications made to the source code of 2933 | the software so as to contribute to its evolution. 2934 | 2935 | In consideration of access to the source code and the rights to copy, 2936 | modify and redistribute granted by the license, users are provided only 2937 | with a limited warranty and the software's author, the holder of the 2938 | economic rights, and the successive licensors only have limited liability. 2939 | 2940 | In this respect, the risks associated with loading, using, modifying 2941 | and/or developing or reproducing the software by the user are brought to 2942 | the user's attention, given its Free Software status, which may make it 2943 | complicated to use, with the result that its use is reserved for 2944 | developers and experienced professionals having in-depth computer 2945 | knowledge. Users are therefore encouraged to load and test the 2946 | suitability of the software as regards their requirements in conditions 2947 | enabling the security of their systems and/or data to be ensured and, 2948 | more generally, to use and operate it in the same conditions of 2949 | security. This Agreement may be freely reproduced and published, 2950 | provided it is not altered, and that no provisions are either added or 2951 | removed herefrom. 2952 | 2953 | This Agreement may apply to any or all software for which the holder of 2954 | the economic rights decides to submit the use thereof to its provisions. 2955 | 2956 | 2957 | Article 1 - DEFINITIONS 2958 | 2959 | For the purpose of this Agreement, when the following expressions 2960 | commence with a capital letter, they shall have the following meaning: 2961 | 2962 | Agreement: means this license agreement, and its possible subsequent 2963 | versions and annexes. 2964 | 2965 | Software: means the software in its Object Code and/or Source Code form 2966 | and, where applicable, its documentation, "as is" when the Licensee 2967 | accepts the Agreement. 2968 | 2969 | Initial Software: means the Software in its Source Code and possibly its 2970 | Object Code form and, where applicable, its documentation, "as is" when 2971 | it is first distributed under the terms and conditions of the Agreement. 2972 | 2973 | Modified Software: means the Software modified by at least one 2974 | Integrated Contribution. 2975 | 2976 | Source Code: means all the Software's instructions and program lines to 2977 | which access is required so as to modify the Software. 2978 | 2979 | Object Code: means the binary files originating from the compilation of 2980 | the Source Code. 2981 | 2982 | Holder: means the holder(s) of the economic rights over the Initial 2983 | Software. 2984 | 2985 | Licensee: means the Software user(s) having accepted the Agreement. 2986 | 2987 | Contributor: means a Licensee having made at least one Integrated 2988 | Contribution. 2989 | 2990 | Licensor: means the Holder, or any other individual or legal entity, who 2991 | distributes the Software under the Agreement. 2992 | 2993 | Integrated Contribution: means any or all modifications, corrections, 2994 | translations, adaptations and/or new functions integrated into the 2995 | Source Code by any or all Contributors. 2996 | 2997 | Related Module: means a set of sources files including their 2998 | documentation that, without modification to the Source Code, enables 2999 | supplementary functions or services in addition to those offered by the 3000 | Software. 3001 | 3002 | Derivative Software: means any combination of the Software, modified or 3003 | not, and of a Related Module. 3004 | 3005 | Parties: mean both the Licensee and the Licensor. 3006 | 3007 | These expressions may be used both in singular and plural form. 3008 | 3009 | 3010 | Article 2 - PURPOSE 3011 | 3012 | The purpose of the Agreement is the grant by the Licensor to the 3013 | Licensee of a non-exclusive, transferable and worldwide license for the 3014 | Software as set forth in Article 5 hereinafter for the whole term of the 3015 | protection granted by the rights over said Software. 3016 | 3017 | 3018 | Article 3 - ACCEPTANCE 3019 | 3020 | 3.1 The Licensee shall be deemed as having accepted the terms and 3021 | conditions of this Agreement upon the occurrence of the first of the 3022 | following events: 3023 | 3024 | * (i) loading the Software by any or all means, notably, by 3025 | downloading from a remote server, or by loading from a physical 3026 | medium; 3027 | * (ii) the first time the Licensee exercises any of the rights 3028 | granted hereunder. 3029 | 3030 | 3.2 One copy of the Agreement, containing a notice relating to the 3031 | characteristics of the Software, to the limited warranty, and to the 3032 | fact that its use is restricted to experienced users has been provided 3033 | to the Licensee prior to its acceptance as set forth in Article 3.1 3034 | hereinabove, and the Licensee hereby acknowledges that it has read and 3035 | understood it. 3036 | 3037 | 3038 | Article 4 - EFFECTIVE DATE AND TERM 3039 | 3040 | 3041 | 4.1 EFFECTIVE DATE 3042 | 3043 | The Agreement shall become effective on the date when it is accepted by 3044 | the Licensee as set forth in Article 3.1. 3045 | 3046 | 3047 | 4.2 TERM 3048 | 3049 | The Agreement shall remain in force for the entire legal term of 3050 | protection of the economic rights over the Software. 3051 | 3052 | 3053 | Article 5 - SCOPE OF RIGHTS GRANTED 3054 | 3055 | The Licensor hereby grants to the Licensee, who accepts, the following 3056 | rights over the Software for any or all use, and for the term of the 3057 | Agreement, on the basis of the terms and conditions set forth hereinafter. 3058 | 3059 | Besides, if the Licensor owns or comes to own one or more patents 3060 | protecting all or part of the functions of the Software or of its 3061 | components, the Licensor undertakes not to enforce the rights granted by 3062 | these patents against successive Licensees using, exploiting or 3063 | modifying the Software. If these patents are transferred, the Licensor 3064 | undertakes to have the transferees subscribe to the obligations set 3065 | forth in this paragraph. 3066 | 3067 | 3068 | 5.1 RIGHT OF USE 3069 | 3070 | The Licensee is authorized to use the Software, without any limitation 3071 | as to its fields of application, with it being hereinafter specified 3072 | that this comprises: 3073 | 3074 | 1. permanent or temporary reproduction of all or part of the Software 3075 | by any or all means and in any or all form. 3076 | 3077 | 2. loading, displaying, running, or storing the Software on any or 3078 | all medium. 3079 | 3080 | 3. entitlement to observe, study or test its operation so as to 3081 | determine the ideas and principles behind any or all constituent 3082 | elements of said Software. This shall apply when the Licensee 3083 | carries out any or all loading, displaying, running, transmission 3084 | or storage operation as regards the Software, that it is entitled 3085 | to carry out hereunder. 3086 | 3087 | 3088 | 5.2 RIGHT OF MODIFICATION 3089 | 3090 | The right of modification includes the right to translate, adapt, 3091 | arrange, or make any or all modifications to the Software, and the right 3092 | to reproduce the resulting software. It includes, in particular, the 3093 | right to create a Derivative Software. 3094 | 3095 | The Licensee is authorized to make any or all modification to the 3096 | Software provided that it includes an explicit notice that it is the 3097 | author of said modification and indicates the date of the creation thereof. 3098 | 3099 | 3100 | 5.3 RIGHT OF DISTRIBUTION 3101 | 3102 | In particular, the right of distribution includes the right to publish, 3103 | transmit and communicate the Software to the general public on any or 3104 | all medium, and by any or all means, and the right to market, either in 3105 | consideration of a fee, or free of charge, one or more copies of the 3106 | Software by any means. 3107 | 3108 | The Licensee is further authorized to distribute copies of the modified 3109 | or unmodified Software to third parties according to the terms and 3110 | conditions set forth hereinafter. 3111 | 3112 | 3113 | 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION 3114 | 3115 | The Licensee is authorized to distribute true copies of the Software in 3116 | Source Code or Object Code form, provided that said distribution 3117 | complies with all the provisions of the Agreement and is accompanied by: 3118 | 3119 | 1. a copy of the Agreement, 3120 | 3121 | 2. a notice relating to the limitation of both the Licensor's 3122 | warranty and liability as set forth in Articles 8 and 9, 3123 | 3124 | and that, in the event that only the Object Code of the Software is 3125 | redistributed, the Licensee allows effective access to the full Source 3126 | Code of the Software at a minimum during the entire period of its 3127 | distribution of the Software, it being understood that the additional 3128 | cost of acquiring the Source Code shall not exceed the cost of 3129 | transferring the data. 3130 | 3131 | 3132 | 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE 3133 | 3134 | When the Licensee makes an Integrated Contribution to the Software, the 3135 | terms and conditions for the distribution of the resulting Modified 3136 | Software become subject to all the provisions of this Agreement. 3137 | 3138 | The Licensee is authorized to distribute the Modified Software, in 3139 | source code or object code form, provided that said distribution 3140 | complies with all the provisions of the Agreement and is accompanied by: 3141 | 3142 | 1. a copy of the Agreement, 3143 | 3144 | 2. a notice relating to the limitation of both the Licensor's 3145 | warranty and liability as set forth in Articles 8 and 9, 3146 | 3147 | and that, in the event that only the object code of the Modified 3148 | Software is redistributed, the Licensee allows effective access to the 3149 | full source code of the Modified Software at a minimum during the entire 3150 | period of its distribution of the Modified Software, it being understood 3151 | that the additional cost of acquiring the source code shall not exceed 3152 | the cost of transferring the data. 3153 | 3154 | 3155 | 5.3.3 DISTRIBUTION OF DERIVATIVE SOFTWARE 3156 | 3157 | When the Licensee creates Derivative Software, this Derivative Software 3158 | may be distributed under a license agreement other than this Agreement, 3159 | subject to compliance with the requirement to include a notice 3160 | concerning the rights over the Software as defined in Article 6.4. 3161 | In the event the creation of the Derivative Software required modification 3162 | of the Source Code, the Licensee undertakes that: 3163 | 3164 | 1. the resulting Modified Software will be governed by this Agreement, 3165 | 2. the Integrated Contributions in the resulting Modified Software 3166 | will be clearly identified and documented, 3167 | 3. the Licensee will allow effective access to the source code of the 3168 | Modified Software, at a minimum during the entire period of 3169 | distribution of the Derivative Software, such that such 3170 | modifications may be carried over in a subsequent version of the 3171 | Software; it being understood that the additional cost of 3172 | purchasing the source code of the Modified Software shall not 3173 | exceed the cost of transferring the data. 3174 | 3175 | 3176 | 5.3.4 COMPATIBILITY WITH THE CeCILL LICENSE 3177 | 3178 | When a Modified Software contains an Integrated Contribution subject to 3179 | the CeCILL license agreement, or when a Derivative Software contains a 3180 | Related Module subject to the CeCILL license agreement, the provisions 3181 | set forth in the third item of Article 6.4 are optional. 3182 | 3183 | 3184 | Article 6 - INTELLECTUAL PROPERTY 3185 | 3186 | 3187 | 6.1 OVER THE INITIAL SOFTWARE 3188 | 3189 | The Holder owns the economic rights over the Initial Software. Any or 3190 | all use of the Initial Software is subject to compliance with the terms 3191 | and conditions under which the Holder has elected to distribute its work 3192 | and no one shall be entitled to modify the terms and conditions for the 3193 | distribution of said Initial Software. 3194 | 3195 | The Holder undertakes that the Initial Software will remain ruled at 3196 | least by this Agreement, for the duration set forth in Article 4.2. 3197 | 3198 | 3199 | 6.2 OVER THE INTEGRATED CONTRIBUTIONS 3200 | 3201 | The Licensee who develops an Integrated Contribution is the owner of the 3202 | intellectual property rights over this Contribution as defined by 3203 | applicable law. 3204 | 3205 | 3206 | 6.3 OVER THE RELATED MODULES 3207 | 3208 | The Licensee who develops a Related Module is the owner of the 3209 | intellectual property rights over this Related Module as defined by 3210 | applicable law and is free to choose the type of agreement that shall 3211 | govern its distribution under the conditions defined in Article 5.3.3. 3212 | 3213 | 3214 | 6.4 NOTICE OF RIGHTS 3215 | 3216 | The Licensee expressly undertakes: 3217 | 3218 | 1. not to remove, or modify, in any manner, the intellectual property 3219 | notices attached to the Software; 3220 | 3221 | 2. to reproduce said notices, in an identical manner, in the copies 3222 | of the Software modified or not; 3223 | 3224 | 3. to ensure that use of the Software, its intellectual property 3225 | notices and the fact that it is governed by the Agreement is 3226 | indicated in a text that is easily accessible, specifically from 3227 | the interface of any Derivative Software. 3228 | 3229 | The Licensee undertakes not to directly or indirectly infringe the 3230 | intellectual property rights of the Holder and/or Contributors on the 3231 | Software and to take, where applicable, vis-à-vis its staff, any and all 3232 | measures required to ensure respect of said intellectual property rights 3233 | of the Holder and/or Contributors. 3234 | 3235 | 3236 | Article 7 - RELATED SERVICES 3237 | 3238 | 7.1 Under no circumstances shall the Agreement oblige the Licensor to 3239 | provide technical assistance or maintenance services for the Software. 3240 | 3241 | However, the Licensor is entitled to offer this type of services. The 3242 | terms and conditions of such technical assistance, and/or such 3243 | maintenance, shall be set forth in a separate instrument. Only the 3244 | Licensor offering said maintenance and/or technical assistance services 3245 | shall incur liability therefor. 3246 | 3247 | 7.2 Similarly, any Licensor is entitled to offer to its licensees, under 3248 | its sole responsibility, a warranty, that shall only be binding upon 3249 | itself, for the redistribution of the Software and/or the Modified 3250 | Software, under terms and conditions that it is free to decide. Said 3251 | warranty, and the financial terms and conditions of its application, 3252 | shall be subject of a separate instrument executed between the Licensor 3253 | and the Licensee. 3254 | 3255 | 3256 | Article 8 - LIABILITY 3257 | 3258 | 8.1 Subject to the provisions of Article 8.2, the Licensee shall be 3259 | entitled to claim compensation for any direct loss it may have suffered 3260 | from the Software as a result of a fault on the part of the relevant 3261 | Licensor, subject to providing evidence thereof. 3262 | 3263 | 8.2 The Licensor's liability is limited to the commitments made under 3264 | this Agreement and shall not be incurred as a result of in particular: 3265 | (i) loss due the Licensee's total or partial failure to fulfill its 3266 | obligations, (ii) direct or consequential loss that is suffered by the 3267 | Licensee due to the use or performance of the Software, and (iii) more 3268 | generally, any consequential loss. In particular the Parties expressly 3269 | agree that any or all pecuniary or business loss (i.e. loss of data, 3270 | loss of profits, operating loss, loss of customers or orders, 3271 | opportunity cost, any disturbance to business activities) or any or all 3272 | legal proceedings instituted against the Licensee by a third party, 3273 | shall constitute consequential loss and shall not provide entitlement to 3274 | any or all compensation from the Licensor. 3275 | 3276 | 3277 | Article 9 - WARRANTY 3278 | 3279 | 9.1 The Licensee acknowledges that the scientific and technical 3280 | state-of-the-art when the Software was distributed did not enable all 3281 | possible uses to be tested and verified, nor for the presence of 3282 | possible defects to be detected. In this respect, the Licensee's 3283 | attention has been drawn to the risks associated with loading, using, 3284 | modifying and/or developing and reproducing the Software which are 3285 | reserved for experienced users. 3286 | 3287 | The Licensee shall be responsible for verifying, by any or all means, 3288 | the suitability of the product for its requirements, its good working 3289 | order, and for ensuring that it shall not cause damage to either persons 3290 | or properties. 3291 | 3292 | 9.2 The Licensor hereby represents, in good faith, that it is entitled 3293 | to grant all the rights over the Software (including in particular the 3294 | rights set forth in Article 5). 3295 | 3296 | 9.3 The Licensee acknowledges that the Software is supplied "as is" by 3297 | the Licensor without any other express or tacit warranty, other than 3298 | that provided for in Article 9.2 and, in particular, without any warranty 3299 | as to its commercial value, its secured, safe, innovative or relevant 3300 | nature. 3301 | 3302 | Specifically, the Licensor does not warrant that the Software is free 3303 | from any error, that it will operate without interruption, that it will 3304 | be compatible with the Licensee's own equipment and software 3305 | configuration, nor that it will meet the Licensee's requirements. 3306 | 3307 | 9.4 The Licensor does not either expressly or tacitly warrant that the 3308 | Software does not infringe any third party intellectual property right 3309 | relating to a patent, software or any other property right. Therefore, 3310 | the Licensor disclaims any and all liability towards the Licensee 3311 | arising out of any or all proceedings for infringement that may be 3312 | instituted in respect of the use, modification and redistribution of the 3313 | Software. Nevertheless, should such proceedings be instituted against 3314 | the Licensee, the Licensor shall provide it with technical and legal 3315 | assistance for its defense. Such technical and legal assistance shall be 3316 | decided on a case-by-case basis between the relevant Licensor and the 3317 | Licensee pursuant to a memorandum of understanding. The Licensor 3318 | disclaims any and all liability as regards the Licensee's use of the 3319 | name of the Software. No warranty is given as regards the existence of 3320 | prior rights over the name of the Software or as regards the existence 3321 | of a trademark. 3322 | 3323 | 3324 | Article 10 - TERMINATION 3325 | 3326 | 10.1 In the event of a breach by the Licensee of its obligations 3327 | hereunder, the Licensor may automatically terminate this Agreement 3328 | thirty (30) days after notice has been sent to the Licensee and has 3329 | remained ineffective. 3330 | 3331 | 10.2 A Licensee whose Agreement is terminated shall no longer be 3332 | authorized to use, modify or distribute the Software. However, any 3333 | licenses that it may have granted prior to termination of the Agreement 3334 | shall remain valid subject to their having been granted in compliance 3335 | with the terms and conditions hereof. 3336 | 3337 | 3338 | Article 11 - MISCELLANEOUS 3339 | 3340 | 3341 | 11.1 EXCUSABLE EVENTS 3342 | 3343 | Neither Party shall be liable for any or all delay, or failure to 3344 | perform the Agreement, that may be attributable to an event of force 3345 | majeure, an act of God or an outside cause, such as defective 3346 | functioning or interruptions of the electricity or telecommunications 3347 | networks, network paralysis following a virus attack, intervention by 3348 | government authorities, natural disasters, water damage, earthquakes, 3349 | fire, explosions, strikes and labor unrest, war, etc. 3350 | 3351 | 11.2 Any failure by either Party, on one or more occasions, to invoke 3352 | one or more of the provisions hereof, shall under no circumstances be 3353 | interpreted as being a waiver by the interested Party of its right to 3354 | invoke said provision(s) subsequently. 3355 | 3356 | 11.3 The Agreement cancels and replaces any or all previous agreements, 3357 | whether written or oral, between the Parties and having the same 3358 | purpose, and constitutes the entirety of the agreement between said 3359 | Parties concerning said purpose. No supplement or modification to the 3360 | terms and conditions hereof shall be effective as between the Parties 3361 | unless it is made in writing and signed by their duly authorized 3362 | representatives. 3363 | 3364 | 11.4 In the event that one or more of the provisions hereof were to 3365 | conflict with a current or future applicable act or legislative text, 3366 | said act or legislative text shall prevail, and the Parties shall make 3367 | the necessary amendments so as to comply with said act or legislative 3368 | text. All other provisions shall remain effective. Similarly, invalidity 3369 | of a provision of the Agreement, for any reason whatsoever, shall not 3370 | cause the Agreement as a whole to be invalid. 3371 | 3372 | 3373 | 11.5 LANGUAGE 3374 | 3375 | The Agreement is drafted in both French and English and both versions 3376 | are deemed authentic. 3377 | 3378 | 3379 | Article 12 - NEW VERSIONS OF THE AGREEMENT 3380 | 3381 | 12.1 Any person is authorized to duplicate and distribute copies of this 3382 | Agreement. 3383 | 3384 | 12.2 So as to ensure coherence, the wording of this Agreement is 3385 | protected and may only be modified by the authors of the License, who 3386 | reserve the right to periodically publish updates or new versions of the 3387 | Agreement, each with a separate number. These subsequent versions may 3388 | address new issues encountered by Free Software. 3389 | 3390 | 12.3 Any Software distributed under a given version of the Agreement may 3391 | only be subsequently distributed under the same version of the Agreement 3392 | or a subsequent version. 3393 | 3394 | 3395 | Article 13 - GOVERNING LAW AND JURISDICTION 3396 | 3397 | 13.1 The Agreement is governed by French law. The Parties agree to 3398 | endeavor to seek an amicable solution to any disagreements or disputes 3399 | that may arise during the performance of the Agreement. 3400 | 3401 | 13.2 Failing an amicable solution within two (2) months as from their 3402 | occurrence, and unless emergency proceedings are necessary, the 3403 | disagreements or disputes shall be referred to the Paris Courts having 3404 | jurisdiction, by the more diligent Party. 3405 | 3406 | 3407 | Version 1.0 dated 2006-09-05. 3408 | ``` 3409 | 3410 | ### [`tree-sitter-scss`](https://github.com/serenadeai/tree-sitter-scss/blob/master/LICENSE) 3411 | 3412 | ``` 3413 | The MIT License (MIT) 3414 | 3415 | Copyright (c) 2020 Serenade Labs, Inc. 3416 | 3417 | Permission is hereby granted, free of charge, to any person obtaining a copy 3418 | of this software and associated documentation files (the "Software"), to deal 3419 | in the Software without restriction, including without limitation the rights 3420 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 3421 | copies of the Software, and to permit persons to whom the Software is 3422 | furnished to do so, subject to the following conditions: 3423 | 3424 | The above copyright notice and this permission notice shall be included in all 3425 | copies or substantial portions of the Software. 3426 | 3427 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 3428 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 3429 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 3430 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 3431 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 3432 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 3433 | SOFTWARE. 3434 | ``` 3435 | 3436 | ### [`tree-sitter-toml`](https://github.com/tree-sitter-grammars/tree-sitter-toml/blob/master/LICENSE) 3437 | 3438 | ``` 3439 | The MIT License (MIT) 3440 | 3441 | Copyright (c) Ika (https://github.com/ikatyang) 3442 | 3443 | Permission is hereby granted, free of charge, to any person obtaining a copy 3444 | of this software and associated documentation files (the "Software"), to deal 3445 | in the Software without restriction, including without limitation the rights 3446 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 3447 | copies of the Software, and to permit persons to whom the Software is 3448 | furnished to do so, subject to the following conditions: 3449 | 3450 | The above copyright notice and this permission notice shall be included in all 3451 | copies or substantial portions of the Software. 3452 | 3453 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 3454 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 3455 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 3456 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 3457 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 3458 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 3459 | SOFTWARE. 3460 | ``` 3461 | 3462 | ### [`tree-sitter-xml`](https://github.com/tree-sitter-grammars/tree-sitter-xml/blob/master/LICENSE) 3463 | 3464 | ``` 3465 | Copyright (c) 2023 ObserverOfTime 3466 | 3467 | Permission is hereby granted, free of charge, to any person obtaining a copy 3468 | of this software and associated documentation files (the "Software"), to deal 3469 | in the Software without restriction, including without limitation the rights 3470 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 3471 | copies of the Software, and to permit persons to whom the Software is 3472 | furnished to do so, subject to the following conditions: 3473 | 3474 | The above copyright notice and this permission notice shall be included in all 3475 | copies or substantial portions of the Software. 3476 | 3477 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 3478 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 3479 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 3480 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 3481 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 3482 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 3483 | SOFTWARE. 3484 | ``` 3485 | 3486 | ### [`tree-sitter-yaml`](https://github.com/tree-sitter-grammars/tree-sitter-yaml/blob/master/LICENSE) 3487 | 3488 | ``` 3489 | Copyright (c) 2024 tree-sitter-grammars contributors 3490 | Copyright (c) 2019-2021 Ika 3491 | 3492 | Permission is hereby granted, free of charge, to any person obtaining a copy 3493 | of this software and associated documentation files (the "Software"), to deal 3494 | in the Software without restriction, including without limitation the rights 3495 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 3496 | copies of the Software, and to permit persons to whom the Software is 3497 | furnished to do so, subject to the following conditions: 3498 | 3499 | The above copyright notice and this permission notice shall be included in all 3500 | copies or substantial portions of the Software. 3501 | 3502 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 3503 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 3504 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 3505 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 3506 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 3507 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 3508 | SOFTWARE. 3509 | ``` 3510 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2025 Joel Drapper 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Difftastic Ruby 2 | 3 | A Ruby interface and wrapper for the wonderful [Difftastic](https://difftastic.wilfred.me.uk) CLI tool. 4 | 5 | ## Creating a Differ 6 | 7 | First, create a differ with your configuration: 8 | 9 | ```ruby 10 | MY_DIFFER = Difftastic::Differ.new( 11 | background: :dark, 12 | color: :always, 13 | left_label: "Expected", 14 | right_label: "Actual" 15 | ) 16 | ``` 17 | 18 | ## Diffing Objects 19 | 20 | You can diff objects with different configurations: 21 | 22 | ```ruby 23 | a = { foo: 1, bar: [2, 3, 4] } 24 | b = { foo: 1, bar: [2, 4, 3] } 25 | 26 | puts MY_DIFFER.diff_objects(a, b) 27 | ``` 28 | 29 | ## Diffing Ruby Code 30 | 31 | You can diff Ruby code: 32 | 33 | ```ruby 34 | a = <<~RUBY 35 | def hello 36 | puts "Hello, world!" 37 | end 38 | RUBY 39 | 40 | b = <<~RUBY 41 | def hello 42 | puts "Goodbye, world!" 43 | end 44 | RUBY 45 | 46 | puts MY_DIFFER.diff_ruby(a, b) 47 | ``` 48 | 49 | ## Additional File Type Methods 50 | 51 | You can also diff other file types using the following methods: 52 | 53 | ```ruby 54 | a = "\n\t\n\t\t

Hello, world!

\n\t\n" 55 | b = "\n\t\n\t\t

Goodbye, world!

\n\t\n" 56 | 57 | puts MY_DIFFER.diff_html(a, b) 58 | 59 | a = '{ "foo": 1, "bar": 2 }' 60 | b = '{ "foo": 1, "bar": 3 }' 61 | 62 | puts MY_DIFFER.diff_json(a, b) 63 | 64 | a = "body { color: red; }" 65 | b = "body { color: blue; }" 66 | 67 | puts MY_DIFFER.diff_css(a, b) 68 | 69 | a = "ToveJani" 70 | b = "ToveJohn" 71 | 72 | puts MY_DIFFER.diff_xml(a, b) 73 | 74 | a = "foo: 1\nbar: 2" 75 | b = "foo: 1\nbar: 3" 76 | 77 | puts MY_DIFFER.diff_yaml(a, b) 78 | ``` 79 | 80 | ## Configuring Difftastic::Differ 81 | 82 | You can configure the `Difftastic::Differ` instance with various options: 83 | 84 | - `background`: Set the background color (`:dark` or `:light`). 85 | - `color`: Set the color mode (`:always`, `:never`, or `:auto`). 86 | - `syntax_highlight`: Enable or disable syntax highlighting (`:on` or `:off`). 87 | - `context`: Set the number of context lines to display. 88 | - `width`: Use this many columns when calculating line wrapping. If not specified, difftastic will detect the terminal width. 89 | - `tab_width`: Set the tab width for indentation. 90 | - `parse_error_limit`: Set the limit for parse errors. 91 | - `underline_highlights`: Enable or disable underlining highlights (`true` or `false`). 92 | - `left_label`: Set the label for the left side of the diff. 93 | - `right_label`: Set the label for the right side of the diff. 94 | - `display`: Set the display mode (`"side-by-side-show-both"`, `"side-by-side"`, or `"inline"`). 95 | 96 | ## Pretty Method 97 | 98 | The `Difftastic` module includes a `pretty` method for formatting objects: 99 | 100 | ```ruby 101 | object = { foo: 1, bar: [2, 3, 4] } 102 | formatted_object = Difftastic.pretty(object) 103 | puts formatted_object 104 | ``` 105 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require "bundler/gem_tasks" 4 | -------------------------------------------------------------------------------- /bin/release: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | bundle 4 | 5 | rake package 6 | 7 | for gem in pkg/difftastic-$VERSION*.gem ; do 8 | gem push "$gem" --host https://rubygems.org 9 | 10 | if [ $? -eq 0 ]; then 11 | rm "$gem" 12 | rm -rf "${gem/.gem/}" 13 | fi 14 | done 15 | -------------------------------------------------------------------------------- /config/quickdraw.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require "difftastic" 4 | 5 | class Example 6 | def initialize 7 | @foo = 1 8 | @bar = [2, 3, 4] 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /difftastic.gemspec: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative "lib/difftastic/version" 4 | 5 | Gem::Specification.new do |spec| 6 | spec.name = "difftastic" 7 | spec.version = Difftastic::VERSION 8 | spec.authors = ["Joel Drapper"] 9 | spec.email = ["joel@drapper.me"] 10 | 11 | spec.summary = "Integrate Difftastic with the RubyGems infrastructure." 12 | spec.homepage = "https://github.com/joeldrapper/difftastic-ruby" 13 | spec.license = "MIT" 14 | spec.required_ruby_version = ">= 3.1.0" 15 | 16 | spec.metadata = { 17 | "homepage_uri" => spec.homepage, 18 | "rubygems_mfa_required" => "true", 19 | "changelog_uri" => "https://github.com/joeldrapper/difftastic-ruby/releases", 20 | } 21 | 22 | spec.files = Dir[ 23 | "lib/**/*", 24 | "LICENSE.txt", 25 | "README.md" 26 | ] 27 | 28 | spec.bindir = "exe" 29 | 30 | spec.add_dependency "pretty_please" 31 | 32 | spec.executables << "difft" 33 | end 34 | -------------------------------------------------------------------------------- /exe/difft: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env ruby 2 | # frozen_string_literal: true 3 | 4 | # because rubygems shims assume a gem's executables are Ruby 5 | 6 | require "difftastic" 7 | exec(Difftastic.executable, *ARGV) 8 | -------------------------------------------------------------------------------- /lib/difftastic.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require "difftastic/version" 4 | require "tempfile" 5 | require "pretty_please" 6 | 7 | module Difftastic 8 | autoload :ANSI, "difftastic/ansi" 9 | autoload :Differ, "difftastic/differ" 10 | autoload :Upstream, "difftastic/upstream" 11 | 12 | GEM_NAME = "difftastic" 13 | DEFAULT_DIR = File.expand_path(File.join(__dir__, "..", "exe")) 14 | 15 | class ExecutableNotFoundException < StandardError 16 | end 17 | 18 | def self.execute(command) 19 | `#{executable} #{command}` 20 | end 21 | 22 | def self.platform 23 | [:cpu, :os].map { |m| Gem::Platform.local.__send__(m) }.join("-") 24 | end 25 | 26 | def self.executable(exe_path: DEFAULT_DIR) 27 | difftastic_install_dir = ENV["DIFFTASTIC_INSTALL_DIR"] 28 | 29 | if difftastic_install_dir 30 | if File.directory?(difftastic_install_dir) 31 | warn "NOTE: using DIFFTASTIC_INSTALL_DIR to find difftastic executable: #{difftastic_install_dir}" 32 | exe_path = difftastic_install_dir 33 | exe_file = File.expand_path(File.join(difftastic_install_dir, "difft")) 34 | else 35 | raise DirectoryNotFoundException.new(<<~MESSAGE) 36 | DIFFTASTIC_INSTALL_DIR is set to #{difftastic_install_dir}, but that directory does not exist. 37 | MESSAGE 38 | end 39 | else 40 | if Difftastic::Upstream::NATIVE_PLATFORMS.keys.none? { |p| Gem::Platform.match_gem?(Gem::Platform.new(p), GEM_NAME) } 41 | raise UnsupportedPlatformException.new(<<~MESSAGE) 42 | difftastic-ruby does not support the #{platform} platform 43 | Please install difftastic following instructions at https://difftastic.io/install 44 | MESSAGE 45 | end 46 | 47 | exe_file = Dir.glob(File.expand_path(File.join(exe_path, "**", "difft"))).find do |f| 48 | Gem::Platform.match_gem?(Gem::Platform.new(File.basename(File.dirname(f))), GEM_NAME) 49 | end 50 | end 51 | 52 | if exe_file.nil? || !File.exist?(exe_file) 53 | raise ExecutableNotFoundException.new(<<~MESSAGE) 54 | Cannot find the difftastic executable for #{platform} in #{exe_path} 55 | 56 | If you're using bundler, please make sure you're on the latest bundler version: 57 | 58 | gem install bundler 59 | bundle update --bundler 60 | 61 | Then make sure your lock file includes this platform by running: 62 | 63 | bundle lock --add-platform #{platform} 64 | bundle install 65 | 66 | See `bundle lock --help` output for details. 67 | 68 | If you're still seeing this message after taking those steps, try running 69 | `bundle config` and ensure `force_ruby_platform` isn't set to `true`. 70 | MESSAGE 71 | end 72 | 73 | exe_file 74 | end 75 | 76 | def self.pretty(object, indent: 0, tab_width: 2, max_width: 60, max_depth: 5, max_items: 10) 77 | PrettyPlease.prettify(object, indent:, tab_width:, max_width:, max_depth:, max_items:) 78 | end 79 | end 80 | -------------------------------------------------------------------------------- /lib/difftastic/ansi.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | class Difftastic::ANSI 4 | RED = "\e[91;1m" 5 | GREEN = "\e[92;1m" 6 | RESET = "\e[0m" 7 | 8 | def self.green(string = "") 9 | "#{GREEN}#{string}" 10 | end 11 | 12 | def self.red(string = "") 13 | "#{RED}#{string}" 14 | end 15 | 16 | def self.reset(string = "") 17 | "#{RESET}#{string}" 18 | end 19 | 20 | def self.strip_formatting(string) 21 | string.to_s.gsub(/\e\[[0-9;]*m/, "") 22 | end 23 | end 24 | -------------------------------------------------------------------------------- /lib/difftastic/differ.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | class Difftastic::Differ 4 | DEFAULT_TAB_WIDTH = 2 5 | 6 | def initialize(background: nil, color: nil, syntax_highlight: nil, context: nil, width: nil, tab_width: nil, parse_error_limit: nil, underline_highlights: true, left_label: nil, right_label: nil, display: "side-by-side-show-both") 7 | @show_paths = false 8 | @background = background => :dark | :light | nil 9 | @color = color => :always | :never | :auto | nil 10 | @syntax_highlight = syntax_highlight => :on | :off | nil 11 | @context = context => Integer | nil 12 | @width = width => Integer | nil 13 | @tab_width = tab_width => Integer | nil 14 | @parse_error_limit = parse_error_limit => Integer | nil 15 | @underline_highlights = underline_highlights => true | false 16 | @left_label = left_label => String | nil 17 | @right_label = right_label => String | nil 18 | @display = display 19 | end 20 | 21 | def diff_objects(old, new) 22 | tab_width = @tab_width || DEFAULT_TAB_WIDTH 23 | 24 | old = Difftastic.pretty(old, tab_width:) 25 | new = Difftastic.pretty(new, tab_width:) 26 | 27 | diff_strings(old, new, file_extension: "rb") 28 | end 29 | 30 | def diff_ada(old, new) 31 | diff_strings(old, new, file_extension: "ada") 32 | end 33 | 34 | def diff_apex(old, new) 35 | diff_strings(old, new, file_extension: "apex") 36 | end 37 | 38 | def diff_bash(old, new) 39 | diff_strings(old, new, file_extension: "sh") 40 | end 41 | 42 | def diff_c(old, new) 43 | diff_strings(old, new, file_extension: "c") 44 | end 45 | 46 | def diff_cpp(old, new) 47 | diff_strings(old, new, file_extension: "cpp") 48 | end 49 | 50 | def diff_csharp(old, new) 51 | diff_strings(old, new, file_extension: "cs") 52 | end 53 | 54 | def diff_clojure(old, new) 55 | diff_strings(old, new, file_extension: "clj") 56 | end 57 | 58 | def diff_cmake(old, new) 59 | diff_strings(old, new, file_extension: "cmake") 60 | end 61 | 62 | def diff_commonlisp(old, new) 63 | diff_strings(old, new, file_extension: "lisp") 64 | end 65 | 66 | def diff_dart(old, new) 67 | diff_strings(old, new, file_extension: "dart") 68 | end 69 | 70 | def diff_devicetree(old, new) 71 | diff_strings(old, new, file_extension: "dts") 72 | end 73 | 74 | def diff_elixir(old, new) 75 | diff_strings(old, new, file_extension: "ex") 76 | end 77 | 78 | def diff_elm(old, new) 79 | diff_strings(old, new, file_extension: "elm") 80 | end 81 | 82 | def diff_elvish(old, new) 83 | diff_strings(old, new, file_extension: "elv") 84 | end 85 | 86 | def diff_erlang(old, new) 87 | diff_strings(old, new, file_extension: "erl") 88 | end 89 | 90 | def diff_elisp(old, new) 91 | diff_strings(old, new, file_extension: "el") 92 | end 93 | 94 | def diff_fsharp(old, new) 95 | diff_strings(old, new, file_extension: "fs") 96 | end 97 | 98 | def diff_gleam(old, new) 99 | diff_strings(old, new, file_extension: "gleam") 100 | end 101 | 102 | def diff_go(old, new) 103 | diff_strings(old, new, file_extension: "go") 104 | end 105 | 106 | def diff_hack(old, new) 107 | diff_strings(old, new, file_extension: "hack") 108 | end 109 | 110 | def diff_hare(old, new) 111 | diff_strings(old, new, file_extension: "ha") 112 | end 113 | 114 | def diff_haskell(old, new) 115 | diff_strings(old, new, file_extension: "hs") 116 | end 117 | 118 | def diff_janet(old, new) 119 | diff_strings(old, new, file_extension: "janet") 120 | end 121 | 122 | def diff_java(old, new) 123 | diff_strings(old, new, file_extension: "java") 124 | end 125 | 126 | def diff_javascript(old, new) 127 | diff_strings(old, new, file_extension: "js") 128 | end 129 | 130 | def diff_jsx(old, new) 131 | diff_strings(old, new, file_extension: "jsx") 132 | end 133 | 134 | def diff_julia(old, new) 135 | diff_strings(old, new, file_extension: "jl") 136 | end 137 | 138 | def diff_kotlin(old, new) 139 | diff_strings(old, new, file_extension: "kt") 140 | end 141 | 142 | def diff_lua(old, new) 143 | diff_strings(old, new, file_extension: "lua") 144 | end 145 | 146 | def diff_make(old, new) 147 | diff_strings(old, new, file_extension: "mk") 148 | end 149 | 150 | def diff_nix(old, new) 151 | diff_strings(old, new, file_extension: "nix") 152 | end 153 | 154 | def diff_objc(old, new) 155 | diff_strings(old, new, file_extension: "m") 156 | end 157 | 158 | def diff_ocaml(old, new) 159 | diff_strings(old, new, file_extension: "ml") 160 | end 161 | 162 | def diff_perl(old, new) 163 | diff_strings(old, new, file_extension: "pl") 164 | end 165 | 166 | def diff_php(old, new) 167 | diff_strings(old, new, file_extension: "php") 168 | end 169 | 170 | def diff_python(old, new) 171 | diff_strings(old, new, file_extension: "py") 172 | end 173 | 174 | def diff_qml(old, new) 175 | diff_strings(old, new, file_extension: "qml") 176 | end 177 | 178 | def diff_r(old, new) 179 | diff_strings(old, new, file_extension: "r") 180 | end 181 | 182 | def diff_racket(old, new) 183 | diff_strings(old, new, file_extension: "rkt") 184 | end 185 | 186 | def diff_ruby(old, new) 187 | diff_strings(old, new, file_extension: "rb") 188 | end 189 | 190 | def diff_rust(old, new) 191 | diff_strings(old, new, file_extension: "rs") 192 | end 193 | 194 | def diff_scala(old, new) 195 | diff_strings(old, new, file_extension: "scala") 196 | end 197 | 198 | def diff_scheme(old, new) 199 | diff_strings(old, new, file_extension: "scm") 200 | end 201 | 202 | def diff_smali(old, new) 203 | diff_strings(old, new, file_extension: "smali") 204 | end 205 | 206 | def diff_solidity(old, new) 207 | diff_strings(old, new, file_extension: "sol") 208 | end 209 | 210 | def diff_sql(old, new) 211 | diff_strings(old, new, file_extension: "sql") 212 | end 213 | 214 | def diff_swift(old, new) 215 | diff_strings(old, new, file_extension: "swift") 216 | end 217 | 218 | def diff_typescript(old, new) 219 | diff_strings(old, new, file_extension: "ts") 220 | end 221 | 222 | def diff_tsx(old, new) 223 | diff_strings(old, new, file_extension: "tsx") 224 | end 225 | 226 | def diff_vhdl(old, new) 227 | diff_strings(old, new, file_extension: "vhdl") 228 | end 229 | 230 | def diff_zig(old, new) 231 | diff_strings(old, new, file_extension: "zig") 232 | end 233 | 234 | def diff_css(old, new) 235 | diff_strings(old, new, file_extension: "css") 236 | end 237 | 238 | def diff_hcl(old, new) 239 | diff_strings(old, new, file_extension: "hcl") 240 | end 241 | 242 | def diff_html(old, new) 243 | diff_strings(old, new, file_extension: "html") 244 | end 245 | 246 | def diff_json(old, new) 247 | diff_strings(old, new, file_extension: "json") 248 | end 249 | 250 | def diff_latex(old, new) 251 | diff_strings(old, new, file_extension: "tex") 252 | end 253 | 254 | def diff_newick(old, new) 255 | diff_strings(old, new, file_extension: "newick") 256 | end 257 | 258 | def diff_scss(old, new) 259 | diff_strings(old, new, file_extension: "scss") 260 | end 261 | 262 | def diff_toml(old, new) 263 | diff_strings(old, new, file_extension: "toml") 264 | end 265 | 266 | def diff_xml(old, new) 267 | diff_strings(old, new, file_extension: "xml") 268 | end 269 | 270 | def diff_yaml(old, new) 271 | diff_strings(old, new, file_extension: "yaml") 272 | end 273 | 274 | def diff_strings(old, new, file_extension: nil) 275 | old_file = Tempfile.new(["old", ".#{file_extension}"]) 276 | new_file = Tempfile.new(["new", ".#{file_extension}"]) 277 | 278 | old_file.write(old) 279 | new_file.write(new) 280 | 281 | old_file.close 282 | new_file.close 283 | 284 | diff_files(old_file, new_file) 285 | ensure 286 | old_file.unlink 287 | new_file.unlink 288 | end 289 | 290 | def diff_files(old_file, new_file) 291 | options = [ 292 | (file_to_path(old_file)), 293 | (file_to_path(new_file)), 294 | ("--color=#{@color}" if @color), 295 | ("--context=#{@context}" if @context), 296 | ("--background=#{@background}" if @background), 297 | ("--syntax-highlight=#{@syntax_highlight}" if @syntax_highlight), 298 | ("--tab-width=#{@tab_width}" if @tab_width), 299 | ("--display=#{@display}" if @display), 300 | ("--width=#{@width}" if @width), 301 | ].compact! 302 | 303 | result = Difftastic.execute(options.join(" ")).lstrip.sub(/\n{2}\z/, "") 304 | 305 | unless @show_paths 306 | new_line_index = (result.index("\n") || 0) + 1 307 | result = result.byteslice(new_line_index, result.bytesize - new_line_index) 308 | end 309 | 310 | if @left_label || @right_label 311 | # Get the first content line to calculate offset 312 | offset_line = @show_paths ? 1 : 0 313 | first_line = result.split("\n")[offset_line] 314 | 315 | # Calculate padding needed between labels 316 | offset = right_label_offset(first_line) 317 | 318 | left_part = if @left_label 319 | Difftastic::ANSI.red(@left_label.to_s.ljust(offset)) 320 | else 321 | " " * offset 322 | end 323 | 324 | right_part = if @right_label 325 | Difftastic::ANSI.green(@right_label.to_s) 326 | else 327 | "" 328 | end 329 | 330 | # Insert formatted labels at the top 331 | result = "#{left_part}#{right_part}#{Difftastic::ANSI.reset}\n#{result}" 332 | end 333 | 334 | # Removed due to inconsistencies in the original output. Need to improve the pattern matching. 335 | # if @underline_highlights 336 | # result.gsub!(/\e\[([0-9;]*)m/) { 337 | # codes = $1 338 | # if codes =~ /9[12];1|1;9[12]/ # Matches 91;1, 92;1, 1;91, or 1;92 339 | # "\e[#{codes};4m" 340 | # else 341 | # "\e[#{codes}m" 342 | # end 343 | # } 344 | # end 345 | 346 | result 347 | end 348 | 349 | private 350 | 351 | def right_label_offset(line) 352 | tab_width = @tab_width || DEFAULT_TAB_WIDTH 353 | stripped_line = ::Difftastic::ANSI.strip_formatting(line) 354 | _lhs, rhs = stripped_line.split(/\s{#{tab_width},}/, 2) 355 | 356 | index = stripped_line.index("#{' ' * tab_width}#{rhs}") 357 | index = @width / 2 if @width && index.nil? 358 | index = 0 if index.nil? 359 | 360 | offset = index + tab_width 361 | minimum_offset = 29 362 | 363 | [minimum_offset, offset].max 364 | end 365 | 366 | def file_to_path(file) 367 | return file if file.is_a?(String) 368 | return file.path if file.is_a?(File) 369 | return file.path if file.is_a?(Tempfile) 370 | return file.to_s if file.is_a?(Pathname) # just to be explicit 371 | 372 | file.to_s 373 | end 374 | end 375 | -------------------------------------------------------------------------------- /lib/difftastic/upstream.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module Difftastic 4 | module Upstream 5 | VERSION = "0.62.0" 6 | 7 | NATIVE_PLATFORMS = { 8 | "arm64-darwin" => "difft-aarch64-apple-darwin.tar.gz", 9 | "arm64-linux" => "difft-aarch64-unknown-linux-gnu.tar.gz", 10 | "x86_64-darwin" => "difft-x86_64-apple-darwin.tar.gz", 11 | "x86_64-linux" => "difft-x86_64-unknown-linux-gnu.tar.gz", 12 | }.freeze 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /lib/difftastic/version.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module Difftastic 4 | VERSION = "0.6.0" 5 | end 6 | -------------------------------------------------------------------------------- /rakelib/package.rake: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Rake tasks to manage native gem packages with binary executables from benbjohnson/difft 4 | # 5 | # TL;DR: run "rake package" 6 | # 7 | # The native platform gems (defined by Difftastic::Upstream::NATIVE_PLATFORMS) will each contain 8 | # two files in addition to what the vanilla ruby gem contains: 9 | # 10 | # exe/ 11 | # ├── difft # generic ruby script to find and run the binary 12 | # └── / 13 | # └── difft # the difft binary executable 14 | # 15 | # The ruby script `exe/difft` is installed into the user's path, and it simply locates the 16 | # binary and executes it. Note that this script is required because rubygems requires that 17 | # executables declared in a gemspec must be Ruby scripts. 18 | # 19 | # As a concrete example, an x86_64-linux system will see these files on disk after installing 20 | # difft-0.x.x-x86_64-linux.gem: 21 | # 22 | # exe/ 23 | # ├── difft 24 | # └── x86_64-linux/ 25 | # └── difft 26 | # 27 | # So the full set of gem files created will be: 28 | # 29 | # - pkg/difft-1.0.0.gem 30 | # - pkg/difft-1.0.0-arm64-linux.gem 31 | # - pkg/difft-1.0.0-arm64-darwin.gem 32 | # - pkg/difft-1.0.0-x86_64-darwin.gem 33 | # - pkg/difft-1.0.0-x86_64-linux.gem 34 | # 35 | # Note that in addition to the native gems, a vanilla "ruby" gem will also be created without 36 | # either the `exe/difft` script or a binary executable present. 37 | # 38 | # 39 | # New rake tasks created: 40 | # 41 | # - rake gem:ruby # Build the ruby gem 42 | # - rake gem:arm64-linux # Build the aarch64-linux gem 43 | # - rake gem:arm64-darwin # Build the arm64-darwin gem 44 | # - rake gem:x86_64-darwin # Build the x86_64-darwin gem 45 | # - rake gem:x86_64-linux # Build the x86_64-linux gem 46 | # - rake download # Download all difft binaries 47 | # 48 | # Modified rake tasks: 49 | # 50 | # - rake gem # Build all the gem files 51 | # - rake package # Build all the gem files (same as `gem`) 52 | # - rake repackage # Force a rebuild of all the gem files 53 | # 54 | # Note also that the binary executables will be lazily downloaded when needed, but you can 55 | # explicitly download them with the `rake download` command. 56 | 57 | require "rubygems/package" 58 | require "rubygems/package_task" 59 | require "open-uri" 60 | require "zlib" 61 | require "zip" 62 | require_relative "../lib/difftastic/upstream" 63 | 64 | def difftastic_download_url(filename) 65 | "https://github.com/Wilfred/difftastic/releases/download/#{Difftastic::Upstream::VERSION}/#{filename}" 66 | end 67 | 68 | DIFFTASTIC_RAILS_GEMSPEC = Bundler.load_gemspec("difftastic.gemspec") 69 | 70 | gem_path = Gem::PackageTask.new(DIFFTASTIC_RAILS_GEMSPEC).define 71 | desc "Build the ruby gem" 72 | task "gem:ruby" => [gem_path] 73 | 74 | exepaths = [] 75 | Difftastic::Upstream::NATIVE_PLATFORMS.each do |platform, filename| 76 | DIFFTASTIC_RAILS_GEMSPEC.dup.tap do |gemspec| 77 | exedir = File.join(gemspec.bindir, platform) # "exe/x86_64-linux" 78 | exepath = File.join(exedir, "difft") # "exe/x86_64-linux/difft" 79 | exepaths << exepath 80 | 81 | # modify a copy of the gemspec to include the native executable 82 | gemspec.platform = platform 83 | gemspec.files += [exepath, "LICENSE-DEPENDENCIES.md"] 84 | 85 | # create a package task 86 | gem_path = Gem::PackageTask.new(gemspec).define 87 | desc "Build the #{platform} gem" 88 | task "gem:#{platform}" => [gem_path] 89 | 90 | directory exedir 91 | 92 | file exepath => [exedir] do 93 | release_url = difftastic_download_url(filename) 94 | warn "Downloading #{exepath} from #{release_url} ..." 95 | 96 | URI.open(release_url) do |remote| 97 | if release_url.end_with?(".zip") 98 | Zip::File.open_buffer(remote) do |zip_file| 99 | zip_file.extract("difft", exepath) 100 | end 101 | elsif release_url.end_with?(".gz") 102 | Zlib::GzipReader.wrap(remote) do |gz| 103 | Gem::Package::TarReader.new(gz) do |reader| 104 | reader.seek("difft") do |file| 105 | File.binwrite(exepath, file.read) 106 | end 107 | end 108 | end 109 | end 110 | end 111 | FileUtils.chmod(0o755, exepath, verbose: true) 112 | end 113 | end 114 | end 115 | 116 | desc "Download all binaries" 117 | task "download" => exepaths 118 | -------------------------------------------------------------------------------- /test/diff_files.test.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | differ = output = Difftastic::Differ.new(color: :never, tab_width: 2) 4 | 5 | test "nil" do 6 | output = differ.diff_files(nil, nil) 7 | 8 | assert_equal output, nil 9 | end 10 | 11 | test "String" do 12 | a_path = "a_path_#{rand(10000)}.txt" 13 | b_path = "b_path_#{rand(10000)}.txt" 14 | 15 | File.write(a_path, "A") 16 | File.write(b_path, "B") 17 | 18 | output = differ.diff_files(a_path, b_path) 19 | 20 | begin 21 | assert_equal output, "1 A 1 B" 22 | ensure 23 | FileUtils.rm(a_path) 24 | FileUtils.rm(b_path) 25 | end 26 | end 27 | 28 | test "Pathname" do 29 | a_path = "a_path_#{rand(10000)}.txt" 30 | b_path = "b_path_#{rand(10000)}.txt" 31 | 32 | a = Pathname.new(a_path) 33 | b = Pathname.new(b_path) 34 | 35 | a.write("A") 36 | b.write("B") 37 | 38 | output = differ.diff_files(a, b) 39 | 40 | begin 41 | assert_equal output, "1 A 1 B" 42 | ensure 43 | FileUtils.rm(a_path) 44 | FileUtils.rm(b_path) 45 | end 46 | end 47 | 48 | test "File" do 49 | a_path = "a_path_#{rand(10000)}.txt" 50 | b_path = "b_path_#{rand(10000)}.txt" 51 | 52 | a = File.new(a_path, "w") 53 | b = File.new(b_path, "w") 54 | 55 | a.write("A") 56 | b.write("B") 57 | 58 | a.rewind 59 | b.rewind 60 | 61 | output = differ.diff_files(a, b) 62 | 63 | begin 64 | assert_equal output, "1 A 1 B" 65 | ensure 66 | a.close 67 | b.close 68 | 69 | FileUtils.rm(a_path) 70 | FileUtils.rm(b_path) 71 | end 72 | end 73 | 74 | test "Tempfile" do 75 | a = Tempfile.new("a.txt") 76 | b = Tempfile.new("b.txt") 77 | 78 | a.write("A") 79 | a.rewind 80 | 81 | b.write("B") 82 | b.rewind 83 | 84 | output = differ.diff_files(a, b) 85 | 86 | begin 87 | assert_equal output, "1 A 1 B" 88 | ensure 89 | a.unlink 90 | b.unlink 91 | end 92 | end 93 | -------------------------------------------------------------------------------- /test/difftastic.test.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | test do 4 | output = Difftastic::Differ.new(color: :always, tab_width: 2).diff_objects( 5 | [1, 2, 3], 6 | [3, 2, 1] 7 | ) 8 | 9 | assert_equal output, "\e[91;1m1 \e[0m[\e[91m1\e[0m, 2, \e[91m3\e[0m] \e[92;1m1 \e[0m[\e[92m3\e[0m, 2, \e[92m1\e[0m]" 10 | end 11 | 12 | test "empty set" do 13 | output = Difftastic::Differ.new.diff_objects( 14 | Set.new, 15 | Set.new([1, 2, 3]) 16 | ) 17 | 18 | assert_equal output, %(1 Set[] 1 Set[1, 2, 3]) 19 | end 20 | 21 | test "empty array" do 22 | output = Difftastic::Differ.new(color: :never, tab_width: 2).diff_objects( 23 | [], 24 | [3, 2, 1] 25 | ) 26 | 27 | assert_equal output, "1 [] 1 [3, 2, 1]" 28 | end 29 | 30 | test "empty string" do 31 | output = Difftastic::Differ.new(color: :never, tab_width: 2).diff_objects( 32 | "", 33 | "String", 34 | ) 35 | 36 | assert_equal output, %(1 "" 1 "String") 37 | end 38 | 39 | test "empty symbol" do 40 | output = Difftastic::Differ.new(color: :never, tab_width: 2).diff_objects( 41 | :"", 42 | :Symbol 43 | ) 44 | 45 | assert_equal output, %(1 :"" 1 :Symbol) 46 | end 47 | 48 | test "html" do 49 | a = "\n\t\n\t\t

Hello, world!

\n\t\n" 50 | b = "\n\t\n\t\t

Goodbye, world!

\n\t\n" 51 | 52 | output = Difftastic::Differ.new(color: :always, tab_width: 2).diff_html(a, b) 53 | 54 | assert_equal output, "\e[2m1 \e[0m<\e[1mhtml\e[0m> \e[2m1 \e[0m<\e[1mhtml\e[0m>\n\e[2m2 \e[0m <\e[1mbody\e[0m> \e[2m2 \e[0m <\e[1mbody\e[0m>\n\e[91;1m3 \e[0m <\e[1mh1\e[0m>\e[91;1;4mHello\e[0m\e[91m,\e[0m\e[91m \e[0m\e[91mworld\e[0m\e[91m!\e[0m \e[92;1m3 \e[0m <\e[1mh1\e[0m>\e[92;1;4mGoodbye\e[0m\e[92m,\e[0m\e[92m \e[0m\e[92mworld\e[0m\e[92m!\e[0m\n\e[2m4 \e[0m \e[2m4 \e[0m \n\e[2m5 \e[0m \e[2m5 \e[0m" 55 | end 56 | -------------------------------------------------------------------------------- /test/display.test.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | test "default" do 4 | output = Difftastic::Differ.new(color: :never).diff_objects([], [1, 2, 3]) 5 | 6 | assert_equal output, "1 [] 1 [1, 2, 3]" 7 | end 8 | 9 | test "side-by-side-show-both" do 10 | output = Difftastic::Differ.new(color: :never, display: "side-by-side-show-both").diff_objects([], [1, 2, 3]) 11 | 12 | assert_equal output, "1 [] 1 [1, 2, 3]" 13 | end 14 | 15 | test "side-by-side" do 16 | output = Difftastic::Differ.new(color: :never, display: "side-by-side").diff_objects([], [1, 2, 3]) 17 | 18 | assert_equal output, "1 [1, 2, 3]" 19 | end 20 | 21 | test "side-by-side with left side change" do 22 | output = Difftastic::Differ.new(color: :never, display: "side-by-side").diff_objects([3, 2, 1], [1, 2, 3]) 23 | 24 | assert_equal output, "1 [3, 2, 1] 1 [1, 2, 3]" 25 | end 26 | 27 | test "inline" do 28 | output = Difftastic::Differ.new(color: :never, display: "inline").diff_objects([], [1, 2, 3]) 29 | 30 | assert_equal output, "1 []\n 1 [1, 2, 3]" 31 | end 32 | -------------------------------------------------------------------------------- /test/labels.test.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | test "left and right" do 4 | output = Difftastic::Differ.new(color: :always, tab_width: 2, left_label: "Left", right_label: "Right").diff_objects( 5 | "123", 6 | "456" 7 | ) 8 | assert_equal output, "\e[91;1mLeft \e[92;1mRight\e[0m\n\e[91;1m1 \e[0m\e[91m\"123\"\e[0m \e[92;1m1 \e[0m\e[92m\"456\"\e[0m" 9 | end 10 | 11 | test "only left" do 12 | output = Difftastic::Differ.new(color: :always, tab_width: 2, left_label: "Left").diff_objects( 13 | "123", 14 | "456" 15 | ) 16 | assert_equal output, "\e[91;1mLeft \e[0m\n\e[91;1m1 \e[0m\e[91m\"123\"\e[0m \e[92;1m1 \e[0m\e[92m\"456\"\e[0m" 17 | end 18 | 19 | test "only right" do 20 | output = Difftastic::Differ.new(color: :always, tab_width: 2, right_label: "Right").diff_objects( 21 | "123", 22 | "456" 23 | ) 24 | assert_equal output, " \e[92;1mRight\e[0m\n\e[91;1m1 \e[0m\e[91m\"123\"\e[0m \e[92;1m1 \e[0m\e[92m\"456\"\e[0m" 25 | end 26 | 27 | test "long line diff with color" do 28 | output = Difftastic::Differ.new(color: :always, tab_width: 2, left_label: "Left", right_label: "Right", width: 80).diff_objects( 29 | "this is a super long diff to demonstrate that the labels get positioned incorrectly", 30 | "this is a super long diff to demonstrate that the labels get positioned correctly", 31 | ) 32 | 33 | assert_equal output, "\e[91;1mLeft \e[92;1mRight\e[0m\n\e[91;1m1 \e[0m\e[91m\"\e[0m\e[91mthis\e[0m\e[91m \e[0m\e[91mis\e[0m\e[91m \e[0m\e[91ma\e[0m\e[91m \e[0m\e[91msuper\e[0m\e[91m \e[0m\e[91mlong\e[0m\e[91m \e[0m\e[91mdiff\e[0m\e[91m \e[0m\e[91mto\e[0m\e[91m \e[0m\e[91mdemonst\e[0m \e[92;1m1 \e[0m\e[92m\"\e[0m\e[92mthis\e[0m\e[92m \e[0m\e[92mis\e[0m\e[92m \e[0m\e[92ma\e[0m\e[92m \e[0m\e[92msuper\e[0m\e[92m \e[0m\e[92mlong\e[0m\e[92m \e[0m\e[92mdiff\e[0m\e[92m \e[0m\e[92mto\e[0m\e[92m \e[0m\e[92mdemonst\e[0m\n\e[91;1m\e[2m. \e[0m\e[0m\e[91mrate\e[0m\e[91m \e[0m\e[91mthat\e[0m\e[91m \e[0m\e[91mthe\e[0m\e[91m \e[0m\e[91mlabels\e[0m\e[91m \e[0m\e[91mget\e[0m\e[91m \e[0m\e[91mpositioned\e[0m\e[91m \e[0m\e[91;1;4mi\e[0m \e[92;1m\e[2m. \e[0m\e[0m\e[92mrate\e[0m\e[92m \e[0m\e[92mthat\e[0m\e[92m \e[0m\e[92mthe\e[0m\e[92m \e[0m\e[92mlabels\e[0m\e[92m \e[0m\e[92mget\e[0m\e[92m \e[0m\e[92mpositioned\e[0m\e[92m \e[0m\e[92;1;4mc\e[0m\n\e[91;1m\e[2m. \e[0m\e[0m\e[91;1;4mncorrectly\e[0m\e[91m\"\e[0m \e[92;1m\e[2m. \e[0m\e[0m\e[92;1;4morrectly\e[0m\e[92m\"\e[0m" 34 | end 35 | 36 | test "long line diff width=80" do 37 | output = Difftastic::Differ.new(color: :never, tab_width: 2, left_label: "Left", right_label: "Right", width: 80).diff_objects( 38 | "this is a super long diff to demonstrate that the labels get positioned incorrectly", 39 | "this is a super long diff to demonstrate that the labels get positioned correctly", 40 | ) 41 | 42 | assert_equal output, "\e[91;1mLeft \e[92;1mRight\e[0m\n1 \"this is a super long diff to demonst 1 \"this is a super long diff to demonst\n. rate that the labels get positioned i . rate that the labels get positioned c\n. ncorrectly\" . orrectly\"" 43 | end 44 | 45 | test "long line diff width=120" do 46 | output = Difftastic::Differ.new(color: :never, tab_width: 2, left_label: "Left", right_label: "Right", width: 120).diff_objects( 47 | "this is a super long diff to demonstrate that the labels get positioned incorrectly", 48 | "this is a super long diff to demonstrate that the labels get positioned correctly", 49 | ) 50 | 51 | assert_equal output, "\e[91;1mLeft \e[92;1mRight\e[0m\n1 \"this is a super long diff to demonstrate that the labels 1 \"this is a super long diff to demonstrate that the labels\n. get positioned incorrectly\" . get positioned correctly\"" 52 | end 53 | 54 | test "long line diff width=150" do 55 | output = Difftastic::Differ.new(color: :never, tab_width: 2, left_label: "Left", right_label: "Right", width: 150).diff_objects( 56 | "this is a super long diff to demonstrate that the labels get positioned incorrectly", 57 | "this is a super long diff to demonstrate that the labels get positioned correctly", 58 | ) 59 | 60 | assert_equal output, "\e[91;1mLeft \e[92;1mRight\e[0m\n1 \"this is a super long diff to demonstrate that the labels get positioned 1 \"this is a super long diff to demonstrate that the labels get positioned\n. incorrectly\" . correctly\"" 61 | end 62 | 63 | test "long line diff width=180" do 64 | output = Difftastic::Differ.new(color: :never, tab_width: 2, left_label: "Left", right_label: "Right", width: 180).diff_objects( 65 | "this is a super long diff to demonstrate that the labels get positioned incorrectly", 66 | "this is a super long diff to demonstrate that the labels get positioned correctly", 67 | ) 68 | 69 | assert_equal output, "\e[91;1mLeft \e[92;1mRight\e[0m\n1 \"this is a super long diff to demonstrate that the labels get positioned incorrectly\" 1 \"this is a super long diff to demonstrate that the labels get positioned correctly\"" 70 | end 71 | 72 | test "with no tab_width" do 73 | output = Difftastic::Differ.new(color: :always, left_label: "Left", right_label: "Right").diff_objects( 74 | "Left", 75 | "Right" 76 | ) 77 | 78 | assert_equal output, "\e[91;1mLeft \e[92;1mRight\e[0m\n\e[91;1m1 \e[0m\e[91m\"Left\"\e[0m \e[92;1m1 \e[0m\e[92m\"Right\"\e[0m" 79 | end 80 | -------------------------------------------------------------------------------- /test/width.test.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | test "width=20" do 4 | output = Difftastic::Differ.new(color: :never, width: 20).diff_strings("123 456", "123 456 789") 5 | 6 | assert_equal output, "1 123 456 1 123 456\n. . 789" 7 | end 8 | 9 | test "width=27" do 10 | output = Difftastic::Differ.new(color: :never, width: 27).diff_strings("123 456", "123 456 789") 11 | 12 | assert_equal output, "1 123 456 1 123 456 789" 13 | end 14 | 15 | test "no width" do 16 | output = Difftastic::Differ.new(color: :never).diff_strings("123 456", "123 456 789") 17 | 18 | assert_equal output, "1 123 456 1 123 456 789" 19 | end 20 | --------------------------------------------------------------------------------