unparser 0.4.5 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -3
  3. data/bin/unparser +1 -1
  4. data/lib/unparser.rb +117 -62
  5. data/lib/unparser/ast.rb +1 -2
  6. data/lib/unparser/ast/local_variable_scope.rb +9 -79
  7. data/lib/unparser/buffer.rb +19 -16
  8. data/lib/unparser/cli.rb +84 -77
  9. data/lib/unparser/{cli/color.rb → color.rb} +0 -13
  10. data/lib/unparser/comments.rb +0 -26
  11. data/lib/unparser/constants.rb +4 -53
  12. data/lib/unparser/diff.rb +98 -0
  13. data/lib/unparser/dsl.rb +0 -32
  14. data/lib/unparser/emitter.rb +25 -428
  15. data/lib/unparser/emitter/alias.rb +2 -8
  16. data/lib/unparser/emitter/args.rb +45 -0
  17. data/lib/unparser/emitter/argument.rb +17 -179
  18. data/lib/unparser/emitter/array.rb +27 -0
  19. data/lib/unparser/emitter/array_pattern.rb +29 -0
  20. data/lib/unparser/emitter/assignment.rb +36 -127
  21. data/lib/unparser/emitter/begin.rb +9 -84
  22. data/lib/unparser/emitter/binary.rb +7 -20
  23. data/lib/unparser/emitter/block.rb +57 -41
  24. data/lib/unparser/emitter/case.rb +6 -48
  25. data/lib/unparser/emitter/case_guard.rb +27 -0
  26. data/lib/unparser/emitter/case_match.rb +40 -0
  27. data/lib/unparser/emitter/cbase.rb +1 -3
  28. data/lib/unparser/emitter/class.rb +6 -26
  29. data/lib/unparser/emitter/const_pattern.rb +24 -0
  30. data/lib/unparser/emitter/def.rb +7 -51
  31. data/lib/unparser/emitter/defined.rb +2 -12
  32. data/lib/unparser/emitter/dstr.rb +22 -0
  33. data/lib/unparser/emitter/dsym.rb +41 -0
  34. data/lib/unparser/emitter/flipflop.rb +11 -10
  35. data/lib/unparser/emitter/float.rb +29 -0
  36. data/lib/unparser/emitter/flow_modifier.rb +8 -55
  37. data/lib/unparser/emitter/for.rb +5 -19
  38. data/lib/unparser/emitter/hash.rb +74 -0
  39. data/lib/unparser/emitter/hash_pattern.rb +67 -0
  40. data/lib/unparser/emitter/hookexe.rb +5 -11
  41. data/lib/unparser/emitter/if.rb +9 -73
  42. data/lib/unparser/emitter/in_match.rb +21 -0
  43. data/lib/unparser/emitter/in_pattern.rb +34 -0
  44. data/lib/unparser/emitter/index.rb +21 -88
  45. data/lib/unparser/emitter/kwbegin.rb +31 -0
  46. data/lib/unparser/emitter/lambda.rb +0 -8
  47. data/lib/unparser/emitter/masgn.rb +20 -0
  48. data/lib/unparser/emitter/match.rb +3 -17
  49. data/lib/unparser/emitter/match_alt.rb +23 -0
  50. data/lib/unparser/emitter/match_as.rb +21 -0
  51. data/lib/unparser/emitter/match_rest.rb +26 -0
  52. data/lib/unparser/emitter/match_var.rb +19 -0
  53. data/lib/unparser/emitter/mlhs.rb +40 -0
  54. data/lib/unparser/emitter/module.rb +3 -9
  55. data/lib/unparser/emitter/op_assign.rb +12 -27
  56. data/lib/unparser/emitter/pin.rb +19 -0
  57. data/lib/unparser/emitter/primitive.rb +93 -0
  58. data/lib/unparser/emitter/range.rb +35 -0
  59. data/lib/unparser/emitter/regexp.rb +35 -0
  60. data/lib/unparser/emitter/repetition.rb +17 -57
  61. data/lib/unparser/emitter/rescue.rb +1 -97
  62. data/lib/unparser/emitter/root.rb +17 -1
  63. data/lib/unparser/emitter/send.rb +10 -219
  64. data/lib/unparser/emitter/simple.rb +33 -0
  65. data/lib/unparser/emitter/splat.rb +2 -18
  66. data/lib/unparser/emitter/super.rb +1 -29
  67. data/lib/unparser/emitter/undef.rb +1 -9
  68. data/lib/unparser/emitter/variable.rb +1 -31
  69. data/lib/unparser/emitter/xstr.rb +72 -0
  70. data/lib/unparser/emitter/yield.rb +1 -9
  71. data/lib/unparser/generation.rb +250 -0
  72. data/lib/unparser/node_details.rb +21 -0
  73. data/lib/unparser/node_details/send.rb +62 -0
  74. data/lib/unparser/node_helpers.rb +49 -8
  75. data/lib/unparser/validation.rb +151 -0
  76. data/lib/unparser/writer.rb +15 -0
  77. data/lib/unparser/writer/binary.rb +99 -0
  78. data/lib/unparser/writer/dynamic_string.rb +229 -0
  79. data/lib/unparser/writer/resbody.rb +40 -0
  80. data/lib/unparser/writer/rescue.rb +39 -0
  81. data/lib/unparser/writer/send.rb +124 -0
  82. data/lib/unparser/{emitter → writer}/send/attribute_assignment.rb +11 -26
  83. data/lib/unparser/writer/send/binary.rb +27 -0
  84. data/lib/unparser/writer/send/conditional.rb +25 -0
  85. data/lib/unparser/writer/send/regular.rb +33 -0
  86. data/lib/unparser/{emitter → writer}/send/unary.rb +10 -17
  87. metadata +152 -101
  88. data/.circleci/config.yml +0 -41
  89. data/.gitignore +0 -37
  90. data/.rspec +0 -4
  91. data/.rubocop.yml +0 -9
  92. data/Changelog.md +0 -146
  93. data/Gemfile +0 -11
  94. data/Gemfile.lock +0 -180
  95. data/LICENSE +0 -20
  96. data/Rakefile +0 -22
  97. data/config/devtools.yml +0 -2
  98. data/config/flay.yml +0 -3
  99. data/config/flog.yml +0 -2
  100. data/config/mutant.yml +0 -6
  101. data/config/reek.yml +0 -98
  102. data/config/rubocop.yml +0 -122
  103. data/config/yardstick.yml +0 -2
  104. data/lib/unparser/cli/differ.rb +0 -152
  105. data/lib/unparser/cli/source.rb +0 -267
  106. data/lib/unparser/emitter/empty.rb +0 -23
  107. data/lib/unparser/emitter/ensure.rb +0 -37
  108. data/lib/unparser/emitter/literal.rb +0 -10
  109. data/lib/unparser/emitter/literal/array.rb +0 -29
  110. data/lib/unparser/emitter/literal/dynamic.rb +0 -53
  111. data/lib/unparser/emitter/literal/dynamic_body.rb +0 -132
  112. data/lib/unparser/emitter/literal/execute_string.rb +0 -38
  113. data/lib/unparser/emitter/literal/hash.rb +0 -156
  114. data/lib/unparser/emitter/literal/primitive.rb +0 -145
  115. data/lib/unparser/emitter/literal/range.rb +0 -36
  116. data/lib/unparser/emitter/literal/regexp.rb +0 -114
  117. data/lib/unparser/emitter/literal/singleton.rb +0 -26
  118. data/lib/unparser/emitter/meta.rb +0 -16
  119. data/lib/unparser/emitter/redo.rb +0 -25
  120. data/lib/unparser/emitter/resbody.rb +0 -76
  121. data/lib/unparser/emitter/retry.rb +0 -25
  122. data/lib/unparser/emitter/send/binary.rb +0 -57
  123. data/lib/unparser/emitter/send/conditional.rb +0 -40
  124. data/lib/unparser/emitter/send/regular.rb +0 -40
  125. data/lib/unparser/preprocessor.rb +0 -159
  126. data/spec/integration/unparser/corpus_spec.rb +0 -111
  127. data/spec/integrations.yml +0 -87
  128. data/spec/spec_helper.rb +0 -20
  129. data/spec/unit/unparser/buffer/append_spec.rb +0 -24
  130. data/spec/unit/unparser/buffer/append_without_prefix_spec.rb +0 -23
  131. data/spec/unit/unparser/buffer/capture_content_spec.rb +0 -17
  132. data/spec/unit/unparser/buffer/content_spec.rb +0 -38
  133. data/spec/unit/unparser/buffer/fresh_line_spec.rb +0 -20
  134. data/spec/unit/unparser/buffer/indent_spec.rb +0 -20
  135. data/spec/unit/unparser/buffer/nl_spec.rb +0 -16
  136. data/spec/unit/unparser/buffer/unindent_spec.rb +0 -20
  137. data/spec/unit/unparser/comments/consume_spec.rb +0 -22
  138. data/spec/unit/unparser/comments/take_all_spec.rb +0 -19
  139. data/spec/unit/unparser/comments/take_before_spec.rb +0 -46
  140. data/spec/unit/unparser/comments/take_eol_comments_spec.rb +0 -32
  141. data/spec/unit/unparser/emitter/class_methods/handle_spec.rb +0 -17
  142. data/spec/unit/unparser_spec.rb +0 -1841
  143. data/unparser.gemspec +0 -30
@@ -1,41 +0,0 @@
1
- defaults: &defaults
2
- working_directory: ~/unparser
3
- docker:
4
- - image: circleci/ruby:2.5.5
5
- version: 2
6
- jobs:
7
- unit_specs:
8
- <<: *defaults
9
- steps:
10
- - checkout
11
- - run: bundle install
12
- - run: bundle exec rspec spec/unit
13
- integration_specs:
14
- <<: *defaults
15
- steps:
16
- - checkout
17
- - run: bundle install
18
- - run: bundle exec rspec spec/integration
19
- metrics:
20
- <<: *defaults
21
- steps:
22
- - checkout
23
- - run: bundle install
24
- - run: bundle exec rake metrics:rubocop
25
- - run: bundle exec rake metrics:reek
26
- - run: bundle exec rake metrics:flay
27
- - run: bundle exec rake metrics:flog
28
- mutant:
29
- <<: *defaults
30
- steps:
31
- - checkout
32
- - run: bundle install
33
- - run: bundle exec mutant --since origin/master --zombie -- 'Unparser*'
34
- workflows:
35
- version: 2
36
- test:
37
- jobs:
38
- - unit_specs
39
- - integration_specs
40
- - metrics
41
- - mutant
data/.gitignore DELETED
@@ -1,37 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.sw[op]
15
-
16
- ## Rubinius
17
- *.rbc
18
- .rbx
19
-
20
- ## PROJECT::GENERAL
21
- *.gem
22
- coverage
23
- profiling
24
- turbulence
25
- rdoc
26
- pkg
27
- tmp
28
- doc
29
- log
30
- .yardoc
31
- measurements
32
-
33
- ## BUNDLER
34
- .bundle
35
-
36
- ## PROJECT::SPECIFIC
37
- /vendor
data/.rspec DELETED
@@ -1,4 +0,0 @@
1
- --color
2
- --format progress
3
- --warnings
4
- --order random
@@ -1,9 +0,0 @@
1
- AllCops:
2
- Include:
3
- - 'Gemfile'
4
- Exclude:
5
- - 'Gemfile.devtools'
6
- - 'vendor/**/*'
7
- - 'benchmarks/**/*'
8
- - 'tmp/**/*'
9
- TargetRubyVersion: 2.5
@@ -1,146 +0,0 @@
1
- # v0.4.5 2019-05-10
2
-
3
- * Bump parser dependency to ~> 2.6.3
4
-
5
- # v0.4.4 2019-03-27
6
-
7
- * Bump parser dependency to ~> 2.6.2
8
-
9
- # v0.4.3 2019-02-24
10
-
11
- * Bump parser dependency to ~> 2.6.0
12
-
13
- # v0.4.2 2018-12-04
14
-
15
- * Drop hard ruby version requirement. Still officially I'll only support 2.5.
16
-
17
- # v0.4.1 2018-12-03
18
-
19
- * Fix unparsing of `def foo(bar: bar())`
20
-
21
- # v0.4.0 2018-12-03
22
-
23
- * Change to modern AST format.
24
- * Add experimental `Unparser.{parser,parse,parse_with_comments}`
25
-
26
- # v0.3.0 2018-11-16
27
-
28
- * Drop support for Ruby < 2.5
29
-
30
- # v0.2.7 2018-07-18
31
-
32
- * Add emitters for `__FILE__` and `__LINE__`
33
- https://github.com/mbj/unparser/pull/70
34
-
35
- # v0.2.7 2018-02-09
36
-
37
- * Allow ruby_parser 2.5
38
-
39
- # v0.2.6 2017-05-30
40
-
41
- * Reduce memory consumption via not requirering all possible parsers
42
- * Allow ruby 2.4
43
- * Update parser dependency
44
-
45
- # v0.2.5 2016-01-24
46
-
47
- * Add support for ruby 2.3
48
- * Bump parser dependency to ~>2.3.0
49
- * Trade uglier for more correct dstring / dsyms
50
- * Drop support for ruby < 2.1
51
-
52
- # v0.2.4 2015-05-30
53
-
54
- * Relax parser dependency to ~>2.2.2
55
-
56
- # v0.2.3 2015-04-28
57
-
58
- * Compatibility with parser ~>2.2.2, >2.2.2.2
59
-
60
- # v0.2.2 2015-01-14
61
-
62
- * Really add back unofficial support for 1.9.3
63
-
64
- # v0.2.1 2015-01-14
65
-
66
- * Add back unofficial support for 1.9.3
67
-
68
- # v0.2.0 2015-01-12
69
-
70
- * Bump required ruby version to 2.0.0
71
-
72
- # v0.1.17 2015-01-10
73
-
74
- * Fix jruby complex / rational generation edge case
75
- * Support generation under MRI 2.2
76
-
77
- # v0.1.16 2014-11-07
78
-
79
- * Add emitter for complex and rational literals
80
- * Fix edge cases for MLHS
81
- * Fix differencies from 2.2.pre7 series of parser
82
-
83
- # v0.1.15 2014-09-24
84
-
85
- * Handle syntax edge case for MRI 2.1.3 parser.
86
-
87
- # v0.1.14 2014-06-15
88
-
89
- * Fix emitter to correctly unparse foo[] = 1
90
-
91
- # v0.1.13 2014-06-08
92
-
93
- * Add support for rubinius.
94
-
95
- # v0.1.12 2014-04-13
96
-
97
- * Add support for 2.1 kwsplat
98
-
99
- # v0.1.11 2014-04-11
100
-
101
- * Fix performance on local variable scope inspection
102
-
103
- # v0.1.10 2014-04-06
104
-
105
- * Fix emit of inline rescues in combination with control flow keywords.
106
- * Begin corpus testing on rake ci against rubyspec
107
-
108
- # v0.1.9 2014-01-14
109
-
110
- * Fix emit of proc { |(a)| }
111
-
112
- # v0.1.8 2014-01-11
113
-
114
- * Fix all bugs found while round tripping rubyspec.
115
-
116
- # v0.1.7 2014-01-03
117
-
118
- * Add back support for root nodes of type resbody https://github.com/mbj/unparser/issues/24
119
-
120
- # v0.1.6 2013-12-31
121
-
122
- * Emit 1.9 style hashes where possible: https://github.com/mbj/unparser/pull/23
123
- * Fix invalid quoting of hash keys: https://github.com/mbj/unparser/issues/22
124
- * Fix crash on take before introduced by code refactorings: https://github.com/mbj/unparser/issues/20
125
- * Fix crash on comment reproduction https://github.com/mbj/unparser/issues/17
126
-
127
- # v0.1.5 2013-11-01
128
-
129
- * Fix crash with comment reproduction.
130
-
131
- # v0.1.4 2013-11-01
132
-
133
- * Code cleanups.
134
- * Remove warnings.
135
-
136
- # v0.0.3 2013-06-17
137
-
138
- * Adjust to changes in parser 2.0.0.beta5 => beta6
139
-
140
- # v0.0.2 2013-06-17
141
-
142
- Crappy release
143
-
144
- # v0.0.1 2013-06-15
145
-
146
- Initial release
data/Gemfile DELETED
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- gemspec
6
-
7
- gem 'mutant', git: 'https://github.com/mbj/mutant.git'
8
-
9
- source 'https://oss:Px2ENN7S91OmWaD5G7MIQJi1dmtmYrEh@gem.mutant.dev' do
10
- gem 'mutant-license'
11
- end
@@ -1,180 +0,0 @@
1
- GIT
2
- remote: https://github.com/mbj/mutant.git
3
- revision: e07953eeb3a011d9c3496d6594fed263375fec59
4
- specs:
5
- mutant (0.8.25)
6
- abstract_type (~> 0.0.7)
7
- adamantium (~> 0.2.0)
8
- anima (~> 0.3.1)
9
- ast (~> 2.2)
10
- concord (~> 0.1.5)
11
- diff-lcs (~> 1.3)
12
- equalizer (~> 0.0.9)
13
- ice_nine (~> 0.11.1)
14
- memoizable (~> 0.4.2)
15
- mutant-license (~> 0.0.1)
16
- parser (~> 2.6.0)
17
- procto (~> 0.0.2)
18
- unparser (~> 0.4.3)
19
- mutant-rspec (0.8.25)
20
- mutant (~> 0.8.25)
21
- rspec-core (>= 3.8.0, < 4.0.0)
22
-
23
- PATH
24
- remote: .
25
- specs:
26
- unparser (0.4.4)
27
- abstract_type (~> 0.0.7)
28
- adamantium (~> 0.2.0)
29
- concord (~> 0.1.5)
30
- diff-lcs (~> 1.3)
31
- equalizer (~> 0.0.9)
32
- parser (~> 2.6.3)
33
- procto (~> 0.0.2)
34
-
35
- GEM
36
- remote: https://rubygems.org/
37
- remote: https://oss:Px2ENN7S91OmWaD5G7MIQJi1dmtmYrEh@gem.mutant.dev/
38
- specs:
39
- abstract_type (0.0.7)
40
- adamantium (0.2.0)
41
- ice_nine (~> 0.11.0)
42
- memoizable (~> 0.4.0)
43
- anima (0.3.1)
44
- abstract_type (~> 0.0.7)
45
- adamantium (~> 0.2)
46
- equalizer (~> 0.0.11)
47
- ast (2.4.0)
48
- axiom-types (0.1.1)
49
- descendants_tracker (~> 0.0.4)
50
- ice_nine (~> 0.11.0)
51
- thread_safe (~> 0.3, >= 0.3.1)
52
- codeclimate-engine-rb (0.4.1)
53
- virtus (~> 1.0)
54
- coercible (1.0.0)
55
- descendants_tracker (~> 0.0.1)
56
- concord (0.1.5)
57
- adamantium (~> 0.2.0)
58
- equalizer (~> 0.0.9)
59
- descendants_tracker (0.0.4)
60
- thread_safe (~> 0.3, >= 0.3.1)
61
- devtools (0.1.23)
62
- abstract_type (~> 0.0.7)
63
- adamantium (~> 0.2.0)
64
- anima (~> 0.3.0)
65
- concord (~> 0.1.5)
66
- flay (~> 2.12.0)
67
- flog (~> 4.6.2)
68
- mutant (~> 0.8.24)
69
- mutant-rspec (~> 0.8.24)
70
- procto (~> 0.0.3)
71
- rake (~> 12.3.0)
72
- reek (~> 5.3.0)
73
- rspec (~> 3.8.0)
74
- rspec-core (~> 3.8.0)
75
- rspec-its (~> 1.2.0)
76
- rubocop (~> 0.61.1)
77
- simplecov (~> 0.16.1)
78
- yard (~> 0.9.16)
79
- yardstick (~> 0.9.9)
80
- diff-lcs (1.3)
81
- docile (1.3.1)
82
- equalizer (0.0.11)
83
- erubis (2.7.0)
84
- flay (2.12.0)
85
- erubis (~> 2.7.0)
86
- path_expander (~> 1.0)
87
- ruby_parser (~> 3.0)
88
- sexp_processor (~> 4.0)
89
- flog (4.6.2)
90
- path_expander (~> 1.0)
91
- ruby_parser (~> 3.1, > 3.1.0)
92
- sexp_processor (~> 4.8)
93
- ice_nine (0.11.2)
94
- jaro_winkler (1.5.2)
95
- json (2.2.0)
96
- kwalify (0.7.2)
97
- memoizable (0.4.2)
98
- thread_safe (~> 0.3, >= 0.3.1)
99
- morpher (0.2.6)
100
- abstract_type (~> 0.0.7)
101
- adamantium (~> 0.2.0)
102
- anima (~> 0.3.0)
103
- ast (~> 2.2)
104
- concord (~> 0.1.5)
105
- equalizer (~> 0.0.9)
106
- ice_nine (~> 0.11.0)
107
- procto (~> 0.0.2)
108
- mutant-license (0.0.1)
109
- parallel (1.17.0)
110
- parser (2.6.3.0)
111
- ast (~> 2.4.0)
112
- path_expander (1.0.3)
113
- powerpack (0.1.2)
114
- procto (0.0.3)
115
- psych (3.1.0)
116
- rainbow (3.0.0)
117
- rake (12.3.2)
118
- reek (5.3.2)
119
- codeclimate-engine-rb (~> 0.4.0)
120
- kwalify (~> 0.7.0)
121
- parser (>= 2.5.0.0, < 2.7, != 2.5.1.1)
122
- psych (~> 3.1.0)
123
- rainbow (>= 2.0, < 4.0)
124
- rspec (3.8.0)
125
- rspec-core (~> 3.8.0)
126
- rspec-expectations (~> 3.8.0)
127
- rspec-mocks (~> 3.8.0)
128
- rspec-core (3.8.0)
129
- rspec-support (~> 3.8.0)
130
- rspec-expectations (3.8.3)
131
- diff-lcs (>= 1.2.0, < 2.0)
132
- rspec-support (~> 3.8.0)
133
- rspec-its (1.2.0)
134
- rspec-core (>= 3.0.0)
135
- rspec-expectations (>= 3.0.0)
136
- rspec-mocks (3.8.0)
137
- diff-lcs (>= 1.2.0, < 2.0)
138
- rspec-support (~> 3.8.0)
139
- rspec-support (3.8.0)
140
- rubocop (0.61.1)
141
- jaro_winkler (~> 1.5.1)
142
- parallel (~> 1.10)
143
- parser (>= 2.5, != 2.5.1.1)
144
- powerpack (~> 0.1)
145
- rainbow (>= 2.2.2, < 4.0)
146
- ruby-progressbar (~> 1.7)
147
- unicode-display_width (~> 1.4.0)
148
- ruby-progressbar (1.10.0)
149
- ruby_parser (3.13.1)
150
- sexp_processor (~> 4.9)
151
- sexp_processor (4.12.0)
152
- simplecov (0.16.1)
153
- docile (~> 1.1)
154
- json (>= 1.8, < 3)
155
- simplecov-html (~> 0.10.0)
156
- simplecov-html (0.10.2)
157
- thread_safe (0.3.6)
158
- unicode-display_width (1.4.1)
159
- virtus (1.0.5)
160
- axiom-types (~> 0.1)
161
- coercible (~> 1.0)
162
- descendants_tracker (~> 0.0, >= 0.0.3)
163
- equalizer (~> 0.0, >= 0.0.9)
164
- yard (0.9.19)
165
- yardstick (0.9.9)
166
- yard (~> 0.8, >= 0.8.7.2)
167
-
168
- PLATFORMS
169
- ruby
170
-
171
- DEPENDENCIES
172
- anima (~> 0.3.1)
173
- devtools (~> 0.1.23)
174
- morpher (~> 0.2.6)
175
- mutant!
176
- mutant-license!
177
- unparser!
178
-
179
- BUNDLED WITH
180
- 1.17.3
data/LICENSE DELETED
@@ -1,20 +0,0 @@
1
- Copyright (c) 2013 Markus Schirp
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.