hex_values 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
data/Gemfile CHANGED
@@ -2,3 +2,9 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in hex_values.gemspec
4
4
  gemspec
5
+
6
+ group :test do
7
+ gem 'rake'
8
+ end
9
+
10
+ gem 'coveralls', require: false
data/README.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # HexValues
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/hex_values.png)](http://badge.fury.io/rb/hex_values)
4
+ [![Code Climate](https://codeclimate.com/github/gianu/hex_values.png)](https://codeclimate.com/github/gianu/hex_values)
5
+ [![Build Status](https://travis-ci.org/gianu/hex_values.png)](https://travis-ci.org/gianu/hex_values)
6
+ [![Coverage Status](https://coveralls.io/repos/gianu/hex_values/badge.png?branch=master)](https://coveralls.io/r/gianu/hex_values)
7
+
3
8
  Transform your float to hexadecimals and viceversa!
4
9
 
5
10
  ## Installation
data/Rakefile CHANGED
@@ -8,3 +8,5 @@ Rake::TestTask.new do |t|
8
8
  t.libs.push 'spec'
9
9
  t.verbose = true
10
10
  end
11
+
12
+ task :default => [:test]
@@ -1,3 +1,3 @@
1
1
  module HexValues
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/hex_values.rb CHANGED
@@ -34,24 +34,19 @@ module FloatValuesFromString
34
34
  number = 0
35
35
  base, remainder = self.split('.')
36
36
 
37
- if base
38
- arr=[]
39
- base.each_char { |c| arr << c }
40
- arr.reverse!.each_index do |index|
41
- number += arr[index].to_i(16) * (16 ** index)
42
- end
43
- end
44
-
45
- if remainder
46
- arr=[]
47
- remainder.each_char { |c| arr << c }
48
- arr.each_index do |index|
49
- number += arr[index].to_i(16).to_f / (16 ** (index + 1))
50
- end
51
- end
37
+ get_sum(base.split(//).reverse!) { |element, index| number += element.to_i(16) * (16 ** index) } if base
38
+ get_sum(remainder.split(//)) { |element, index| number += element.to_i(16).to_f / (16 ** (index + 1)) } if remainder
52
39
 
53
40
  number
54
41
  end
42
+
43
+ private
44
+
45
+ def get_sum(array, &block)
46
+ array.each_index do |index|
47
+ block.call(array[index], index)
48
+ end
49
+ end
55
50
  end
56
51
 
57
52
  class Float
data/script/benchmark ADDED
@@ -0,0 +1,6 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+ set -u
5
+
6
+ ruby -Ilib/ spec/performance_hex_values_test.rb
@@ -0,0 +1,32 @@
1
+ require 'minitest/autorun'
2
+ require 'minitest/benchmark'
3
+
4
+ require 'hex_values'
5
+
6
+ # This test is only useful to compare differents implementations of
7
+ # the algorithm used to transformt floats to hex and vicecersa.
8
+ class BenchHexValues < MiniTest::Unit::TestCase
9
+ def bench_float_to_hex
10
+ assert_performance_linear 0.9999 do |n|
11
+ n.times do
12
+ (98789879890.87).to_hex #O(1)
13
+ end
14
+ end
15
+ end
16
+
17
+ def bench_integer_to_hex
18
+ assert_performance_linear 0.999 do |n|
19
+ n.times do
20
+ 9878987608.to_hex #O(1)
21
+ end
22
+ end
23
+ end
24
+
25
+ def bench_hex_to_float
26
+ assert_performance_linear 0.9999 do |n|
27
+ n.times do
28
+ "5f2f9e39.42".to_float #O(1)
29
+ end
30
+ end
31
+ end
32
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,6 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
1
4
  require 'minitest/spec'
2
5
  require 'minitest/autorun'
3
6
  require 'minitest/reporters'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hex_values
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-04 00:00:00.000000000 Z
12
+ date: 2013-05-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
@@ -53,6 +53,7 @@ extra_rdoc_files: []
53
53
  files:
54
54
  - .gitignore
55
55
  - .ruby-version
56
+ - .travis.yml
56
57
  - Gemfile
57
58
  - LICENSE
58
59
  - README.md
@@ -60,7 +61,9 @@ files:
60
61
  - hex_values.gemspec
61
62
  - lib/hex_values.rb
62
63
  - lib/hex_values/version.rb
64
+ - script/benchmark
63
65
  - spec/hex_values_spec.rb
66
+ - spec/performance_hex_values_test.rb
64
67
  - spec/spec_helper.rb
65
68
  homepage: http://github.com/gianu/hex_values
66
69
  licenses: []
@@ -89,4 +92,5 @@ summary: Convert any float or fixnum to the correct representation in hexadecima
89
92
  and convert any hexadecimal string in their corresponding float representation.
90
93
  test_files:
91
94
  - spec/hex_values_spec.rb
95
+ - spec/performance_hex_values_test.rb
92
96
  - spec/spec_helper.rb