mochee 2.0.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: bf8d782e37d399dcea2e12c8d851dfa12535922b
4
+ data.tar.gz: 19c056ba64f76961d7e51634231c40cf13f54200
5
+ SHA512:
6
+ metadata.gz: 8dba0768443527e079ff04dfca498ffccc446b64a7fe52cce07142461052aa816dc30d9d418bc6223417e48325767a6f4bcb385752f2e3cc2f7b197a3c28ac3c
7
+ data.tar.gz: b5e66cc0ade4389c49d24820a6f293b3d526820652566237a66383d27969fd53e188b4acc43ad00b3a11879a2bcc16a6ad8b37af415f1a87950706115cc7b250
data/LICENSE ADDED
@@ -0,0 +1 @@
1
+ belongs to Dany Han
data/README ADDED
@@ -0,0 +1 @@
1
+ coding on Friday morning. Going to eat oatmeal soon ;)
@@ -0,0 +1,7 @@
1
+ module Amazing
2
+ class Spiderman
3
+ def self.attack
4
+ puts "spider web!!"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/mochee/playlist'
4
+ require_relative '../lib/mochee/movie3d'
5
+
6
+
7
+ playlist = Mochee::Playlist.new("Making knowledge MINE")
8
+ default_movies_list =
9
+ File.join(File.dirname(__FILE__),'movies.csv')
10
+
11
+ playlist.load_file(ARGV.shift || default_movies_list)
12
+ #Whenever you type a command that uses a file,
13
+ #the working directory(where you called the script from)
14
+ #will be the first place your shell looks to find the file.
15
+ #therefore, you need to provide absolute path for 'avengers'
16
+
17
+
18
+
19
+ movie3d = Mochee::Movie3D.new('95%',5,10)
20
+ playlist.add_movie(movie3d)
21
+
22
+ loop do
23
+ puts "\nHow many viewings? ('quit' to exit)"
24
+ answer = gets.chomp.downcase #get string, gets next line from $stdin
25
+ #chomp removes any characters hanging onto end of string
26
+ case answer #answer is string because its from $stdin, you type in as string
27
+ when 'quit','exit'
28
+ playlist.print_stats
29
+ playlist.save_file
30
+ break
31
+ when /^\d*$/
32
+ puts "Enjoy your #{answer} viewings, achiever!"
33
+ playlist.play(answer.to_i)
34
+ else
35
+ puts "\nPlease enter a number or 'quit' to exit "
36
+ end
37
+ end
38
+
39
+
40
+
41
+
42
+
43
+
44
+
@@ -0,0 +1,7 @@
1
+ charlie,5
2
+ shiny,5
3
+ dany,5
4
+ kevin,5
5
+ ray,5
6
+ yohan,5
7
+ jeremiah,5
@@ -0,0 +1,28 @@
1
+ require_relative 'movie'
2
+
3
+ module Dok2AndQuiet
4
+
5
+ def self.roll
6
+ @number = rand(1..6)
7
+ end
8
+
9
+ def self.review(movie)
10
+
11
+ case roll #or self.roll
12
+
13
+ when 1..2
14
+ movie.thumbs_down
15
+ puts "#{movie.title} got thumbs down"
16
+ when 3..4
17
+ puts "#{movie.title} got skipped"
18
+ when 5..6
19
+ movie.thumbs_up
20
+ puts "#{movie.title} got thumbs up!"
21
+ end
22
+ end
23
+ end
24
+
25
+ if __FILE__ == $0
26
+ movie = Mochee::Movie.new("ironman")
27
+ puts Dok2AndQuiet::review(movie) #Dok2AndQuiet.review(movie)
28
+ end
@@ -0,0 +1,58 @@
1
+ module Rankable
2
+ def thumbs_up
3
+ puts "#{self.title} got a thumbs_up"
4
+ end
5
+ end
6
+
7
+ class Movie
8
+ include Rankable
9
+ attr_accessor :title, :rank
10
+ def initialize(title,rank)
11
+ @title = title
12
+ @rank = rank
13
+
14
+ end
15
+ end
16
+
17
+ class Song
18
+ include Rankable
19
+ attr_accessor :title, :rank
20
+
21
+ def initialize(title,rank)
22
+ self.title = title
23
+ self.rank = rank
24
+ end
25
+ end
26
+
27
+ if __FILE__ == $0
28
+ movie = Movie.new('goonies',10)
29
+ movie.thumbs_up
30
+ song = Song.new('Ruby baby',10)
31
+ song.thumbs_up
32
+ end
33
+
34
+ #mixins - simply a module that has methods
35
+ # and those methods gets mixed into other classes
36
+
37
+ #we want to share some common behaviors across
38
+ #these classes which arent in the same inheritance hierchy
39
+ #(they are not in same ancestors line, no child and parent)
40
+
41
+ #mixed in modules effectively behave like superclasses.
42
+ #it changes the method look-up hierchy
43
+ #module lives in between the class that includes the
44
+ #module and their direct superclass
45
+ #so when we call a method, it looks into the object's
46
+ #class then it looks in the module, then it looks in
47
+ #the superclass and then all the way into the top
48
+
49
+ # It generally considered better practice if
50
+ # a module depends on a method or an attribute in the
51
+ # hosting class(the class that it gets mixed into)
52
+ # as opposted to relying on the instance variable being present
53
+
54
+
55
+
56
+
57
+
58
+
@@ -0,0 +1,58 @@
1
+ require_relative 'rankable'
2
+
3
+ module Mochee
4
+ class Movie
5
+ include Rankable
6
+
7
+ attr_reader :snack_carbs,:title
8
+ attr_accessor :rank
9
+
10
+ def initialize(title, rank=0)
11
+ @title = title.capitalize
12
+ @rank = rank
13
+ @snack_carbs = Hash.new(0)
14
+ end
15
+
16
+ def self.convert(line)
17
+ title,rank = line.split(',')
18
+ Movie.new(title,Integer(rank))
19
+ end
20
+
21
+ def expose_hash
22
+ @snack_carbs.each do |key,value|
23
+ snack = Snack.new(key,value.to_i)
24
+ yield(snack)
25
+ end
26
+ end
27
+
28
+ def carbs_consumed
29
+ @snack_carbs.values.reduce(0) {|sum,snack| sum + snack }
30
+ # @snacks_carbs.values.reduce(0,:+)
31
+ end
32
+
33
+ def ate_snack(snack)
34
+ @snack_carbs[snack.name] += snack.carbs
35
+ puts "Sold ~> #{snack.name.capitalize} - #{snack.carbs} carbs"
36
+ puts @snack_carbs
37
+ end
38
+
39
+ def title=(title)
40
+ @title = title.capitalize
41
+ end
42
+
43
+ def to_s
44
+ "#{@title} with a rank of #{@rank} (#{status})"
45
+ end
46
+ end
47
+ end
48
+
49
+ if __FILE__ == $0
50
+ movie1 = Mochee::Movie.new("Amazing Spiderman",8)
51
+ puts movie1
52
+ puts movie1.normalized_rank
53
+ movie1.thumbs_up
54
+ movie1.thumbs_down
55
+ puts movie1.rank
56
+ movie1.title="crappy spiderman"
57
+ puts movie1.title
58
+ end
@@ -0,0 +1,139 @@
1
+ require_relative 'movie'
2
+
3
+ module Mochee
4
+ class Movie3D < Movie
5
+ attr_accessor :wow_factor
6
+
7
+ def initialize(title,rank,wow_factor)
8
+ super(title,rank)
9
+
10
+ @wow_factor = wow_factor
11
+ end
12
+
13
+ def thumbs_up
14
+ self.wow_factor.times { super }
15
+ end
16
+
17
+ def show_effect
18
+ puts "Wow " * self.wow_factor
19
+ end
20
+ end
21
+ end
22
+
23
+ if __FILE__ == $0
24
+ puts movie3d = Mochee::Movie3D.new('90%',5,10)
25
+
26
+ end
27
+
28
+ # polymorphism - 3dmovie and movie is a kind of relationship
29
+ # we can use 3dmovie on anywhere we expect to use movie this is polymorphism where
30
+ # we can use object A as like, object b, because OBJECT A is kind of
31
+ # object B - inherited
32
+
33
+
34
+ # movie.show_effect
35
+ #above method that is defined in child class doesnt work on super class movie objects because
36
+ #class Movie doesnt have this method. Ruby can only search methods UP on
37
+ #inhertiance hicharchy. only upwards, superclass and ancestors, never travel down
38
+ #on inheritance. show_effect is a new unique method defined in child class.
39
+
40
+ #quickly show you how you can use
41
+ #reflection(act of reflecting casting back)
42
+ #to look at the class Hierarchy
43
+ #(system of things ranked one above another)
44
+ #Class.superclass || Class.ancestors
45
+
46
+ # *take away*
47
+ # when you call a method on an object, ruby first tries
48
+ # to find that method in the objects class. If that method
49
+ # isnt found,ruby looks in the objects super class or module defined inside
50
+ #of superclass
51
+ # and its super class and so on all the way up to the
52
+ # top of the chain
53
+
54
+ #subclasses inherit behavior(method) and
55
+ #attributes(instance variables) from parents class.
56
+ #subclasses can also define their own unique behavior
57
+ #that wont be available in their parent class.
58
+
59
+
60
+ #subclasses can specialize(modify) behaviors(methods) by overwriting
61
+ #methods that are already defined in the parent class.
62
+ #and by using Super, they can modify existing method.
63
+
64
+ #subclasses have access to parent class's @instance variables
65
+
66
+ #we can call parent class methods on child class
67
+ #by using something called super
68
+
69
+ # class Animal
70
+ # attr_accessor :name
71
+
72
+ # def initialize(name) #receives name attribute from super and invokes initialize method
73
+ # @name = name
74
+ # end
75
+ # end
76
+
77
+ # class BadDog < Animal
78
+ # def initialize(age, name)
79
+ # super(name) #super invokes the whole initialize method in parent class and sends name attribute
80
+ # @age = age
81
+ # end
82
+ # end
83
+ # BadDog.new(2, "bear") => #<BadDog:0x007fb40b2beb68 @age=2, @name="bear">
84
+
85
+
86
+ # class Animal
87
+ # attr_accessor :name, :speed
88
+ # def initialize(name,speed)
89
+ # self.name = name
90
+ # self.speed = speed
91
+ # end
92
+
93
+ # end
94
+
95
+
96
+ # module Runnable
97
+ # attr_accessor :name,:speed
98
+
99
+ # def initialize(name,speed)
100
+ # self.name = name
101
+ # self.speed = speed
102
+ # end
103
+ # end
104
+
105
+ # class Cheetah
106
+ # include Runnable
107
+ # attr_accessor :power
108
+ # def initialize(name,speed,power)
109
+ # super(name,speed)
110
+
111
+ # @power = power
112
+ # end
113
+
114
+ # def stats
115
+ # puts self.name
116
+ # puts self.speed
117
+ # end
118
+
119
+ # end
120
+
121
+ # cheetah = Cheetah.new('cheetah',50,70)
122
+ # puts cheetah.name = "howdy"
123
+ # puts cheetah.stats
124
+
125
+ # animal = Animal.new('rocky',50)
126
+ # puts animal.inspect
127
+ # puts animal.name
128
+ # cheetah = Cheetah.new('cheetah',50,9000)
129
+ # puts cheetah.name, cheetah.speed,cheetah.power
130
+
131
+ # When called with specific arguments, eg. super(a, b), the specified arguments will be sent up the method lookup chain. Let's see a quick example:
132
+ # #super invokes same method(this time initialize method) its called on, so it calls on initialize of class Animal.
133
+
134
+ # This is similar to our previous example, with the difference being that super takes an argument, hence(this time on) the passed in argument is sent to the superclass. Consequently(as a result,outcome,therefore),
135
+ #in this example when a BadDog class is created the passed in name argument ("bear") is passed to the superclass and set to the @name instance variable.
136
+
137
+
138
+ # When you call super from within a method, it will search the inheritance hierarchy for a method(that called super)by the same name and then invoke it.
139
+
@@ -0,0 +1,29 @@
1
+ module MovieSystem
2
+ VERSION = 1.0
3
+
4
+ def self.info
5
+ puts "Movie system version #{VERSION}"
6
+ end
7
+
8
+ class Player
9
+ end
10
+ end
11
+
12
+ module GameSystem
13
+ VERSION = 2.0
14
+
15
+ def self.info
16
+ puts "Game system version #{VERSION}"
17
+ end
18
+
19
+ class Player
20
+ end
21
+ end
22
+
23
+
24
+ MovieSystem::VERSION
25
+ GameSystem::VERSION
26
+ MovieSystem.info
27
+ GameSystem.info
28
+ puts MovieSystem::Player.new
29
+ puts GameSystem::Player.new
@@ -0,0 +1,112 @@
1
+ require_relative 'dok2_and_quiet'
2
+ require_relative 'snack_bar'
3
+ require_relative 'movie'
4
+ require_relative 'movie3d'
5
+
6
+ module Mochee
7
+ class Playlist
8
+ attr_reader :movies, :name
9
+
10
+ def initialize(name)
11
+ @name = name.capitalize
12
+ @movies = []
13
+ puts "\n***#{@name}'s Playlist has been created***"
14
+ end
15
+
16
+ def name=(title)
17
+ @name = title.capitalize
18
+ puts "Name of playlist has been modified to #{@name}"
19
+ end
20
+
21
+ def load_file(from_file)
22
+ puts "\n::::Loding File #{from_file.capitalize}::::"
23
+ File.readlines(from_file).each do |line|
24
+ add_movie(Movie.convert(line))
25
+ end
26
+ end
27
+
28
+ def save_file(to_file="final_records")
29
+ puts "\n::::::Saving To File #{to_file.capitalize}::::::"
30
+ File.open(to_file,"a+") do |file|
31
+ @movies.sort.map.with_index(1) do |movie, i|
32
+ file.puts("\t#{i}.#{movie.title},#{movie.rank}")
33
+ end
34
+ time = Time.new
35
+ file.puts time.strftime("Printed on %m/%d/%Y at %I:%M%p")
36
+ end
37
+ end
38
+
39
+ def add_movie(movie)
40
+ @movies << movie
41
+ puts "::added #{movie.title}::"
42
+ end
43
+
44
+ def play(viewings)
45
+
46
+ puts "\n\n~~Playing #{@name}'s playlist:~~"
47
+
48
+ @movies.sort {|x,y| y.rank <=> x.rank}.each do |movie|
49
+ puts "\tTrack: #{movie}"
50
+ end
51
+
52
+ snacks = SnackBar::SNACKS
53
+ puts "\nThere are #{snacks.size} snacks available in the Snack Bar."
54
+ snacks.sort {|x,y| y.carbs <=> x.carbs }.map.with_index(1) {|snack,i| puts "\t#{i}. #{snack.name.capitalize} - #{snack.carbs} carbs"}
55
+
56
+ puts "\nStarting the Movie,Enjoy your show!!"
57
+ 1.upto(viewings) do |counter|
58
+ puts "\nViewing: #{counter}"
59
+ @movies.sort.each do |movie|
60
+ Dok2AndQuiet.review(movie)
61
+ snack = SnackBar.random
62
+ movie.ate_snack(snack)
63
+ puts movie
64
+ puts "**************************************************"
65
+ end
66
+ end
67
+ end
68
+
69
+ def total_playlist_carbs
70
+ @movies.reduce(0) {|sum,movie| sum + movie.carbs_consumed}
71
+ end
72
+
73
+ def total_playlist_snacks
74
+ @movies.reduce(0) {|sum, movie| sum + movie.snack_carbs.keys.size}
75
+ end
76
+
77
+
78
+ def print_stats
79
+ puts "\n\n\nPlayList #{@name.upcase!}'s Stats: #{total_playlist_carbs} carbs - #{total_playlist_snacks} snacks"
80
+
81
+ @movies.sort {|x,y| y.carbs_consumed <=> x.carbs_consumed }.map.with_index(1) do |movie,i|
82
+ puts "#{i}. #{movie.title} - #{movie.carbs_consumed} *total* grand carbs"
83
+ movie.expose_hash {|key| puts "\t #{key.name} - #{key.carbs} carbs"}
84
+ end
85
+
86
+ hits, flops = @movies.partition {|m| m.hit? }
87
+
88
+ puts "\nHits: "
89
+ hits.sort.each do |movie|
90
+ puts "\t#{movie}"
91
+ end
92
+
93
+
94
+ puts "\nFlops: "
95
+ flops.sort.each do |movie|
96
+ puts "\t#{movie}"
97
+ end
98
+ end
99
+ end
100
+ end
101
+
102
+ if __FILE__ == $0
103
+ playlist1 = Mochee::Playlist.new("Mastering Ruby 1")
104
+ movie1 = Mochee::Movie.new("Knowledge and Skill",10)
105
+ movie2 = Mochee::Movie.new("Focus",20)
106
+ playlist1.add_movie(movie1)
107
+ playlist1.add_movie(movie2)
108
+ # puts playlist1.movies
109
+ # puts playlist1.name
110
+ playlist1.play(3)
111
+ end
112
+
@@ -0,0 +1,26 @@
1
+ module Rankable
2
+
3
+ def thumbs_up
4
+ self.rank += 1
5
+ end
6
+
7
+ def thumbs_down
8
+ self.rank -= 1
9
+ end
10
+
11
+ def hit?
12
+ self.rank >= 10
13
+ end
14
+
15
+ def status
16
+ hit? ? "Hit" : "Flop"
17
+ end
18
+
19
+ def normalized_rank
20
+ self.rank / 2
21
+ end
22
+
23
+ def <=>(other)
24
+ other.rank <=> @rank
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ Snack = Struct.new(:name,:carbs)
2
+
3
+ module SnackBar
4
+ #constant - identifier with value that cannot be altered(changed)
5
+ SNACKS = [
6
+ Snack.new(:popcorn,20),
7
+ Snack.new(:candy,15),
8
+ Snack.new(:nachos,40),#class Snack
9
+ Snack.new(:pretzel,10),
10
+ Snack.new(:pop,5) #instance object created by class Snack
11
+ ]
12
+
13
+ def self.random
14
+ SNACKS.sample
15
+ end
16
+
17
+ end
18
+
19
+ if __FILE__ == $0
20
+ puts SnackBar::SNACKS
21
+ snack = SnackBar.random
22
+ puts "Enjoy your random #{snack.name} with #{snack.carbs} carbs"
23
+ end
24
+
25
+ #one snackbar in our program, so it is fit
26
+ #to make module instead of class
@@ -0,0 +1,80 @@
1
+ require 'mochee/movie'
2
+ require_relative 'spec_helper'
3
+
4
+ module Mochee
5
+ RSpec.describe Movie do
6
+ before do
7
+ $stdout = StringIO.new
8
+ end
9
+
10
+ context "Let's unit test Movie methods" do
11
+ before do
12
+ @initial_rank = 10
13
+ @movie = Movie.new('goonies',@initial_rank)
14
+ end
15
+
16
+ it "has a capitalized title" do
17
+ @movie.title.should_not == "goonies"
18
+ @movie.title.should == "Goonies"
19
+ end
20
+
21
+ it "has an initial rank" do
22
+ @movie.rank.should == 10
23
+ end
24
+
25
+ it "has a string representation" do
26
+ @movie.to_s.should == "Goonies with a rank of 10 (Hit)"
27
+ end
28
+
29
+ it "increases rank by 1 when given a thumbs up" do
30
+ @movie.thumbs_up
31
+ @movie.rank.should == @initial_rank + 1
32
+ end
33
+
34
+ it "decreases rank by 1 when given a thumbs down" do
35
+ @movie.thumbs_down
36
+ @movie.rank.should == @initial_rank - 1
37
+ end
38
+ end
39
+
40
+ context "can have default values" do
41
+ before do
42
+ @movie = Movie.new('goonies')
43
+ end
44
+
45
+ it "has a default rank of 0 if not initialized" do
46
+ @movie.rank.should == 0
47
+ end
48
+ end
49
+
50
+ context "with a rank of at least 10." do
51
+ before do
52
+ @movie = Movie.new('lawyer',10)
53
+ end
54
+
55
+ it "is a Hit" do
56
+ expect(@movie).to be_hit
57
+ end
58
+
59
+ it "has a HIT status" do
60
+ expect(@movie.status).to eq("Hit")
61
+ end
62
+
63
+
64
+ end
65
+
66
+ context 'with a rank less than 10.' do
67
+ before do
68
+ @movie = Movie.new('fantastic 4',5)
69
+ end
70
+
71
+ it "is not a hit" do
72
+ expect(@movie).to_not be_hit
73
+ end
74
+
75
+ it 'has a Flop status' do
76
+ expect(@movie.status).to eq('Flop')
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,37 @@
1
+ require 'mochee/playlist'
2
+
3
+ module Mochee
4
+ RSpec.describe Playlist do
5
+ before do
6
+ $stdout = StringIO.new
7
+ @playlist = Playlist.new('show me the money')
8
+ end
9
+
10
+ context '*being played with one movie.' do
11
+ before do
12
+ @initial_rank = 10
13
+ @movie = Movie.new('L4L',@initial_rank)
14
+ @playlist.add_movie(@movie)
15
+ end
16
+
17
+ it 'gives the movie a thumbs up when high number is rolled' do
18
+ allow(Dok2AndQuiet).to receive(:roll).and_return(5)
19
+ @playlist.play(1)
20
+
21
+ expect(@movie.rank).to eq(@initial_rank + 1)
22
+ end
23
+
24
+ it 'skips the movie when medium number is rolled' do
25
+ allow(Dok2AndQuiet).to receive(:roll).and_return(3)
26
+ @playlist.play(1)
27
+ expect(@movie.rank).to eq(@initial_rank)
28
+ end
29
+
30
+ it 'gives the movie a thumbs down if lower number is rolled' do
31
+ allow(Dok2AndQuiet).to receive(:roll).and_return(1)
32
+ @playlist.play(1)
33
+ expect(@movie.rank).to eq(@initial_rank - 1)
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,8 @@
1
+ RSpec.configure do |config|
2
+ config.expect_with :rspec do |c|
3
+ c.syntax = [:should, :expect] # default, enables both `should` and `expect`
4
+ end
5
+ config.mock_with :rspec do |c|
6
+ c.syntax = [:should, :expect] # default, enables both `should` and `expect`
7
+ end
8
+ end
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mochee
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Dany Han & Pragmatic Studio
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: "coding on Friday morning. Going to eat oatmeal soon ;) \n"
28
+ email: danyhan89@gmail.com
29
+ executables:
30
+ - consistencydriver
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - LICENSE
35
+ - README
36
+ - bin/amazing.rb
37
+ - bin/consistencydriver
38
+ - bin/movies.csv
39
+ - lib/mochee/dok2_and_quiet.rb
40
+ - lib/mochee/mixins.rb
41
+ - lib/mochee/movie.rb
42
+ - lib/mochee/movie3d.rb
43
+ - lib/mochee/namespaces.rb
44
+ - lib/mochee/playlist.rb
45
+ - lib/mochee/rankable.rb
46
+ - lib/mochee/snack_bar.rb
47
+ - spec/mochee/movie_spec.rb
48
+ - spec/mochee/playlist_spec.rb
49
+ - spec/mochee/spec_helper.rb
50
+ homepage: https://www.pragmaticstudios.com
51
+ licenses:
52
+ - belongs to Dany Han
53
+ metadata: {}
54
+ post_install_message:
55
+ rdoc_options: []
56
+ require_paths:
57
+ - bin
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '1.9'
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ requirements: []
70
+ rubyforge_project:
71
+ rubygems_version: 2.2.2
72
+ signing_key:
73
+ specification_version: 4
74
+ summary: Red Bean Mochee & Green Tea Mochee :)
75
+ test_files:
76
+ - spec/mochee/movie_spec.rb
77
+ - spec/mochee/playlist_spec.rb
78
+ - spec/mochee/spec_helper.rb