studio_game_gem 0.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
+ SHA256:
3
+ metadata.gz: fc86608a5add0ba796d238da258231f2f6a0dffbbc82d88002db070c1f0cb325
4
+ data.tar.gz: e6807d83fc8041532a11c594b1864e83006e24c326c690a495142461cbf8dd2c
5
+ SHA512:
6
+ metadata.gz: 2d70566ee2a4087c5f1e41ec3868d2d286d26b60d0088115018f1cdbc5a251fe0f64d5ff9b39993276ab736a08a409a1f4984afb55ae69b9bb841d524c5434c2
7
+ data.tar.gz: 6ed2c23018a2dae0c46edb1f49585ad8f99d68d27e2a5fd4deb47c66ed13173fe785994e20867325aa7858b278ce7eeea388e7dce5c9274f6d6c6434baa0fd32
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ # require 'playlist'
3
+ require_relative "./../lib/playlist"
data/files/movies.csv ADDED
@@ -0,0 +1,4 @@
1
+ Race,100
2
+ Race3,300
3
+ XXX,15
4
+ Abcd,18,three_d
@@ -0,0 +1,2 @@
1
+ XMan,100
2
+ XXX,15
@@ -0,0 +1,2 @@
1
+ Race3,300
2
+ Race,100
data/lib/movie.rb ADDED
@@ -0,0 +1,50 @@
1
+ require_relative './reviewer'
2
+ module StudioGame
3
+ class Movie
4
+ include Reviewer
5
+ attr_reader :title
6
+ attr_reader :rank
7
+ attr_reader :movie_type
8
+ def initialize(title, rank=0, movie_type=:two_d)
9
+ @title = title.capitalize
10
+ @rank = Integer(rank)
11
+ @movie_type = if movie_type.nil?
12
+ :two_d
13
+ else
14
+ movie_type
15
+ end
16
+ end
17
+ def self.from_csv(line)
18
+ name, rank, movie_type = line.split(",")
19
+ Movie.new(name, rank, movie_type)
20
+ end
21
+ def t_up
22
+ @rank += 1
23
+ end
24
+ def t_down
25
+ @rank -= 1
26
+ end
27
+ def hit?
28
+ @rank > 10
29
+ end
30
+ def play
31
+ "Playing movie #{@title}, that is having rank : #{@rank}"
32
+ end
33
+ def to_csv
34
+ "#{title},#{rank}"
35
+ end
36
+ def to_s
37
+ "Movie #{@title}, that is having rank : #{@rank}, movie_type: #{movie_type}"
38
+ end
39
+ def <=>(other_movie)
40
+ other_movie.rank <=> rank
41
+ end
42
+ end
43
+ $PROGRAM_NAME
44
+ $0
45
+ if $0 == __FILE__
46
+ m1 = Movie.new("race", 10, nil)
47
+ m1.play
48
+ puts m1
49
+ end
50
+ end
data/lib/movie3d.rb ADDED
@@ -0,0 +1,21 @@
1
+ require_relative "./movie"
2
+ module StudioGame
3
+ class Movie3D < Movie
4
+ def initialize(title, rank, factor_value)
5
+ super(title, rank)
6
+ @factor_value = factor_value
7
+ end
8
+ def three_d_factor
9
+ puts "Wow!" * @factor_value
10
+ end
11
+ end
12
+ end
13
+ if $0 == __FILE__
14
+ movie_3d = Movie3D.new("Abcd", 15, 2)
15
+ puts movie_3d.title
16
+ puts movie_3d.rank
17
+ puts movie_3d.three_d_factor
18
+ def get_super_class(object)
19
+ object.ancestors.select{|obj| obj.instance_of?(Class)}
20
+ end
21
+ end
@@ -0,0 +1,7 @@
1
+ module StudioGame
2
+ module MovieValidator
3
+ def self.valid_movie_object?(movie)
4
+ movie.instance_of?(Movie)
5
+ end
6
+ end
7
+ end
data/lib/playlist.rb ADDED
@@ -0,0 +1,67 @@
1
+ require_relative "./movie"
2
+ require_relative './movie_validator'
3
+ module StudioGame
4
+ class Playlist
5
+ attr_reader :title, :movies
6
+
7
+ def initialize(title)
8
+ @title = title
9
+ @movies = []
10
+ end
11
+
12
+ def load_from_file(file_name)
13
+ File.open(file_name) do |file|
14
+ file.each_line do |line|
15
+ add_movie Movie.from_csv(line)
16
+ end
17
+ end
18
+ end
19
+
20
+ def add_movie(movie)
21
+ if MovieValidator.valid_movie_object?(movie)
22
+ @movies.push(movie)
23
+ else
24
+ false
25
+ end
26
+ end
27
+
28
+ def include?(movie)
29
+ @movies.include? movie
30
+ end
31
+
32
+ def save
33
+ File.open("./../files/playlist_movies.csv", "w") do |file|
34
+ movies.each do |movie|
35
+ file.write movie.to_csv
36
+ file.write "\n"
37
+ end
38
+ end
39
+ end
40
+
41
+ def print_stats
42
+ puts "print_stats"
43
+ @movies.sort.each do |movie|
44
+ puts movie.to_s
45
+ end
46
+ end
47
+
48
+ def play(view_count)
49
+ puts "-------- Playing Playlist \"#{@title}\"--------"
50
+ 1.upto(Integer(view_count)) do |count|
51
+ puts "\nViewing Playlist #{@title} #{count} time"
52
+ @movies.each do |movie|
53
+ movie.review
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+
60
+ pl1 = StudioGame::Playlist.new("Raghvendra")
61
+ pl1.load_from_file(File.expand_path("./../../files/movies.csv",__FILE__))
62
+ puts "Please give the number of view_count..!"
63
+ view_count = gets.chomp
64
+ puts "view_count : #{view_count} ......TODO Use this with play!"
65
+ pl1.play(view_count)
66
+ puts "---------------"
67
+ pl1.print_stats
data/lib/reviewer.rb ADDED
@@ -0,0 +1,21 @@
1
+ module StudioGame
2
+ module Reviewer
3
+ def review
4
+ case roll_die
5
+ when 0..4
6
+ self.t_down
7
+ puts self.play
8
+ when 5..9
9
+ self.t_up
10
+ puts self.play
11
+ when (10..Float::INFINITY)
12
+ self.t_up
13
+ self.t_up
14
+ puts self.play
15
+ end
16
+ end
17
+ def roll_die
18
+ rand(0..20)
19
+ end
20
+ end
21
+ end
data/lib/validator.rb ADDED
@@ -0,0 +1,8 @@
1
+ # require './movie'
2
+ module StudioGame
3
+ module Validator
4
+ # def Validator.valid_movie_object?(movie)
5
+ # movie.instance_of?(Movie)
6
+ # end
7
+ end
8
+ end
data/lib/version.rb ADDED
@@ -0,0 +1,3 @@
1
+ module StudioGame
2
+ VERSION = "0.0.0"
3
+ end
metadata ADDED
@@ -0,0 +1,55 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: studio_game_gem
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - GE Team
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-06-20 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email:
15
+ - hr@gemsessence.com
16
+ executables:
17
+ - studio_game_gem
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - bin/studio_game_gem
22
+ - files/movies.csv
23
+ - files/movies_list1.csv
24
+ - files/playlist_movies.csv
25
+ - lib/movie.rb
26
+ - lib/movie3d.rb
27
+ - lib/movie_validator.rb
28
+ - lib/playlist.rb
29
+ - lib/reviewer.rb
30
+ - lib/validator.rb
31
+ - lib/version.rb
32
+ homepage: http://gemsessence.com
33
+ licenses:
34
+ - MIT
35
+ metadata: {}
36
+ post_install_message:
37
+ rdoc_options: []
38
+ require_paths:
39
+ - lib
40
+ required_ruby_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ required_rubygems_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ requirements: []
51
+ rubygems_version: 3.0.3
52
+ signing_key:
53
+ specification_version: 4
54
+ summary: Players
55
+ test_files: []