cdorganizer 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 +7 -0
- data/cds/mycds.txt +12 -0
- data/genres.txt +8 -0
- data/lib/cd_organizer.rb +62 -0
- data/lib/genres.rb +4 -0
- data/lib/main.rb +101 -0
- data/lib/menu.rb +9 -0
- metadata +49 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: aa4b434035147f20ee64f5f93e2572185530995c
|
|
4
|
+
data.tar.gz: 38af5440f5158a8717182a75e6e4c221e144da1d
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 000d434848dc69c2ae485642f474fba8eceed793d2a84190fe1aee7f1e6c5b93f18166a569c76847743947a26d0e39da031c74c972ff735111f24922186f25b5
|
|
7
|
+
data.tar.gz: cc1cf9ff3d6bbfebb745795c2e532f67784b5dffcce3ecdba8aea0fccc29c285727f059997d40b1bbbae37a9110bba09ce95f33f1e955e033c278abeb3542123
|
data/cds/mycds.txt
ADDED
data/genres.txt
ADDED
data/lib/cd_organizer.rb
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
class CDOrganizer
|
|
2
|
+
attr_accessor :cd_list, :table_header_stuff
|
|
3
|
+
def initialize
|
|
4
|
+
Struct.new("CD", :artist, :title, :year, :genre)
|
|
5
|
+
@cd_list = []
|
|
6
|
+
@table_header_stuff = 'Artist Title Genre Year'
|
|
7
|
+
end
|
|
8
|
+
def add(artist, title, year, genre)
|
|
9
|
+
@cd_list << Struct::CD.new(artist.upcase, title.upcase, year, genre)
|
|
10
|
+
@cd_list.sort! { |cd, other| [cd.artist, other.year.to_i] <=> [other.artist, cd.year.to_i] }
|
|
11
|
+
end
|
|
12
|
+
def delete(artist, title)
|
|
13
|
+
@cd_list.delete_if { |cd| cd.artist == artist.upcase && cd.title == title.upcase }
|
|
14
|
+
end
|
|
15
|
+
def search(input, flag)
|
|
16
|
+
puts
|
|
17
|
+
puts @table_header_stuff
|
|
18
|
+
count = 0
|
|
19
|
+
@cd_list.each do |cd|
|
|
20
|
+
case flag
|
|
21
|
+
when 'artist'
|
|
22
|
+
if cd.artist =~ /#{input}/i
|
|
23
|
+
puts build_cd_output(cd)
|
|
24
|
+
count += 1
|
|
25
|
+
end
|
|
26
|
+
when 'genre'
|
|
27
|
+
if cd.genre.to_i == input.to_i
|
|
28
|
+
puts build_cd_output(cd)
|
|
29
|
+
count += 1
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
puts
|
|
34
|
+
puts "#{count} record(s) found."
|
|
35
|
+
puts
|
|
36
|
+
end
|
|
37
|
+
def save(filename)
|
|
38
|
+
file = File.open("../cds/#{filename}",'w')
|
|
39
|
+
@cd_list.each { |cd| file.write("#{cd.artist}_#{cd.title}_#{cd.genre}_#{cd.year}\n") }
|
|
40
|
+
system('clear')
|
|
41
|
+
file.close
|
|
42
|
+
end
|
|
43
|
+
def to_s
|
|
44
|
+
puts
|
|
45
|
+
puts @table_header_stuff
|
|
46
|
+
@cd_list.each do |cd|
|
|
47
|
+
puts build_cd_output(cd)
|
|
48
|
+
end
|
|
49
|
+
puts
|
|
50
|
+
end
|
|
51
|
+
def build_cd_output(cd)
|
|
52
|
+
print_space = 17
|
|
53
|
+
s = ''
|
|
54
|
+
s << cd.artist
|
|
55
|
+
(print_space-cd.artist.length).times { s << ' ' }
|
|
56
|
+
s << cd.title
|
|
57
|
+
(print_space-cd.title.length).times { s << ' ' }
|
|
58
|
+
s << cd.genre.to_s
|
|
59
|
+
(print_space-cd.genre.to_s.length).times { s << ' ' }
|
|
60
|
+
s << cd.year.to_s
|
|
61
|
+
end
|
|
62
|
+
end
|
data/lib/genres.rb
ADDED
data/lib/main.rb
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
|
|
3
|
+
require_relative 'menu.rb'
|
|
4
|
+
require_relative 'cd_organizer.rb'
|
|
5
|
+
require_relative 'genres.rb'
|
|
6
|
+
|
|
7
|
+
print_space = 10
|
|
8
|
+
saved = true
|
|
9
|
+
system 'clear'
|
|
10
|
+
|
|
11
|
+
cd_organizer = CDOrganizer.new
|
|
12
|
+
print 'Please enter the filename for your CD storage collection.
|
|
13
|
+
If you do not yet have a collection, enter a filename where you wish your CDs to be stored.
|
|
14
|
+
Filename: '
|
|
15
|
+
|
|
16
|
+
# check if file exists
|
|
17
|
+
filename = gets.chomp
|
|
18
|
+
if File.file? "../cds/#{filename}"
|
|
19
|
+
File.open("../cds/#{filename}", 'r').each_line do |line|
|
|
20
|
+
begin
|
|
21
|
+
info = line.split('_')
|
|
22
|
+
cd_organizer.add(info[0],info[1],info[3],info[2])
|
|
23
|
+
rescue NoMethodError
|
|
24
|
+
# do nothing, skip this line
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
cd_organizer.to_s
|
|
28
|
+
else
|
|
29
|
+
puts
|
|
30
|
+
puts "There are no CDs in the collection"
|
|
31
|
+
puts
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
loop do
|
|
35
|
+
print_menu
|
|
36
|
+
case gets.chomp.to_i
|
|
37
|
+
when 1
|
|
38
|
+
print 'Enter the artist: '
|
|
39
|
+
artist = gets.chomp
|
|
40
|
+
print 'Enter the CD title: '
|
|
41
|
+
title = gets.chomp
|
|
42
|
+
print 'Enter the year of the CD: '
|
|
43
|
+
year = gets.chomp.to_i
|
|
44
|
+
print_genres
|
|
45
|
+
print 'Enter the genre number for this CD: '
|
|
46
|
+
genre = gets.chomp.to_i
|
|
47
|
+
cd_organizer.add(artist,title,year,genre)
|
|
48
|
+
cd_organizer.to_s
|
|
49
|
+
saved = false
|
|
50
|
+
when 2
|
|
51
|
+
cd_organizer.to_s
|
|
52
|
+
when 3
|
|
53
|
+
puts 'Search by (1) Artist or (2) Genre?'
|
|
54
|
+
case gets.chomp.to_i
|
|
55
|
+
when 1
|
|
56
|
+
print 'Enter Arist (all or partial name): '
|
|
57
|
+
input = gets.chomp
|
|
58
|
+
cd_organizer.search(input, 'artist')
|
|
59
|
+
when 2
|
|
60
|
+
print_genres
|
|
61
|
+
print 'Enter Genre # for which to search: '
|
|
62
|
+
input = gets.chomp.to_i
|
|
63
|
+
cd_organizer.search(input, 'genre')
|
|
64
|
+
end
|
|
65
|
+
when 4
|
|
66
|
+
puts 'Enter the title and artist of the CD to delete'
|
|
67
|
+
print 'Artist: '
|
|
68
|
+
artist = gets.chomp
|
|
69
|
+
print 'Title: '
|
|
70
|
+
title = gets.chomp
|
|
71
|
+
orig_size = cd_organizer.cd_list.length
|
|
72
|
+
new_size = cd_organizer.delete(artist,title).length
|
|
73
|
+
if orig_size == new_size
|
|
74
|
+
puts
|
|
75
|
+
puts "**#{artist.upcase}/#{title.upcase} was not found in the list**"
|
|
76
|
+
cd_organizer.to_s
|
|
77
|
+
else
|
|
78
|
+
cd_organizer.to_s
|
|
79
|
+
saved = false
|
|
80
|
+
end
|
|
81
|
+
when 5
|
|
82
|
+
cd_organizer.save(filename)
|
|
83
|
+
puts
|
|
84
|
+
puts '**Save Successful!**'
|
|
85
|
+
puts
|
|
86
|
+
saved = true
|
|
87
|
+
when 9
|
|
88
|
+
if !saved
|
|
89
|
+
puts '**WARNING** Your CD collection has changed since you last saved to disk.'
|
|
90
|
+
print 'Save your changes? (y/n): '
|
|
91
|
+
case gets.chomp
|
|
92
|
+
when 'y','Y','yes','Yes','YES'
|
|
93
|
+
cd_organizer.save(filename)
|
|
94
|
+
break
|
|
95
|
+
when 'n','N','no','No','NO'
|
|
96
|
+
break
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
break
|
|
100
|
+
end
|
|
101
|
+
end
|
data/lib/menu.rb
ADDED
metadata
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: cdorganizer
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Logan Bond
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2016-10-13 00:00:00.000000000 Z
|
|
12
|
+
dependencies: []
|
|
13
|
+
description: A second attempt at gems with implementation of a CD Organizer
|
|
14
|
+
email: bon56277@obu.edu
|
|
15
|
+
executables: []
|
|
16
|
+
extensions: []
|
|
17
|
+
extra_rdoc_files: []
|
|
18
|
+
files:
|
|
19
|
+
- cds/mycds.txt
|
|
20
|
+
- genres.txt
|
|
21
|
+
- lib/cd_organizer.rb
|
|
22
|
+
- lib/genres.rb
|
|
23
|
+
- lib/main.rb
|
|
24
|
+
- lib/menu.rb
|
|
25
|
+
homepage:
|
|
26
|
+
licenses:
|
|
27
|
+
- Nonstandard
|
|
28
|
+
metadata: {}
|
|
29
|
+
post_install_message:
|
|
30
|
+
rdoc_options: []
|
|
31
|
+
require_paths:
|
|
32
|
+
- lib
|
|
33
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
34
|
+
requirements:
|
|
35
|
+
- - ">="
|
|
36
|
+
- !ruby/object:Gem::Version
|
|
37
|
+
version: '0'
|
|
38
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
39
|
+
requirements:
|
|
40
|
+
- - ">="
|
|
41
|
+
- !ruby/object:Gem::Version
|
|
42
|
+
version: '0'
|
|
43
|
+
requirements: []
|
|
44
|
+
rubyforge_project:
|
|
45
|
+
rubygems_version: 2.6.6
|
|
46
|
+
signing_key:
|
|
47
|
+
specification_version: 4
|
|
48
|
+
summary: An implementation of a CD Organizer
|
|
49
|
+
test_files: []
|