rspikes 0.0.2 → 0.0.3
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/Gemfile +1 -0
- data/README.md +5 -1
- data/Rakefile +4 -3
- data/bin/console +1 -0
- data/exe/spike +1 -1
- data/lib/rspikes.rb +52 -49
- data/lib/rspikes/version.rb +2 -1
- data/rspikes.gemspec +8 -13
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 65220adb28e419b798f032d69eef2cacf5cf87ad
|
4
|
+
data.tar.gz: 9a12319bc70f45c39568a1f136becf16b15c6fd4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b2aca48716422f810201576b8c81b8d1e0f06134b1c44edf226d9928db03837aae48a014502199f4478d5547edc53f3d43cc15e20ce406a910ab9aafc800b2ba
|
7
|
+
data.tar.gz: fcc7278404abd595a8325fcca6585123a2fcc44653962f0fb131504e5ef4b8d2da7617e45867ee846b20295146c63bffcb737072838369484e750de8efbd50f1
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
-
|
1
|
+
[](https://badge.fury.io/rb/rspikes)
|
2
|
+
[](https://travis-ci.org/eendroroy/rspikes)
|
3
|
+
[](https://codeclimate.com/github/eendroroy/rspikes)
|
4
|
+
|
5
|
+
# rspikes
|
2
6
|
|
3
7
|
A tool to display bar-chart anywhere.
|
4
8
|
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
data/exe/spike
CHANGED
data/lib/rspikes.rb
CHANGED
@@ -1,75 +1,78 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'rspikes/version'
|
2
3
|
|
3
4
|
module Rspikes
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
5
|
+
class Spike
|
6
|
+
def spike(data, rows = 1)
|
7
|
+
normalized_data = normalize(data, rows)
|
8
|
+
spiked_data = spike_data(normalized_data, rows)
|
9
|
+
spikes = ''
|
10
|
+
spiked_data.reverse.each_with_index do |spiked_row, index|
|
11
|
+
spikes += print_spike(spiked_row)
|
12
|
+
spikes += "\n" unless index + 1 >= spiked_data.length
|
13
|
+
end
|
14
|
+
spikes
|
12
15
|
end
|
13
|
-
spikes
|
14
|
-
end
|
15
16
|
|
16
|
-
|
17
|
+
BAR_INDEX = 8
|
18
|
+
BARS = [' ', '▁', '▂', '▃', '▄', '▅', '▆', '▇', '█'].freeze
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
+
def normalize(data, rows = 1)
|
21
|
+
upper_limit = rows * BAR_INDEX
|
22
|
+
normalized_list = []
|
23
|
+
max_item = data.max
|
20
24
|
|
21
|
-
|
22
|
-
|
23
|
-
|
25
|
+
if max_item.zero?
|
26
|
+
normalize_zero_upper(normalized_list, data, upper_limit)
|
27
|
+
else
|
28
|
+
normalize_positive_upper(normalized_list, data, max_item, upper_limit)
|
29
|
+
end
|
24
30
|
|
25
|
-
|
26
|
-
|
27
|
-
diff = max_item - min_item
|
31
|
+
normalized_list
|
32
|
+
end
|
28
33
|
|
29
|
-
|
34
|
+
def normalize_zero_upper(n_list, data, upper_limit)
|
30
35
|
data.each do |item|
|
31
|
-
|
36
|
+
n_list << (item < upper_limit ? item : upper_limit)
|
32
37
|
end
|
33
|
-
|
38
|
+
end
|
39
|
+
|
40
|
+
def normalize_positive_upper(n_list, data, max_item, upper_limit)
|
34
41
|
data.each do |item|
|
35
|
-
norm = Integer(((
|
42
|
+
norm = Integer(((Float(item) / Float(max_item)) * upper_limit).round)
|
36
43
|
adjusted_norm = (norm > 0 ? norm : 1)
|
37
|
-
|
44
|
+
n_list << (item.zero? ? item : adjusted_norm)
|
38
45
|
end
|
39
46
|
end
|
40
47
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
def self.spike_data(data, rows=1)
|
45
|
-
spiked = []
|
46
|
-
(1..rows).each do
|
47
|
-
spiked << []
|
48
|
-
end
|
48
|
+
def spike_data(data, rows = 1)
|
49
|
+
spiked = []
|
50
|
+
(1..rows).each { spiked << [] }
|
49
51
|
|
50
|
-
|
51
|
-
|
52
|
-
|
52
|
+
data.each do |s|
|
53
|
+
full_rows = s / BAR_INDEX
|
54
|
+
fractional_val = s - (full_rows * BAR_INDEX)
|
53
55
|
|
54
|
-
|
55
|
-
spiked[
|
56
|
-
|
57
|
-
spiked[full_rows] << fractional_val if full_rows < rows
|
58
|
-
((full_rows+1)..(rows-1)).each do |rest_row|
|
59
|
-
spiked[rest_row] << 0
|
56
|
+
(0..(full_rows - 1)).each { |full_row| spiked[full_row] << BAR_INDEX }
|
57
|
+
spiked[full_rows] << fractional_val if full_rows < rows
|
58
|
+
((full_rows + 1)..(rows - 1)).each { |rest_row| spiked[rest_row] << 0 }
|
60
59
|
end
|
60
|
+
|
61
|
+
spiked
|
61
62
|
end
|
62
63
|
|
63
|
-
|
64
|
-
|
64
|
+
def print_spike(row)
|
65
|
+
spike = ''
|
66
|
+
row.each do |bar|
|
67
|
+
spike += BARS[bar]
|
68
|
+
end
|
65
69
|
|
66
|
-
|
67
|
-
spike = ''
|
68
|
-
row.each do |bar|
|
69
|
-
spike += BARS[bar]
|
70
|
+
spike
|
70
71
|
end
|
71
|
-
|
72
|
-
spike
|
73
72
|
end
|
74
73
|
|
74
|
+
def self.spike(data, rows = 1)
|
75
|
+
s = Spike.new
|
76
|
+
s.spike(data, rows)
|
77
|
+
end
|
75
78
|
end
|
data/lib/rspikes/version.rb
CHANGED
data/rspikes.gemspec
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# coding: utf-8
|
2
3
|
lib = File.expand_path('../lib', __FILE__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
@@ -8,27 +9,21 @@ Gem::Specification.new do |spec|
|
|
8
9
|
spec.version = Rspikes::VERSION
|
9
10
|
spec.authors = ['indrajit']
|
10
11
|
spec.email = ['eendroroy@gmail.com']
|
11
|
-
|
12
|
-
spec.
|
13
|
-
spec.description = %q{A tool to display bar-chart anywhere.}
|
12
|
+
spec.summary = 'rspikes'
|
13
|
+
spec.description = 'A tool to display bar-chart anywhere.'
|
14
14
|
spec.homepage = 'http://rubygems.org/gems/rspikes'
|
15
15
|
spec.license = 'MIT'
|
16
|
-
|
17
|
-
|
18
|
-
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
19
|
-
if spec.respond_to?(:metadata)
|
20
|
-
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
21
|
-
else
|
22
|
-
raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.'
|
16
|
+
unless spec.respond_to?(:metadata)
|
17
|
+
raise 'RubyGems >= 2.0 is required to protect against public gem pushes.'
|
23
18
|
end
|
24
|
-
|
25
|
-
spec.files
|
19
|
+
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
20
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
26
21
|
f.match(%r{^(test|spec|features)/})
|
27
22
|
end
|
28
23
|
spec.bindir = 'exe'
|
29
24
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
30
25
|
spec.require_paths = ['lib']
|
31
|
-
spec.required_ruby_version = '
|
26
|
+
spec.required_ruby_version = '>= 2.0.0'
|
32
27
|
|
33
28
|
spec.add_development_dependency 'bundler', '~> 1.13'
|
34
29
|
spec.add_development_dependency 'rake', '~> 10.0'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspikes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- indrajit
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -85,9 +85,9 @@ require_paths:
|
|
85
85
|
- lib
|
86
86
|
required_ruby_version: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- - "
|
88
|
+
- - ">="
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
90
|
+
version: 2.0.0
|
91
91
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
93
|
- - ">="
|