curricula 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 863a71fc9ec248e590f4547141a0b45d50b9add5
4
- data.tar.gz: fa5d9dd1bf8e358283fdf1530eb4f3f4d3e9d62e
3
+ metadata.gz: 26cc57f5199a90d580f3541b80502c703d5b09ff
4
+ data.tar.gz: c994ad2722c81170f87a8392cd9db55d63a7b0fc
5
5
  SHA512:
6
- metadata.gz: 57a9f4a9e105232abcd1946b4da42af625bc51d58d1b9762b7ca2ce33efd5dc9073ca87655d3bf0d2c7f5e80f891ef49ded01f2fbaa90296af38ad7e6b2f554a
7
- data.tar.gz: d3b5812b29a0c9fbd191439f6a0f88daeb591c1a14e580ef40c790d747de8b0e7482ae9ec5483a21827d95e4d861669d5ebdf1b4e81d38ed04eae89e84a815b6
6
+ metadata.gz: 922778ca9071d1f81bd7b5915b587d82e5fbdffe20ea67f3662e9096f9c0b5ba6859b96834460f859ce39248eaf2291ea0a6608f4733ee08d833bc7b87f83965
7
+ data.tar.gz: f7c5a85865c4efbcf70347eff6f7610cb9c6c21357fe13bcfd79b3eec978bb96b2bfdb3f28af7c6c4df001bc7ebd645ee01415c0469dd6d0498c0b171d1c2fd2
@@ -1,3 +1,3 @@
1
1
  module Curricula
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/curricula.rb CHANGED
@@ -6,12 +6,13 @@ module Curricula
6
6
  class Course
7
7
 
8
8
  attr_reader :name, :hours
9
- attr_accessor :prereqs
9
+ attr_accessor :prereqs, :cruciality
10
10
 
11
11
  def initialize name, hours
12
12
  @name = name
13
13
  @hours = hours
14
14
  @prereqs = []
15
+ @cruciality = 0
15
16
  end
16
17
 
17
18
  def graph_edges
@@ -51,6 +52,10 @@ module Curricula
51
52
  @courses.each_value.map(&:graph_edges).flatten(1).reject &:empty?
52
53
  end
53
54
 
55
+ def cruciality
56
+ @courses.each_value.map { |course| [course.name,course.cruciality] }
57
+ end
58
+
54
59
  private
55
60
 
56
61
  def process
@@ -64,6 +69,7 @@ module Curricula
64
69
  Spreadsheet.open(@spreadsheet).worksheets.first.each do |row|
65
70
  if row[1]
66
71
  @courses[row.last].prereqs << @courses[row.first]
72
+ increase_cruciality @courses[row.first], @courses[row.last]
67
73
  else
68
74
  @courses[row.first] = Course.new row.first, row.last
69
75
  end
@@ -71,11 +77,16 @@ module Curricula
71
77
  end
72
78
 
73
79
  def course_hours course, visited = []
74
- raise :circular if visited.include? course
80
+ error :circular if visited.include? course
75
81
  visited << course
76
82
  course.hours + course.prereqs.map{ |prereq| course_hours(prereq, visited).to_i }.reduce(:+).to_i
77
83
  end
78
-
84
+
85
+ def increase_cruciality course, prerequisite
86
+ prerequisite.cruciality += course.hours
87
+ prerequisite.prereqs.each { |prereq| increase_cruciality @courses[course], prereq }
88
+ end
89
+
79
90
  def error name
80
91
  case name
81
92
  when :format
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: curricula
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ricardo Piro-Rael