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 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
  - - ">="