rspikes 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b529b4425730f74f589bd27bb2f4835fec8bd7b8
4
- data.tar.gz: 3d9aa02e256139ebf113d6a93903a965f76f2e8e
3
+ metadata.gz: 65220adb28e419b798f032d69eef2cacf5cf87ad
4
+ data.tar.gz: 9a12319bc70f45c39568a1f136becf16b15c6fd4
5
5
  SHA512:
6
- metadata.gz: 2ca51121d44bd177f4f2e43a0544ff96da4920e19ea89fa5d30b80852bee2347d68bcab3551cec1936a7201a3ce559862c3865f043c975732ff5b6b232717e4b
7
- data.tar.gz: c72cf6cf55f81e9c99e34983197fbb9be1079cdf9b97f36e6ce255b4dc68bf5ffa893d07fcb847cc29bd8d784c1eea5ce2db3991364e201a3b44dd112ed1a4c9
6
+ metadata.gz: b2aca48716422f810201576b8c81b8d1e0f06134b1c44edf226d9928db03837aae48a014502199f4478d5547edc53f3d43cc15e20ce406a910ab9aafc800b2ba
7
+ data.tar.gz: fcc7278404abd595a8325fcca6585123a2fcc44653962f0fb131504e5ef4b8d2da7617e45867ee846b20295146c63bffcb737072838369484e750de8efbd50f1
data/Gemfile CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  source 'https://rubygems.org'
2
3
 
3
4
  # Specify your gem's dependencies in rspikes.gemspec
data/README.md CHANGED
@@ -1,4 +1,8 @@
1
- # rspikes [![Gem Version](https://badge.fury.io/rb/rspikes.svg)](https://badge.fury.io/rb/rspikes) [![Build Status](https://travis-ci.org/eendroroy/rspikes.svg?branch=master)](https://travis-ci.org/eendroroy/rspikes)
1
+ [![Gem Version](https://badge.fury.io/rb/rspikes.svg)](https://badge.fury.io/rb/rspikes)
2
+ [![Build Status](https://travis-ci.org/eendroroy/rspikes.svg?branch=master)](https://travis-ci.org/eendroroy/rspikes)
3
+ [![Code Climate](https://codeclimate.com/github/eendroroy/rspikes/badges/gpa.svg)](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
@@ -1,6 +1,7 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ # frozen_string_literal: true
2
+ require 'bundler/gem_tasks'
3
+ require 'rspec/core/rake_task'
3
4
 
4
5
  RSpec::Core::RakeTask.new(:spec)
5
6
 
6
- task :default => :spec
7
+ task default: :spec
data/bin/console CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'bundler/setup'
4
5
  require 'rspikes'
data/exe/spike CHANGED
@@ -16,4 +16,4 @@ ARGV.each do |arg|
16
16
  data << Integer(arg)
17
17
  end
18
18
 
19
- puts Rspikes.spike(data, rows=rows)
19
+ puts Rspikes.spike(data, rows)
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
- def self.spike(data, rows=1)
6
- normalized_data = normalize(data, rows=rows)
7
- spiked_data = spike_data(normalized_data, rows=rows)
8
- spikes = ''
9
- spiked_data.reverse.each_with_index do |spiked_row, index|
10
- spikes += print_spike(spiked_row)
11
- spikes += "\n" unless index+1 >= spiked_data.length
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
- private
17
+ BAR_INDEX = 8
18
+ BARS = [' ', '▁', '▂', '▃', '▄', '▅', '▆', '▇', '█'].freeze
17
19
 
18
- BAR_INDEX = 8
19
- BARS = [' ', '▁', '▂', '▃', '▄', '▅', '▆', '▇', '█']
20
+ def normalize(data, rows = 1)
21
+ upper_limit = rows * BAR_INDEX
22
+ normalized_list = []
23
+ max_item = data.max
20
24
 
21
- def self.normalize(data, rows=1)
22
- upper_limit = rows * BAR_INDEX
23
- normalized_list = []
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
- max_item = data.max
26
- min_item = 0
27
- diff = max_item - min_item
31
+ normalized_list
32
+ end
28
33
 
29
- if diff == 0
34
+ def normalize_zero_upper(n_list, data, upper_limit)
30
35
  data.each do |item|
31
- normalized_list << (item < upper_limit ? item : upper_limit)
36
+ n_list << (item < upper_limit ? item : upper_limit)
32
37
  end
33
- else
38
+ end
39
+
40
+ def normalize_positive_upper(n_list, data, max_item, upper_limit)
34
41
  data.each do |item|
35
- norm = Integer((((Float(item) - Float(min_item)) / Float(diff)) * upper_limit).round)
42
+ norm = Integer(((Float(item) / Float(max_item)) * upper_limit).round)
36
43
  adjusted_norm = (norm > 0 ? norm : 1)
37
- normalized_list << (item == 0 ? item : adjusted_norm)
44
+ n_list << (item.zero? ? item : adjusted_norm)
38
45
  end
39
46
  end
40
47
 
41
- normalized_list
42
- end
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
- data.each do |s|
51
- full_rows = s/BAR_INDEX
52
- fractional_val = s - (full_rows * BAR_INDEX)
52
+ data.each do |s|
53
+ full_rows = s / BAR_INDEX
54
+ fractional_val = s - (full_rows * BAR_INDEX)
53
55
 
54
- (0..(full_rows-1)).each do |full_row|
55
- spiked[full_row] << BAR_INDEX
56
- end
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
- spiked
64
- end
64
+ def print_spike(row)
65
+ spike = ''
66
+ row.each do |bar|
67
+ spike += BARS[bar]
68
+ end
65
69
 
66
- def self.print_spike(row)
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
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Rspikes
2
- VERSION = '0.0.2'
3
+ VERSION = '0.0.3'
3
4
  end
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.summary = %q{rspikes}
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
- # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
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 = `git ls-files -z`.split("\x0").reject do |f|
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 = '~> 2'
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.2
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-08 00:00:00.000000000 Z
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: '2'
90
+ version: 2.0.0
91
91
  required_rubygems_version: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - ">="