focusgem7 7.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d17688cc286a580468e913e85116401568dfb33f
4
+ data.tar.gz: 54bdc74c536e78b5e2fa3676b8bedfc51d24adc9
5
+ SHA512:
6
+ metadata.gz: 11646ede6ffe7cb0611ef5a05b967c7495bf30b01e549e64a559cecb9dc03f8f26e6db22521e2b587bddd20746c782f9cab2be79a4e1f5cd746f6b29ad160a66
7
+ data.tar.gz: bfd2d7d33b173dc3f14f284cbd9bfd1f568973c8a0b0b6b391a1d039b9d4b37e96c0196d4b2c85233a49304f32f24b8abf98bafc164dfebc6e1ae9574388aa31
data/LICENSE ADDED
@@ -0,0 +1 @@
1
+ copyrights@danyrubyhan2015
data/README ADDED
@@ -0,0 +1 @@
1
+ I WILL MASTER CREATING GEM!!!
@@ -0,0 +1,7 @@
1
+ module Driver
2
+ class License
3
+ def self.information
4
+ puts "good to go"
5
+ end
6
+ end
7
+ end
data/bin/focus ADDED
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/focus/playlist'
4
+
5
+ playlist = Focus::Playlist.new("Making knowledge MINE")
6
+
7
+ puts __FILE__
8
+ puts File.dirname(__FILE__)
9
+ puts __dir__
10
+ puts File.join(File.dirname(__FILE__),'movies.csv')
11
+
12
+ default_movies_list =
13
+ File.join(File.dirname(__FILE__), 'movies.csv')
14
+ playlist.load_file(ARGV.shift || default_movies_list)
15
+ #Whenever you type a command that uses a file,
16
+ #the working directory(where you called the script from)
17
+ #will be the first place your shell looks to find the file.
18
+ #therefore, you need to provide absolute path for 'avengers'
19
+
20
+ movie3d = Focus::Movie3D.new('95%',5,10)
21
+ playlist.add_movie(movie3d)
22
+
23
+ loop do
24
+ puts "\nHow many viewings? ('quit' to exit)"
25
+ answer = gets.chomp.downcase #get string, gets next line from $stdin
26
+ #chomp removes any characters hanging onto end of string
27
+ case answer #answer is string because its from $stdin, you type in as string
28
+ when 'quit','exit'
29
+ playlist.print_stats
30
+ playlist.save_file
31
+ break
32
+ when /^\d*$/
33
+ puts "Enjoy your #{answer} viewings, achiever!"
34
+ playlist.play(answer.to_i)
35
+ else
36
+ puts "\nPlease enter a number or 'quit' to exit "
37
+ end
38
+ end
39
+
40
+
41
+
42
+
43
+
44
+
45
+
data/bin/movies.csv ADDED
@@ -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 = 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,59 @@
1
+ require_relative 'rankable'
2
+
3
+ module Focus
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 = Focus::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
+
59
+ end
@@ -0,0 +1,143 @@
1
+ require_relative 'movie'
2
+
3
+ module Focus
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 File.join(File.dirname(__FILE__), 'kiwi.kiwi')
25
+ # movie3d = Movie3D.new('90%',5,10)
26
+
27
+ # puts movie3d.cellphone
28
+ # puts movie3d.baby
29
+ # puts movie3d.scared
30
+ end
31
+
32
+ # polymorphism - 3dmovie and movie is a kind of relationship
33
+ # we can use 3dmovie on anywhere we expect to use movie this is polymorphism where
34
+ # we can use object A as like, object b, because OBJECT A is kind of
35
+ # object B - inherited
36
+
37
+
38
+ # movie.show_effect
39
+ #above method that is defined in child class doesnt work on super class movie objects because
40
+ #class Movie doesnt have this method. Ruby can only search methods UP on
41
+ #inhertiance hicharchy. only upwards, superclass and ancestors, never travel down
42
+ #on inheritance. show_effect is a new unique method defined in child class.
43
+
44
+ #quickly show you how you can use
45
+ #reflection(act of reflecting casting back)
46
+ #to look at the class Hierarchy
47
+ #(system of things ranked one above another)
48
+ #Class.superclass || Class.ancestors
49
+
50
+ # *take away*
51
+ # when you call a method on an object, ruby first tries
52
+ # to find that method in the objects class. If that method
53
+ # isnt found,ruby looks in the objects super class or module defined inside
54
+ #of superclass
55
+ # and its super class and so on all the way up to the
56
+ # top of the chain
57
+
58
+ #subclasses inherit behavior(method) and
59
+ #attributes(instance variables) from parents class.
60
+ #subclasses can also define their own unique behavior
61
+ #that wont be available in their parent class.
62
+
63
+
64
+ #subclasses can specialize(modify) behaviors(methods) by overwriting
65
+ #methods that are already defined in the parent class.
66
+ #and by using Super, they can modify existing method.
67
+
68
+ #subclasses have access to parent class's @instance variables
69
+
70
+ #we can call parent class methods on child class
71
+ #by using something called super
72
+
73
+ # class Animal
74
+ # attr_accessor :name
75
+
76
+ # def initialize(name) #receives name attribute from super and invokes initialize method
77
+ # @name = name
78
+ # end
79
+ # end
80
+
81
+ # class BadDog < Animal
82
+ # def initialize(age, name)
83
+ # super(name) #super invokes the whole initialize method in parent class and sends name attribute
84
+ # @age = age
85
+ # end
86
+ # end
87
+ # BadDog.new(2, "bear") => #<BadDog:0x007fb40b2beb68 @age=2, @name="bear">
88
+
89
+
90
+ # class Animal
91
+ # attr_accessor :name, :speed
92
+ # def initialize(name,speed)
93
+ # self.name = name
94
+ # self.speed = speed
95
+ # end
96
+
97
+ # end
98
+
99
+
100
+ # module Runnable
101
+ # attr_accessor :name,:speed
102
+
103
+ # def initialize(name,speed)
104
+ # self.name = name
105
+ # self.speed = speed
106
+ # end
107
+ # end
108
+
109
+ # class Cheetah
110
+ # include Runnable
111
+ # attr_accessor :power
112
+ # def initialize(name,speed,power)
113
+ # super(name,speed)
114
+
115
+ # @power = power
116
+ # end
117
+
118
+ # def stats
119
+ # puts self.name
120
+ # puts self.speed
121
+ # end
122
+
123
+ # end
124
+
125
+ # cheetah = Cheetah.new('cheetah',50,70)
126
+ # puts cheetah.name = "howdy"
127
+ # puts cheetah.stats
128
+
129
+ # animal = Animal.new('rocky',50)
130
+ # puts animal.inspect
131
+ # puts animal.name
132
+ # cheetah = Cheetah.new('cheetah',50,9000)
133
+ # puts cheetah.name, cheetah.speed,cheetah.power
134
+
135
+ # 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:
136
+ # #super invokes same method(this time initialize method) its called on, so it calls on initialize of class Animal.
137
+
138
+ # 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),
139
+ #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.
140
+
141
+
142
+ # 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.
143
+
@@ -0,0 +1,31 @@
1
+ module MovieSystem
2
+ VERSION = 1.0 #constant variable
3
+
4
+ def self.info #module method
5
+ puts "Moviesystem version #{VERSION}"
6
+ end
7
+
8
+ class Player
9
+ end
10
+ end
11
+
12
+ module GameSystem #in a module you can have
13
+ VERSION = 2.0 # constants
14
+
15
+ def self.info #module methods
16
+ puts "GameSystem version #{VERSION}"
17
+ end
18
+
19
+ class Player #module classes
20
+ end
21
+ end
22
+
23
+ puts MovieSystem::VERSION
24
+ puts GameSystem::VERSION
25
+ MovieSystem.info
26
+ GameSystem.info
27
+ puts MovieSystem::Player.new #module moviesystem::class Player.new
28
+ puts GameSystem::Player.new #module gamesystem scope resolution :: class player.new
29
+
30
+
31
+
@@ -0,0 +1,113 @@
1
+ require_relative 'dok2_and_quiet'
2
+ require_relative 'snack_bar'
3
+ require_relative 'movie'
4
+ require_relative 'movie3d'
5
+
6
+ module Focus
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
+
103
+ if __FILE__ == $0
104
+ playlist1 = Focus::Playlist.new("Mastering Ruby 1")
105
+ movie1 = Focus::Movie.new("Knowledge and Skill",10)
106
+ movie2 = Focus::Movie.new("Focus",20)
107
+ playlist1.add_movie(movie1)
108
+ playlist1.add_movie(movie2)
109
+ # puts playlist1.movies
110
+ # puts playlist1.name
111
+ playlist1.play(3)
112
+ end
113
+
@@ -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,27 @@
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
+ snacks = SnackBar::SNACKS
21
+ puts snacks
22
+ snack = SnackBar.random
23
+ puts "Enjoy your random #{snack.name} with #{snack.carbs} carbs"
24
+ end
25
+
26
+ #one snackbar in our program, so it is fit
27
+ #to make module instead of class
@@ -0,0 +1,80 @@
1
+ require 'focus/movie'
2
+ require_relative 'spec_helper'
3
+
4
+ module Focus
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 'focus/playlist'
2
+
3
+ module Focus
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: focusgem7
3
+ version: !ruby/object:Gem::Version
4
+ version: 7.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: I WILL MASTER CREATING GEM!!!
28
+ email: focus@gmail.com
29
+ executables:
30
+ - focus
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - LICENSE
35
+ - README
36
+ - bin/driver/driver.rb
37
+ - bin/focus
38
+ - bin/movies.csv
39
+ - lib/focus/dok2_and_quiet.rb
40
+ - lib/focus/mixins.rb
41
+ - lib/focus/movie.rb
42
+ - lib/focus/movie3d.rb
43
+ - lib/focus/namespaces.rb
44
+ - lib/focus/playlist.rb
45
+ - lib/focus/rankable.rb
46
+ - lib/focus/snack_bar.rb
47
+ - spec/focus/movie_spec.rb
48
+ - spec/focus/playlist_spec.rb
49
+ - spec/focus/spec_helper.rb
50
+ homepage: https://www.pragmaticstudio.com
51
+ licenses:
52
+ - copyrights@danyrubyhan2015
53
+ metadata: {}
54
+ post_install_message:
55
+ rdoc_options: []
56
+ require_paths:
57
+ - lib
58
+ - bin
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: Plays movies and reviews them
75
+ test_files:
76
+ - spec/focus/movie_spec.rb
77
+ - spec/focus/playlist_spec.rb
78
+ - spec/focus/spec_helper.rb