sungemm 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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzliMzlkNWNhOGY0ZjNkOGQ3N2NkNDJlNWNhOGY1MjhlMjQzNjgwZQ==
4
+ NmExMTA5Y2RhMjZlYjM1Y2U5NjM1NmZmZmMyZjQ4MmU3MWZjODc1MA==
5
5
  data.tar.gz: !binary |-
6
- Mjc3Y2E0YmFlYjM5YTlkMDM3MzJkMjFhMzU1MWU0ZTE0OTBjMDY5Mg==
6
+ NmQxMWQ1ZTdjYzc3MzBkYzRiNmI4ZmExM2ZjNTg4YjhlYTdmZTczZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YTJlYTY1N2E1MjNiNDJkMWY3NTUxZjNmZmViNGRmMDk1NTM4ZjMxOWIxY2Uy
10
- Yjg0NjQzNTc1YTIxYmRkMzE3ODJjMDA2YjZlMGE2OWMyZTE0ZTc1ZDg1NmZm
11
- MmUzMjQwNGY4Yzc0YzI4OTFlZjM1OThlYTg0ZjNhZjM0NzBkMGU=
9
+ OTMwMTg4N2ZiODRkMzA5NWExYTk2ZmI1MDNmOGIwNGQwNDZkNDMwOTZmOTli
10
+ MTlhYTQ1MWJhY2E3YTQ1ZDQyZTYxYjJiZjY2NTE5YzYwZWQ1MWM0ODJkMDdl
11
+ NjI3OTMyM2Q5MmFmODhmNjcwN2ZjNjdkMjE2ZWYyZjYzMDAyMTM=
12
12
  data.tar.gz: !binary |-
13
- NzQ0Yzk2NTQ4Njk1MTVjNDliMjA5YThmMTE0MmEwYzRmYzllMWZlMGIyMDNh
14
- ZWUwMjc1YjZhMzM1OWUzZjEzMWJhOGUyYzVkMWI4NmYxNzQxYmJhY2Q5M2Q1
15
- Y2RlYzdhMDEwYjk0ZmFiMDAzZTFhNmFlZDc1YjZmZGVmZDQ3ZmY=
13
+ NzVhZTU1MjgwYzQxNmJkNDVhMTUyZjM5YzdmODg2NDk2ZWJhNDFlODAzZjNm
14
+ NTBjYTY3ZTA5NmRhZDU3NThmZWNhMzVkNTk5MGZkNDJlMThkMjdhOTI4OTNl
15
+ ZTFkZDMwMzVhNTcwNzdiMzEzOWNkOTU4MmRkNWE5ZDkyMjVjYTU=
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .rubocop.yml
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - "2.0.0"
4
+ - "1.9.3"
data/.yardopts CHANGED
@@ -4,4 +4,4 @@
4
4
  --readme README.md
5
5
  -
6
6
  README.md
7
- LICENSE.txt
7
+ LICENSE.txt
data/Gemfile CHANGED
@@ -4,3 +4,4 @@ gemspec
4
4
 
5
5
  gem 'rake'
6
6
  gem 'minitest', '> 5.0.3'
7
+ gem 'coveralls', require: false
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Sungemm
2
2
 
3
- Sample gem
3
+ [![Gem Version](https://badge.fury.io/rb/sungemm.png)](https://rubygems.org/gems/sungemm)
4
+ [![Coverage Status](https://coveralls.io/repos/sitnikovme/sungemm/badge.png?branch=master)](https://coveralls.io/r/sitnikovme/sungemm?branch=master)
4
5
 
5
6
  ## Installation
6
7
 
@@ -1,56 +1,9 @@
1
1
  require "sungemm/version"
2
-
3
- module Sungemm
4
- # Finds the n-th fibonachi number.
5
- # @param n [Fixnum] element number in the fibonachi sequence.
6
- # @return [Fixnum] N-th fibo number.
7
- def self.fibo_finder(n)
8
- if (0..1).include?(n)
9
- n
10
- else
11
- fibo_finder(n-2)+fibo_finder(n-1)
12
- end
13
- end
14
-
15
- class Stack
16
- def initialize(array)
17
- @array = array
18
- end
19
-
20
- def pop(count = 1)
21
- r=@array.pop(count).reverse
22
- r=r.last if count==1
23
- r
24
- end
25
-
26
- def push(values)
27
- values.each {|x| @array << x}
28
- true
29
- end
30
-
31
- def to_a
32
- @array
33
- end
34
- end
35
-
36
- class Queue
37
- def initialize(array)
38
- @array = array
39
- end
40
-
41
- def pop(count = 1)
42
- r = @array.shift(count)
43
- r = r.first if count == 1
44
- r
45
- end
46
-
47
- def push(values)
48
- values.each { |x| @array << x }
49
- true
50
- end
51
-
52
- def to_a
53
- @array
54
- end
55
- end
56
- end
2
+ require "sungemm/methods"
3
+ require "sungemm/queue"
4
+ require "sungemm/stack"
5
+ require "sungemm/person"
6
+ require "sungemm/character"
7
+ require "sungemm/hash"
8
+ require "sungemm/point"
9
+ require "sungemm/rectangle"
@@ -0,0 +1,5 @@
1
+ module Sungemm
2
+ class Character
3
+ attr_accessor :name, :quote
4
+ end
5
+ end
@@ -0,0 +1,24 @@
1
+ module Sungemm
2
+ class HashWithIndifferentAccess
3
+ def initialize(args = [])
4
+ @hash = {}
5
+ args.each_slice(2) do |x|
6
+ k = x[0].to_sym
7
+ v = x[1].nil? ? nil : x[1]
8
+ @hash[k] = v
9
+ end
10
+ end
11
+
12
+ def self.[](*args)
13
+ new(args)
14
+ end
15
+
16
+ def []=(key, value)
17
+ @hash[key.to_sym] = value
18
+ end
19
+
20
+ def [](key)
21
+ @hash[key.to_sym]
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,105 @@
1
+ module Sungemm
2
+ # Finds the n-th fibonachi number.
3
+ # @param n [Fixnum] element number in the fibonachi sequence.
4
+ # @return [Fixnum] N-th fibo number.
5
+ def self.fibo_finder(n)
6
+ if (0..1).include?(n)
7
+ n
8
+ else
9
+ fibo_finder(n - 2) + fibo_finder(n - 1)
10
+ end
11
+ end
12
+
13
+ def self.longest_palindrome(str)
14
+ len = str.length
15
+ while len > 0
16
+ offset = str.length - len
17
+ while offset > 0
18
+ substr = str[offset, len]
19
+ return substr if substr == substr.reverse
20
+ offset -= 1
21
+ end
22
+ len -= 1
23
+ end
24
+ ""
25
+ end
26
+
27
+ def self.count(array)
28
+ h = Hash.new(0)
29
+ array.each { |el| h[el] += 1 }
30
+ h
31
+ end
32
+
33
+ def self.even_sum(arr)
34
+ arr.each_with_object([]) do |item, obj|
35
+ if !item.nil? && item.length.even?
36
+ obj << item.reverse
37
+ end
38
+ end
39
+ end
40
+
41
+ def self.join_params(link, url_parameters)
42
+ link + "?" + url_parameters.map { |(k, v)| "#{k}=#{v}" }.join("&")
43
+ end
44
+
45
+ def self.pretty_date(date)
46
+ month_strings = %w(January February March April May June July August
47
+ Sepetember October November December)
48
+ invalid_date = false
49
+ case
50
+ when m = /\A(\d{2})-(\d{2})-(\d{4})\z/.match(date)
51
+ year = m[3]
52
+ month_int = m[1].to_i - 1
53
+ month = month_strings[month_int][0, 3]
54
+ day = m[2]
55
+ when m = /\A(\w+)[ ](\d{1,2}),[ ](\d{4})\z/.match(date)
56
+ month_match = m[1]
57
+ if !month_strings.include?(month_match)
58
+ invalid_date = true
59
+ else
60
+ month = month_match[0, 3]
61
+ year = m[3]
62
+ day = m[2]
63
+ end
64
+ when m = /\A(\d{4})-(\d{2})-(\d{2})\z/.match(date)
65
+ year = m[1]
66
+ month_int = m[2].to_i - 1
67
+ month = month_strings[month_int][0, 3]
68
+ day = m[3]
69
+ when m = %r{\A(\d{1,2})/(\d{2})/(\d{4})\z}.match(date)
70
+ year = m[3]
71
+ month_int = m[1].to_i - 1
72
+ month = month_strings[month_int][0, 3]
73
+ day = m[2]
74
+ else
75
+ invalid_date = true
76
+ end
77
+ raise "Invalid date format" if invalid_date
78
+ "#{month} #{day}, #{year}"
79
+ end
80
+
81
+ def self.random_boolean
82
+ rand(2) == 1
83
+ end
84
+
85
+ def self.reverse_each_word(sentence)
86
+ sentence.split(" ").map { |x| x.reverse }.join(" ")
87
+ end
88
+
89
+ def self.separate_with_comma(number)
90
+ str = number.to_s
91
+ if str.length > 3
92
+ str.gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1,")
93
+ else
94
+ str
95
+ end
96
+ end
97
+
98
+ def self.simple_sub(str, pattern, replace)
99
+ str.gsub(pattern, pattern => replace)
100
+ end
101
+
102
+ def self.key_for_min_value(hash)
103
+ hash.key(hash.values.min)
104
+ end
105
+ end
@@ -0,0 +1,32 @@
1
+ module Sungemm
2
+ class Person
3
+ def initialize(name, age, incoming_race)
4
+ @name = name
5
+ @age = age
6
+ self.race = incoming_race
7
+ end
8
+
9
+ def nam
10
+ @name.split.map(&:capitalize).join(" ")
11
+ end
12
+
13
+ def ag
14
+ @age
15
+ end
16
+
17
+ def method_missing(m, *args)
18
+ case m
19
+ when :name
20
+ nam
21
+ when :age
22
+ ag
23
+ when :race=
24
+ @race = args[0]
25
+ when :race
26
+ @race.capitalize
27
+ else
28
+ super
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,9 @@
1
+ module Sungemm
2
+ class Point
3
+ attr_accessor :x, :y
4
+
5
+ def initialize(x, y)
6
+ self.x, self.y = x, y
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,22 @@
1
+ module Sungemm
2
+ class Queue
3
+ def initialize(array)
4
+ @array = array
5
+ end
6
+
7
+ def pop(count = 1)
8
+ r = @array.shift(count)
9
+ r = r.first if count == 1
10
+ r
11
+ end
12
+
13
+ def push(values)
14
+ values.each { |x| @array << x }
15
+ true
16
+ end
17
+
18
+ def to_a
19
+ @array
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,13 @@
1
+ module Sungemm
2
+ class Rectangle
3
+ attr_accessor :upper_left, :lower_right
4
+
5
+ def initialize(upper_left, lower_right)
6
+ self.upper_left, self.lower_right = upper_left, lower_right
7
+ end
8
+
9
+ def area
10
+ (lower_right.x - upper_left.x) * (lower_right.y - upper_left.y)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,22 @@
1
+ module Sungemm
2
+ class Stack
3
+ def initialize(array)
4
+ @array = array
5
+ end
6
+
7
+ def pop(count = 1)
8
+ r = @array.pop(count).reverse
9
+ r = r.last if count == 1
10
+ r
11
+ end
12
+
13
+ def push(values)
14
+ values.each { |x| @array << x }
15
+ true
16
+ end
17
+
18
+ def to_a
19
+ @array
20
+ end
21
+ end
22
+ end
@@ -1,3 +1,3 @@
1
1
  module Sungemm
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1,88 @@
1
+ require "test_helper"
2
+
3
+ class MethodsTest < MiniTest::Test
4
+ def test_fibo_finder
5
+ assert_equal 0, Sungemm.fibo_finder(0)
6
+ assert_equal 1, Sungemm.fibo_finder(1)
7
+ assert_equal 3, Sungemm.fibo_finder(4)
8
+ assert_equal 13, Sungemm.fibo_finder(7)
9
+ assert_equal 55, Sungemm.fibo_finder(10)
10
+ end
11
+
12
+ def test_longest_palindrome
13
+ assert_equal "yzzy", Sungemm.longest_palindrome("xyzzy")
14
+ assert_equal "dhfdkjfffhhfffjkdfhd", Sungemm.longest_palindrome("afbbbfj"\
15
+ "djklgdfdhfdkjfffhhfffjkdfhdhkyejejfjkd")
16
+ assert_equal "racecar", Sungemm.longest_palindrome("bartarcarracecarbart"\
17
+ "ar")
18
+ assert_equal "46264", Sungemm.longest_palindrome("3.14159265358979323846"\
19
+ "264338327950288419716939937510582097494459230781640628620899862803482"\
20
+ "5342117067982")
21
+ end
22
+
23
+ def test_count
24
+ test = %w(cat dog fish fish)
25
+ assert_equal ({ 'cat' => 1, 'dog' => 1, 'fish' => 2 }), Sungemm.count(test)
26
+ end
27
+
28
+ def test_even_sum
29
+ arr = ["cat", "dog", "bird", "fish"]
30
+ assert_equal ["drib", "hsif"], Sungemm.even_sum(arr)
31
+ arr = ["why", "chunky", nil, "lucky", "stiff"]
32
+ assert_equal ["yknuhc"], Sungemm.even_sum(arr)
33
+ arr = ["rewsna", "hitch hiker", "si", "guide", "galaxies ", "24"]
34
+ assert_equal ["answer", "is", "42"], Sungemm.even_sum(arr)
35
+ end
36
+
37
+ def test_join_params
38
+ url_params = {
39
+ 'first_param' => 123,
40
+ 'second_param' => 456,
41
+ 'third_param' => 678
42
+ }
43
+ url = 'http://www.foobar.com'
44
+ test_url = 'http://www.foobar.com?'\
45
+ 'first_param=123&second_param=456&third_param=678'
46
+ assert_equal test_url, Sungemm.join_params(url, url_params)
47
+ end
48
+
49
+ def test_pretty_date
50
+ assert_equal "Nov 30, 1835", Sungemm.pretty_date("11-30-1835")
51
+ assert_equal "Jul 20, 1933", Sungemm.pretty_date("July 20, 1933")
52
+ assert_equal "Nov 11, 1922", Sungemm.pretty_date("1922-11-11")
53
+ assert_equal "Sep 20, 1978", Sungemm.pretty_date("9/20/1978")
54
+ end
55
+
56
+ def test_random_boolean
57
+ array = []
58
+
59
+ 100.times do
60
+ array << :dummy if Sungemm.random_boolean
61
+ end
62
+
63
+ assert_equal true, (1..100) === array.size
64
+ assert_equal true, array.size != 100
65
+ end
66
+
67
+ def test_separate_with_comma
68
+ assert_equal "1", Sungemm.separate_with_comma(1)
69
+ assert_equal "10", Sungemm.separate_with_comma(10)
70
+ assert_equal "100", Sungemm.separate_with_comma(100)
71
+ assert_equal "1,000", Sungemm.separate_with_comma(1000)
72
+ assert_equal "10,000", Sungemm.separate_with_comma(10000)
73
+ assert_equal "100,000", Sungemm.separate_with_comma(100000)
74
+ assert_equal "1,000,000", Sungemm.separate_with_comma(1000000)
75
+ end
76
+
77
+ def test_simple_sub
78
+ str = "?? == ??"
79
+
80
+ assert_equal "?? <= ??", Sungemm.simple_sub(str, "==", "<=")
81
+ assert_equal "?? == ??", Sungemm.simple_sub(str, "abc", "def")
82
+ assert_equal "fun?? == fun??", Sungemm.simple_sub(str, "??", "fun??")
83
+ naruse_answer = "Date.parse(date.sub(/(\d+)[-\/](\d\d)."\
84
+ "(\d{4})/,'\\3-\\1-\\2')).strftime('%b %d, %Y')"
85
+ right_answer = "#{naruse_answer} == #{naruse_answer}"
86
+ assert_equal right_answer, Sungemm.simple_sub(str, "??", naruse_answer)
87
+ end
88
+ end
@@ -1,31 +1,75 @@
1
1
  require "test_helper"
2
2
 
3
- class SungemmTest < MiniTest::Unit::TestCase
4
- def test_fibo_finder
5
- assert_equal 0, Sungemm.fibo_finder(0)
6
- assert_equal 1, Sungemm.fibo_finder(1)
7
- assert_equal 3, Sungemm.fibo_finder(4)
8
- assert_equal 13, Sungemm.fibo_finder(7)
9
- assert_equal 55, Sungemm.fibo_finder(10)
10
- end
11
-
3
+ class SungemmTest < MiniTest::Test
12
4
  def test_stack
13
5
  stack = Sungemm::Stack.new([5, 6, 7, 8])
14
6
 
15
- assert_equal stack.pop, 8
16
- assert_equal stack.pop, 7
17
- assert_equal stack.push([4, 2]), true
18
- assert_equal stack.pop(3), [2, 4, 6]
19
- assert_equal stack.to_a, [5]
7
+ assert_equal 8, stack.pop
8
+ assert_equal 7, stack.pop
9
+ assert_equal true, stack.push([4, 2])
10
+ assert_equal [2, 4, 6], stack.pop(3)
11
+ assert_equal [5], stack.to_a
20
12
  end
21
13
 
22
14
  def test_queue
23
15
  queue = Sungemm::Queue.new([5, 6, 7, 8])
24
16
 
25
- assert_equal queue.pop, 5
26
- assert_equal queue.pop, 6
27
- assert_equal queue.push([4, 2]), true
28
- assert_equal queue.pop(2), [7, 8]
29
- assert_equal queue.to_a, [4, 2]
17
+ assert_equal 5, queue.pop
18
+ assert_equal 6, queue.pop
19
+ assert_equal true, queue.push([4, 2])
20
+ assert_equal [7, 8], queue.pop(2)
21
+ assert_equal [4, 2], queue.to_a
22
+ end
23
+
24
+ def test_person
25
+ person = Sungemm::Person.new("kurt vonnegut", 89, "caucasian")
26
+ assert_equal "Kurt Vonnegut", person.name
27
+ assert_equal "Caucasian", person.race
28
+ assert_equal 89, person.age
29
+ end
30
+
31
+ def test_character
32
+ thorin = Sungemm::Character.new
33
+ thorin.name = "Thorin Oakenshield"
34
+ thorin.quote = "Some courage and some wisdom, blended in measure. If more
35
+ of us valued food and cheer and song above hoarded gold, it would be a
36
+ merrier world"
37
+
38
+ stephen = Sungemm::Character.new
39
+ stephen.name = "Stephen Dedalus"
40
+
41
+ assert_equal "Thorin Oakenshield", thorin.name
42
+ assert_equal "Stephen Dedalus", stephen.name
43
+ end
44
+
45
+ def test_hash
46
+ composers = Sungemm::HashWithIndifferentAccess.new
47
+ composers[:Janacek] = "Leos Janacek"
48
+ composers["Sweelinck"] = "Jan Pieterszoon Sweelinck"
49
+
50
+ mathematicians = Sungemm::HashWithIndifferentAccess["Yutaka", "Taniyama",
51
+ :Alonzo, "Church"]
52
+
53
+ assert_equal "Leos Janacek", composers["Janacek"]
54
+ assert_equal "Jan Pieterszoon Sweelinck", composers[:Sweelinck]
55
+ assert_equal "Taniyama", mathematicians[:Yutaka]
56
+ assert_equal true, (mathematicians["Alonzo"] == mathematicians[:Alonzo])
57
+ end
58
+
59
+ def test_key_for_min_value
60
+ input = {"k" => 2, "h" => 3, "j" => 1}
61
+ assert_equal "j", Sungemm.key_for_min_value(input)
62
+ input = {"o" => 0, "z" => -2, "j" => 1}
63
+ assert_equal "z", Sungemm.key_for_min_value(input)
64
+ input = {}
65
+ assert_equal nil, Sungemm.key_for_min_value(input)
66
+ end
67
+
68
+ def test_point_and_rectangle
69
+ p1 = Sungemm::Point.new(0, 0)
70
+ p2 = Sungemm::Point.new(3, 4)
71
+ assert_equal 12, Sungemm::Rectangle.new(p1, p2).area
72
+ assert_equal 12, Sungemm::Rectangle.new(p2, p1).area
73
+ assert_equal 10, Sungemm::Rectangle.new(Sungemm::Point.new(13, 5), p2).area
30
74
  end
31
75
  end
@@ -1,13 +1,19 @@
1
+ require 'simplecov'
2
+ require 'coveralls'
3
+
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ]
8
+ SimpleCov.start do
9
+ add_filter "/test/"
10
+ end
11
+
1
12
  require 'bundler/setup'
2
13
  Bundler.require
3
14
 
4
15
  require "minitest/autorun"
5
16
 
6
- if ENV['TRAVIS']
7
- require 'coveralls'
8
- Coveralls.wear!
9
- end
10
-
11
17
  class TestCase < MiniTest::Test
12
18
  def load_fixture(filename)
13
19
  File.read(File.dirname(__FILE__) + "/fixtures/#{filename}")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sungemm
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
  - Maksim Sitnikov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-28 00:00:00.000000000 Z
11
+ date: 2013-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -74,14 +74,24 @@ extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
76
  - .gitignore
77
+ - .travis.yml
77
78
  - .yardopts
78
79
  - Gemfile
79
80
  - LICENSE.txt
80
81
  - README.md
81
82
  - Rakefile
82
83
  - lib/sungemm.rb
84
+ - lib/sungemm/character.rb
85
+ - lib/sungemm/hash.rb
86
+ - lib/sungemm/methods.rb
87
+ - lib/sungemm/person.rb
88
+ - lib/sungemm/point.rb
89
+ - lib/sungemm/queue.rb
90
+ - lib/sungemm/rectangle.rb
91
+ - lib/sungemm/stack.rb
83
92
  - lib/sungemm/version.rb
84
93
  - sungemm.gemspec
94
+ - test/lib/sungemm_methods_test.rb
85
95
  - test/lib/sungemm_test.rb
86
96
  - test/test_helper.rb
87
97
  homepage: ''
@@ -109,6 +119,7 @@ signing_key:
109
119
  specification_version: 4
110
120
  summary: sample gem
111
121
  test_files:
122
+ - test/lib/sungemm_methods_test.rb
112
123
  - test/lib/sungemm_test.rb
113
124
  - test/test_helper.rb
114
125
  has_rdoc: