squid 0.0.0 → 1.0.0.beta1
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.
- checksums.yaml +4 -4
- data/.gitignore +11 -17
- data/.rspec +3 -0
- data/.travis.yml +7 -0
- data/CHANGELOG.md +11 -0
- data/MIT-LICENSE +21 -0
- data/README.md +146 -2
- data/Rakefile +26 -1
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/examples/manual.rb +7 -0
- data/examples/readme/01-basic.rb +5 -0
- data/examples/readme/02-type-point.rb +5 -0
- data/examples/readme/03-type-line.rb +5 -0
- data/examples/readme/04-color.rb +5 -0
- data/examples/readme/05-gridlines.rb +5 -0
- data/examples/readme/06-ticks.rb +5 -0
- data/examples/readme/07-baseline.rb +5 -0
- data/examples/readme/08-every.rb +5 -0
- data/examples/readme/09-legend.rb +5 -0
- data/examples/readme/10-legend-offset.rb +5 -0
- data/examples/readme/11-format.rb +5 -0
- data/examples/readme/12-labels.rb +5 -0
- data/examples/readme/13-border.rb +5 -0
- data/examples/readme/14-height.rb +5 -0
- data/examples/readme/15-multiple-columns.rb +5 -0
- data/examples/readme/16-multiple-stacks.rb +5 -0
- data/examples/readme/17-two-axis.rb +7 -0
- data/examples/readme/readme.rb +28 -0
- data/examples/readme.rb +7 -0
- data/examples/screenshots/readme_00.png +0 -0
- data/examples/screenshots/readme_01.png +0 -0
- data/examples/screenshots/readme_02.png +0 -0
- data/examples/screenshots/readme_03.png +0 -0
- data/examples/screenshots/readme_04.png +0 -0
- data/examples/screenshots/readme_05.png +0 -0
- data/examples/screenshots/readme_06.png +0 -0
- data/examples/screenshots/readme_07.png +0 -0
- data/examples/screenshots/readme_08.png +0 -0
- data/examples/screenshots/readme_09.png +0 -0
- data/examples/screenshots/readme_10.png +0 -0
- data/examples/screenshots/readme_11.png +0 -0
- data/examples/screenshots/readme_12.png +0 -0
- data/examples/screenshots/readme_13.png +0 -0
- data/examples/screenshots/readme_14.png +0 -0
- data/examples/screenshots/readme_15.png +0 -0
- data/examples/screenshots/readme_16.png +0 -0
- data/examples/screenshots/readme_17.png +0 -0
- data/examples/squid/baseline.rb +9 -0
- data/examples/squid/basic.rb +9 -0
- data/examples/squid/border.rb +9 -0
- data/examples/squid/columns.rb +9 -0
- data/examples/squid/every.rb +11 -0
- data/examples/squid/format.rb +9 -0
- data/examples/squid/gridlines.rb +9 -0
- data/examples/squid/height.rb +9 -0
- data/examples/squid/labels.rb +9 -0
- data/examples/squid/legend.rb +9 -0
- data/examples/squid/legend_offset.rb +9 -0
- data/examples/squid/line.rb +9 -0
- data/examples/squid/line_width.rb +9 -0
- data/examples/squid/lines.rb +11 -0
- data/examples/squid/point.rb +9 -0
- data/examples/squid/points.rb +9 -0
- data/examples/squid/squid.rb +48 -0
- data/examples/squid/stacks.rb +10 -0
- data/examples/squid/ticks.rb +9 -0
- data/examples/squid/two_axis.rb +10 -0
- data/lib/squid/axis.rb +61 -0
- data/lib/squid/axis_label.rb +15 -0
- data/lib/squid/config.rb +46 -0
- data/lib/squid/configuration.rb +80 -0
- data/lib/squid/format.rb +22 -0
- data/lib/squid/graph.rb +113 -0
- data/lib/squid/gridline.rb +16 -0
- data/lib/squid/plotter.rb +187 -0
- data/lib/squid/point.rb +40 -0
- data/lib/squid/settings.rb +15 -0
- data/lib/squid/version.rb +1 -1
- data/lib/squid.rb +35 -3
- data/squid.gemspec +22 -14
- metadata +176 -23
- data/HISTORY.md +0 -1
- data/LICENSE.txt +0 -22
- data/bin/squid +0 -8
data/lib/squid/point.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'squid/format'
|
2
|
+
|
3
|
+
module Squid
|
4
|
+
class Point
|
5
|
+
extend Format
|
6
|
+
|
7
|
+
def self.for(series, minmax:, height:, labels:, stack:, format:)
|
8
|
+
@min = Hash.new 0
|
9
|
+
@max = Hash.new 0
|
10
|
+
min, max = minmax
|
11
|
+
offset = -> (value) { value * height.to_f / (max-min) }
|
12
|
+
series.map do |values|
|
13
|
+
values.map.with_index do |value, i|
|
14
|
+
h = y_for value, index: i, stack: false, &offset if value
|
15
|
+
y = y_for value, index: i, stack: stack, &offset if value
|
16
|
+
y = y - offset.call([min, 0].min) if value
|
17
|
+
label = format_for(value, format) if labels
|
18
|
+
new y: y, height: h, index: i, label: label, negative: value.to_f < 0
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
attr_reader :y, :height, :index, :label, :negative
|
24
|
+
|
25
|
+
def initialize(y:, height:, index:, label:, negative:)
|
26
|
+
@y, @height, @index, @label, @negative = y, height, index, label, negative
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def self.y_for(value, index:, stack:, &block)
|
32
|
+
if stack
|
33
|
+
hash = (value > 0) ? @max : @min
|
34
|
+
yield(hash[index] += value)
|
35
|
+
else
|
36
|
+
yield(value)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/squid/version.rb
CHANGED
data/lib/squid.rb
CHANGED
@@ -1,5 +1,37 @@
|
|
1
|
-
|
1
|
+
require 'prawn'
|
2
|
+
require 'squid/graph'
|
3
|
+
|
2
4
|
module Squid
|
3
|
-
|
5
|
+
# Provides the `chart` method to use in Prawn::Document
|
6
|
+
# @see http://prawnpdf.org/api-docs/2.0/Prawn/Document.html
|
7
|
+
module Interface
|
8
|
+
# Plots a graph the current document.
|
9
|
+
#
|
10
|
+
# @param [Hash<#to_s, [Hash<#to_s, Numeric>]>] data the series to plot in
|
11
|
+
# the graph. Each key is the name of the series, and each value contains
|
12
|
+
# the values for the series. Values are also a hash, where each key is
|
13
|
+
# a category, and each value the numerical value for that category.
|
14
|
+
# @param [Hash] settings the option to customize the graph.
|
15
|
+
# @option settings [Boolean] :baseline (true) whether to plot the baseline.
|
16
|
+
# @option settings [Boolean] :border (false) whether to plot the border.
|
17
|
+
# @option settings [Boolean] :chart (true) whether to plot the chart.
|
18
|
+
# @option settings [Array<String>] :colors (true) the color of each series.
|
19
|
+
# @option settings [Integer] :every (1) how often to plot the categories.
|
20
|
+
# @option settings [Symbol] :format (:integer) the format of axis values.
|
21
|
+
# @option settings [Numeric] :height (250) the full height of the graph.
|
22
|
+
# @option settings [Boolean] :labels (false) whether to plot value labels.
|
23
|
+
# @option settings [<Boolean, Hash>] :legend (true) whether to plot the
|
24
|
+
# legend. If a Hash is provided, the `:offset` option can be set to
|
25
|
+
# specify the offset between the legend and the right margin.
|
26
|
+
# @option settings [Numeric] :line_width (3) the line width for line graphs.
|
27
|
+
# @option settings [Numeric] :steps (4) the number of gridlines.
|
28
|
+
# @option settings [Boolean] :ticks (true) whether to plot the ticks.
|
29
|
+
# @option settings [Symbol] :type (:column) the type of graph.
|
30
|
+
def chart(data = {}, settings = {})
|
31
|
+
Graph.new(self, data, settings).draw
|
32
|
+
end
|
4
33
|
end
|
5
|
-
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# Extends Prawn::Document to include the `chart` methods
|
37
|
+
Prawn::Document.extensions << Squid::Interface
|
data/squid.gemspec
CHANGED
@@ -1,23 +1,31 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
lib = File.expand_path('../lib', __FILE__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require 'squid/version'
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
6
|
+
spec.name = 'squid'
|
8
7
|
spec.version = Squid::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.description = %q{Prawn evolved}
|
12
|
-
spec.summary = %q{Prawn evolved}
|
13
|
-
spec.homepage = ""
|
14
|
-
spec.license = "MIT"
|
8
|
+
spec.authors = ['claudiob']
|
9
|
+
spec.email = ['claudiob@gmail.com']
|
15
10
|
|
16
|
-
spec.
|
17
|
-
spec.
|
18
|
-
spec.
|
19
|
-
spec.
|
11
|
+
spec.summary = %q{Generates graphs in PDF files.}
|
12
|
+
spec.description = %q{Squid expands Prawn providing method to easily draw graphs in PDF files.}
|
13
|
+
spec.homepage = 'https://github.com/fullscreen/squid'
|
14
|
+
spec.license = 'MIT'
|
20
15
|
|
21
|
-
spec.
|
22
|
-
|
16
|
+
spec.required_ruby_version = '>= 2.1.0' # 2.0 does not have Numeric#step(by:, to:)
|
17
|
+
|
18
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
19
|
+
spec.bindir = 'exe'
|
20
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
|
+
spec.require_paths = ['lib']
|
22
|
+
|
23
|
+
spec.add_dependency 'prawn', '~> 2.0'
|
24
|
+
spec.add_dependency 'activesupport', '~> 4.0' # 3.2 does not have ActiveSupport::NumberHelper#number_to_rounded
|
25
|
+
spec.add_development_dependency 'pdf-inspector', '~> 1.2'
|
26
|
+
spec.add_development_dependency 'prawn-manual_builder', '~> 0.2.0'
|
27
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
28
|
+
spec.add_development_dependency 'rspec', '~> 3.3'
|
29
|
+
spec.add_development_dependency 'coveralls', '~> 0.8.2'
|
30
|
+
spec.add_development_dependency 'pry-nav', '~> 0.2.4'
|
23
31
|
end
|
metadata
CHANGED
@@ -1,62 +1,216 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: squid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 1.0.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- claudiob
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: prawn
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '4.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pdf-inspector
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.2'
|
20
48
|
type: :development
|
21
49
|
prerelease: false
|
22
50
|
version_requirements: !ruby/object:Gem::Requirement
|
23
51
|
requirements:
|
24
52
|
- - "~>"
|
25
53
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
54
|
+
version: '1.2'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: prawn-manual_builder
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.2.0
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.2.0
|
27
69
|
- !ruby/object:Gem::Dependency
|
28
70
|
name: rake
|
29
71
|
requirement: !ruby/object:Gem::Requirement
|
30
72
|
requirements:
|
31
|
-
- - "
|
73
|
+
- - "~>"
|
32
74
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
75
|
+
version: '10.0'
|
34
76
|
type: :development
|
35
77
|
prerelease: false
|
36
78
|
version_requirements: !ruby/object:Gem::Requirement
|
37
79
|
requirements:
|
38
|
-
- - "
|
80
|
+
- - "~>"
|
39
81
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
|
82
|
+
version: '10.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.3'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.3'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: coveralls
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.8.2
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.8.2
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: pry-nav
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.2.4
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.2.4
|
125
|
+
description: Squid expands Prawn providing method to easily draw graphs in PDF files.
|
42
126
|
email:
|
43
127
|
- claudiob@gmail.com
|
44
|
-
executables:
|
45
|
-
- squid
|
128
|
+
executables: []
|
46
129
|
extensions: []
|
47
130
|
extra_rdoc_files: []
|
48
131
|
files:
|
49
132
|
- ".gitignore"
|
133
|
+
- ".rspec"
|
134
|
+
- ".travis.yml"
|
135
|
+
- CHANGELOG.md
|
50
136
|
- Gemfile
|
51
|
-
-
|
52
|
-
- LICENSE.txt
|
137
|
+
- MIT-LICENSE
|
53
138
|
- README.md
|
54
139
|
- Rakefile
|
55
|
-
- bin/
|
140
|
+
- bin/console
|
141
|
+
- bin/setup
|
142
|
+
- examples/manual.rb
|
143
|
+
- examples/readme.rb
|
144
|
+
- examples/readme/01-basic.rb
|
145
|
+
- examples/readme/02-type-point.rb
|
146
|
+
- examples/readme/03-type-line.rb
|
147
|
+
- examples/readme/04-color.rb
|
148
|
+
- examples/readme/05-gridlines.rb
|
149
|
+
- examples/readme/06-ticks.rb
|
150
|
+
- examples/readme/07-baseline.rb
|
151
|
+
- examples/readme/08-every.rb
|
152
|
+
- examples/readme/09-legend.rb
|
153
|
+
- examples/readme/10-legend-offset.rb
|
154
|
+
- examples/readme/11-format.rb
|
155
|
+
- examples/readme/12-labels.rb
|
156
|
+
- examples/readme/13-border.rb
|
157
|
+
- examples/readme/14-height.rb
|
158
|
+
- examples/readme/15-multiple-columns.rb
|
159
|
+
- examples/readme/16-multiple-stacks.rb
|
160
|
+
- examples/readme/17-two-axis.rb
|
161
|
+
- examples/readme/readme.rb
|
162
|
+
- examples/screenshots/readme_00.png
|
163
|
+
- examples/screenshots/readme_01.png
|
164
|
+
- examples/screenshots/readme_02.png
|
165
|
+
- examples/screenshots/readme_03.png
|
166
|
+
- examples/screenshots/readme_04.png
|
167
|
+
- examples/screenshots/readme_05.png
|
168
|
+
- examples/screenshots/readme_06.png
|
169
|
+
- examples/screenshots/readme_07.png
|
170
|
+
- examples/screenshots/readme_08.png
|
171
|
+
- examples/screenshots/readme_09.png
|
172
|
+
- examples/screenshots/readme_10.png
|
173
|
+
- examples/screenshots/readme_11.png
|
174
|
+
- examples/screenshots/readme_12.png
|
175
|
+
- examples/screenshots/readme_13.png
|
176
|
+
- examples/screenshots/readme_14.png
|
177
|
+
- examples/screenshots/readme_15.png
|
178
|
+
- examples/screenshots/readme_16.png
|
179
|
+
- examples/screenshots/readme_17.png
|
180
|
+
- examples/squid/baseline.rb
|
181
|
+
- examples/squid/basic.rb
|
182
|
+
- examples/squid/border.rb
|
183
|
+
- examples/squid/columns.rb
|
184
|
+
- examples/squid/every.rb
|
185
|
+
- examples/squid/format.rb
|
186
|
+
- examples/squid/gridlines.rb
|
187
|
+
- examples/squid/height.rb
|
188
|
+
- examples/squid/labels.rb
|
189
|
+
- examples/squid/legend.rb
|
190
|
+
- examples/squid/legend_offset.rb
|
191
|
+
- examples/squid/line.rb
|
192
|
+
- examples/squid/line_width.rb
|
193
|
+
- examples/squid/lines.rb
|
194
|
+
- examples/squid/point.rb
|
195
|
+
- examples/squid/points.rb
|
196
|
+
- examples/squid/squid.rb
|
197
|
+
- examples/squid/stacks.rb
|
198
|
+
- examples/squid/ticks.rb
|
199
|
+
- examples/squid/two_axis.rb
|
56
200
|
- lib/squid.rb
|
201
|
+
- lib/squid/axis.rb
|
202
|
+
- lib/squid/axis_label.rb
|
203
|
+
- lib/squid/config.rb
|
204
|
+
- lib/squid/configuration.rb
|
205
|
+
- lib/squid/format.rb
|
206
|
+
- lib/squid/graph.rb
|
207
|
+
- lib/squid/gridline.rb
|
208
|
+
- lib/squid/plotter.rb
|
209
|
+
- lib/squid/point.rb
|
210
|
+
- lib/squid/settings.rb
|
57
211
|
- lib/squid/version.rb
|
58
212
|
- squid.gemspec
|
59
|
-
homepage:
|
213
|
+
homepage: https://github.com/fullscreen/squid
|
60
214
|
licenses:
|
61
215
|
- MIT
|
62
216
|
metadata: {}
|
@@ -68,17 +222,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
68
222
|
requirements:
|
69
223
|
- - ">="
|
70
224
|
- !ruby/object:Gem::Version
|
71
|
-
version:
|
225
|
+
version: 2.1.0
|
72
226
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
227
|
requirements:
|
74
|
-
- - "
|
228
|
+
- - ">"
|
75
229
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
230
|
+
version: 1.3.1
|
77
231
|
requirements: []
|
78
232
|
rubyforge_project:
|
79
|
-
rubygems_version: 2.4.5
|
233
|
+
rubygems_version: 2.4.5.1
|
80
234
|
signing_key:
|
81
235
|
specification_version: 4
|
82
|
-
summary:
|
236
|
+
summary: Generates graphs in PDF files.
|
83
237
|
test_files: []
|
84
|
-
has_rdoc:
|
data/HISTORY.md
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
v0.0.0 - 2015/06/03 First version
|
data/LICENSE.txt
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
Copyright (c) 2013 claudiob
|
2
|
-
|
3
|
-
MIT License
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
-
a copy of this software and associated documentation files (the
|
7
|
-
"Software"), to deal in the Software without restriction, including
|
8
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
-
permit persons to whom the Software is furnished to do so, subject to
|
11
|
-
the following conditions:
|
12
|
-
|
13
|
-
The above copyright notice and this permission notice shall be
|
14
|
-
included in all copies or substantial portions of the Software.
|
15
|
-
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|