workpattern 0.3.1 → 0.3.2

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,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YWVlYjQ0YTY1NzVhMzRjN2QzZWZkNzZjZTBmOTM4ODAyNjFmZDFiYw==
5
+ data.tar.gz: !binary |-
6
+ NjBhMzUyNWZkYWYzMzk3ZmIyN2ZlNTM1ZjcwMGQ5YjZjM2QwYzFlNA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ NDllNzljYmEyMzBiMjY3ZDIwYWNhMWE0YWQwNWUxNTMxZGQ3ZDQzNTdmNGU2
10
+ YWI1OGYwNDZiOTU2NWViZWZmYjRkZmQzY2I5NDg1ODhmNjhjOGUyYjUwMDFh
11
+ MzllYTIwNGQ3ODY4NTMxNWNmZTk1MDEwNjU2ZTlmNjliNjU2M2Y=
12
+ data.tar.gz: !binary |-
13
+ ZjgwZmM2ZTU1YjE0MzhkYTVkYzU2MTU0YmRhOWZkYzIyZDdhNzZmNmY0MWI3
14
+ OWNkN2MwNmMzOWIxYjg1ODE5MDM3MzFhYWIzMTJjOTMwMjMwMzlkMWViZWU0
15
+ MTMzYWFmMzRiZWEzMzA1NmE3YTllMTBhMmJlMzA3ZmJkYWQ0YTg=
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  doc
2
2
  pkg
3
3
  .yardoc
4
+ ./Gemfile.lock
data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ ## Workpattern v0.3.2 (Mar 14, 2013) ##
2
+
3
+ * Changed methods on Hour module so as to not clash with Rails (#10) * Barrie Callender *
4
+ * Applied DRY principle to workpattern method in Workpattern class * Barrie Callender *
5
+ * Removed file from emacs backup * Barrie Callender *
6
+
1
7
  ## Workpattern v0.3.1 (Oct 14, 2012) ##
2
8
 
3
9
  * RDOC documentation not right on rubydoc.info (#5) * Barrie Callender *
data/Gemfile.lock CHANGED
@@ -1,12 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- workpattern (0.3.0.beta)
4
+ workpattern (0.3.2)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
8
8
  specs:
9
- rake (0.9.2.2)
9
+ rake (0.9.6)
10
10
 
11
11
  PLATFORMS
12
12
  ruby
@@ -74,17 +74,17 @@ module Workpattern
74
74
  def workpattern(start_time,finish_time,type)
75
75
 
76
76
  if start_time.hour==finish_time.hour
77
- @values[start_time.hour]=@values[start_time.hour].workpattern(start_time.min,finish_time.min,type)
77
+ @values[start_time.hour]=@values[start_time.hour].wp_workpattern(start_time.min,finish_time.min,type)
78
78
  else
79
79
  test_hour=start_time.hour
80
- @values[test_hour]=@values[test_hour].workpattern(start_time.min,59,type)
80
+ @values[test_hour]=@values[test_hour].wp_workpattern(start_time.min,59,type)
81
81
 
82
82
  while ((test_hour+1)<finish_time.hour)
83
83
  test_hour+=1
84
- @values[test_hour]=@values[test_hour].workpattern(0,59,type)
84
+ @values[test_hour]=@values[test_hour].wp_workpattern(0,59,type)
85
85
  end
86
86
 
87
- @values[finish_time.hour]=@values[finish_time.hour].workpattern(0,finish_time.min,type)
87
+ @values[finish_time.hour]=@values[finish_time.hour].wp_workpattern(0,finish_time.min,type)
88
88
  end
89
89
  set_attributes
90
90
  end
@@ -166,15 +166,15 @@ module Workpattern
166
166
  end
167
167
 
168
168
  if (start_hour==finish_hour)
169
- retval=@values[start_hour].minutes(start_min,finish_min)
169
+ retval=@values[start_hour].wp_minutes(start_min,finish_min)
170
170
  else
171
171
 
172
- retval=@values[start_hour].minutes(start_min,59)
172
+ retval=@values[start_hour].wp_minutes(start_min,59)
173
173
  while (start_hour+1<finish_hour)
174
- retval+=@values[start_hour+1].total
174
+ retval+=@values[start_hour+1].wp_total
175
175
  start_hour+=1
176
176
  end
177
- retval+=@values[finish_hour].minutes(0,finish_min)
177
+ retval+=@values[finish_hour].wp_minutes(0,finish_min)
178
178
  end
179
179
 
180
180
  return retval
@@ -191,11 +191,11 @@ module Workpattern
191
191
  @last_min=nil
192
192
  @total=0
193
193
  0.upto(@hours-1) {|index|
194
- @first_hour=index if ((@first_hour.nil?) && (@values[index].total!=0))
195
- @first_min=@values[index].first if ((@first_min.nil?) && (!@values[index].first.nil?))
196
- @last_hour=index if (@values[index].total!=0)
197
- @last_min=@values[index].last if (@values[index].total!=0)
198
- @total+=@values[index].total
194
+ @first_hour=index if ((@first_hour.nil?) && (@values[index].wp_total!=0))
195
+ @first_min=@values[index].wp_first if ((@first_min.nil?) && (!@values[index].wp_first.nil?))
196
+ @last_hour=index if (@values[index].wp_total!=0)
197
+ @last_min=@values[index].wp_last if (@values[index].wp_total!=0)
198
+ @total+=@values[index].wp_total
199
199
  }
200
200
  end
201
201
 
@@ -247,17 +247,17 @@ module Workpattern
247
247
  duration=0
248
248
  time=first_working_minute(time)
249
249
  else
250
- minutes_this_hour=@values[time.hour].minutes(0,time.min-1)
250
+ minutes_this_hour=@values[time.hour].wp_minutes(0,time.min-1)
251
251
  this_hour=time.hour
252
252
  until (duration==0)
253
253
  if (minutes_this_hour<duration.abs)
254
254
  duration+=minutes_this_hour
255
255
  time = time - (MINUTE*time.min) - HOUR
256
256
  this_hour-=1
257
- minutes_this_hour=@values[this_hour].total
257
+ minutes_this_hour=@values[this_hour].wp_total
258
258
  else
259
259
  next_hour=(time.min==0)
260
- time,duration=@values[this_hour].calc(time,duration, next_hour)
260
+ time,duration=@values[this_hour].wp_calc(time,duration, next_hour)
261
261
  end
262
262
  end
263
263
  end
@@ -279,9 +279,9 @@ module Workpattern
279
279
  result_date= time.next_day - (HOUR*time.hour) - (MINUTE*time.min)
280
280
  duration = duration - available_minutes
281
281
  else
282
- total=@values[time.hour].minutes(time.min,59)
282
+ total=@values[time.hour].wp_minutes(time.min,59)
283
283
  if (total==duration) # this hour satisfies
284
- result_date=time - (MINUTE*time.min) + (MINUTE*@values[time.hour].last) + MINUTE
284
+ result_date=time - (MINUTE*time.min) + (MINUTE*@values[time.hour].wp_last) + MINUTE
285
285
  duration = 0
286
286
  else
287
287
  result_date = time
@@ -290,9 +290,9 @@ module Workpattern
290
290
  duration-=total
291
291
  result_date=result_date + HOUR - (MINUTE*result_date.min)
292
292
  else
293
- result_date,duration=@values[result_date.hour].calc(result_date,duration)
293
+ result_date,duration=@values[result_date.hour].wp_calc(result_date,duration)
294
294
  end
295
- total=@values[result_date.hour].total
295
+ total=@values[result_date.hour].wp_total
296
296
  end
297
297
  end
298
298
  end
@@ -317,7 +317,7 @@ module Workpattern
317
317
  # @return [Integer] number of remaining working minutes
318
318
  #
319
319
  def minutes_left_in_hour(start)
320
- return @values[start.hour].diff(start.min,60)
320
+ return @values[start.hour].wp_diff(start.min,60)
321
321
  end
322
322
 
323
323
  end
@@ -10,8 +10,8 @@ module Workpattern
10
10
  #
11
11
  # @return [Integer] working minutes in the hour
12
12
  #
13
- def total
14
- return minutes(0,59)
13
+ def wp_total
14
+ return wp_minutes(0,59)
15
15
  end
16
16
 
17
17
  # Sets the minutes to either working (type=1) or resting (type=0)
@@ -20,17 +20,17 @@ module Workpattern
20
20
  # @param [Integer] finish minute at end of range
21
21
  # @param [Integer] type defines whether working (1) or resting (0)
22
22
  #
23
- def workpattern(start,finish,type)
24
- return working(start,finish) if type==1
25
- return resting(start,finish) if type==0
23
+ def wp_workpattern(start,finish,type)
24
+ return wp_working(start,finish) if type==1
25
+ return wp_resting(start,finish) if type==0
26
26
  end
27
27
 
28
28
  # Returns the first working minute in the hour or 60 if there are no working minutes
29
29
  #
30
30
  # @return [Integer] first working minute or 60 if none found
31
31
  #
32
- def first
33
- 0.upto(59) {|minute| return minute if self.minutes(minute,minute)==1}
32
+ def wp_first
33
+ 0.upto(59) {|minute| return minute if self.wp_minutes(minute,minute)==1}
34
34
  return nil
35
35
  end
36
36
 
@@ -38,8 +38,8 @@ module Workpattern
38
38
  #
39
39
  # @return [Integer] last working minute or nil if none found
40
40
  #
41
- def last
42
- 59.downto(0) {|minute| return minute if self.minutes(minute,minute)==1}
41
+ def wp_last
42
+ 59.downto(0) {|minute| return minute if self.wp_minutes(minute,minute)==1}
43
43
  return nil
44
44
  end
45
45
 
@@ -48,8 +48,8 @@ module Workpattern
48
48
  # @param [Integer] start is the minute being tested
49
49
  # @return [Boolean] true if minute is working, otherwise false
50
50
  #
51
- def working?(start)
52
- return true if minutes(start,start)==1
51
+ def wp_working?(start)
52
+ return true if wp_minutes(start,start)==1
53
53
  return false
54
54
  end
55
55
 
@@ -59,9 +59,9 @@ module Workpattern
59
59
  # @param [Integer] finish last minute in range
60
60
  # @return [Integer] number of minutes from <tt>start</tt> to <tt>finish</tt> inclusive
61
61
  #
62
- def minutes(start,finish)
62
+ def wp_minutes(start,finish)
63
63
  start,finish=finish,start if start > finish
64
- return (self & mask(start,finish)).to_s(2).count('1')
64
+ return (self & wp_mask(start,finish)).to_s(2).count('1')
65
65
  end
66
66
 
67
67
  # Returns the DateTime and remainding minutes when adding a duration to a minute in the hour.
@@ -72,12 +72,12 @@ module Workpattern
72
72
  # @param [Boolean] next_hour used in subtraction to specify the starting point as midnight (00:00 the next day)
73
73
  # @return [DateTime,Integer,Boolean] The <tt>DateTime</tt> calculated along with remaining minutes and a flag indicating if starting point is next hour
74
74
  #
75
- def calc(time,duration,next_hour=false)
75
+ def wp_calc(time,duration,next_hour=false)
76
76
 
77
77
  if (duration<0)
78
- return subtract(time,duration, next_hour)
78
+ return wp_subtract(time,duration, next_hour)
79
79
  elsif (duration>0)
80
- return add(time,duration)
80
+ return wp_add(time,duration)
81
81
  else
82
82
  return time,duration
83
83
  end
@@ -88,10 +88,10 @@ module Workpattern
88
88
  # @param [Integer] finish last minute in range
89
89
  # @return [Integer] number of working minutes in the range
90
90
  #
91
- def diff(start,finish)
91
+ def wp_diff(start,finish)
92
92
  start,finish=finish,start if start > finish
93
93
  return 0 if start==finish
94
- return (self & mask(start,finish-1)).to_s(2).count('1')
94
+ return (self & wp_mask(start,finish-1)).to_s(2).count('1')
95
95
  end
96
96
 
97
97
  private
@@ -101,8 +101,8 @@ module Workpattern
101
101
  # @param [Integer] start is first minute in the range
102
102
  # @param [Integer] finish is last minute in the range
103
103
  #
104
- def working(start,finish)
105
- return self | mask(start,finish)
104
+ def wp_working(start,finish)
105
+ return self | wp_mask(start,finish)
106
106
  end
107
107
 
108
108
  # sets a resting pattern
@@ -110,8 +110,8 @@ module Workpattern
110
110
  # @param [Integer] start is first minute in the range
111
111
  # @param [Integer] finish is last minute in the range
112
112
  #
113
- def resting(start,finish)
114
- return self & ((2**60-1)-mask(start,finish))
113
+ def wp_resting(start,finish)
114
+ return self & ((2**60-1)-wp_mask(start,finish))
115
115
  end
116
116
 
117
117
  # Creates a bit mask of 1's over the specified range
@@ -119,7 +119,7 @@ module Workpattern
119
119
  # @param [Integer] start is first minute in the range
120
120
  # @param [Integer] finish is the last minute in the range
121
121
  #
122
- def mask(start,finish)
122
+ def wp_mask(start,finish)
123
123
  return ((2**(finish+1)-1)-(2**start-1))
124
124
  end
125
125
 
@@ -129,9 +129,9 @@ module Workpattern
129
129
  # @param [Integer] duration is the number of minutes to add and can be negative (subtraction)
130
130
  # @return [DateTime, Integer] The resulting DateTime and any remaining minutes
131
131
  #
132
- def add(time,duration)
132
+ def wp_add(time,duration)
133
133
  start = time.min
134
- available_minutes=minutes(start,59)
134
+ available_minutes=wp_minutes(start,59)
135
135
 
136
136
  if ((duration-available_minutes)>=0)
137
137
  result_date = time + HOUR - (MINUTE*start)
@@ -139,15 +139,15 @@ module Workpattern
139
139
  elsif ((duration-available_minutes)==0)
140
140
  result_date = time - (MINUTE*start) + last + 1
141
141
  result_remainder = 0
142
- elsif (minutes(start,start+duration-1)==duration)
142
+ elsif (wp_minutes(start,start+duration-1)==duration)
143
143
  result_date = time + (MINUTE*duration)
144
144
  result_remainder = 0
145
145
  else
146
146
  step = start + duration
147
- duration-=minutes(start,step)
147
+ duration-=wp_minutes(start,step)
148
148
  until (duration==0)
149
149
  step+=1
150
- duration-=minutes(step,step)
150
+ duration-=wp_minutes(step,step)
151
151
  end
152
152
  step+=1
153
153
  result_date = time + (MINUTE*step)
@@ -162,31 +162,31 @@ module Workpattern
162
162
  # @param [Boolean] next_hour indicates if the 59th second is the first one to be included
163
163
  # @return [DateTime, Integer] The resulting DateTime and any remaining minutes
164
164
  #
165
- def subtract(time,duration,next_hour)
165
+ def wp_subtract(time,duration,next_hour)
166
166
  if next_hour
167
- if working?(59)
167
+ if wp_working?(59)
168
168
  duration+=1
169
169
  time=time+(MINUTE*59)
170
- return calc(time,duration)
170
+ return wp_calc(time,duration)
171
171
  end
172
172
  else
173
173
  start=time.min
174
174
  available_minutes=0
175
- available_minutes = minutes(0,start-1) if start > 0
175
+ available_minutes = wp_minutes(0,start-1) if start > 0
176
176
  end
177
177
 
178
178
  if ((duration + available_minutes)<=0)
179
179
  result_date = time - (MINUTE*start)
180
180
  result_remainder = duration+available_minutes
181
- elsif (minutes(start+duration,start-1)==duration.abs)
181
+ elsif (wp_minutes(start+duration,start-1)==duration.abs)
182
182
  result_date = time + (MINUTE*duration)
183
183
  result_remainder = 0
184
184
  else
185
185
  step = start + duration
186
- duration+=minutes(step,start-1)
186
+ duration+=wp_minutes(step,start-1)
187
187
  until (duration==0)
188
188
  step-=1
189
- duration+=minutes(step,step)
189
+ duration+=wp_minutes(step,step)
190
190
  end
191
191
  result_date = time - (MINUTE * (start-step))
192
192
  result_remainder = 0
@@ -1,5 +1,5 @@
1
1
  module Workpattern
2
2
  # Version Number for Workpattern gem
3
3
  # @since 0.0.1
4
- VERSION = '0.3.1'
4
+ VERSION = '0.3.2'
5
5
  end
@@ -29,6 +29,16 @@ module Workpattern
29
29
  #
30
30
  attr_reader :name, :base, :span, :from, :to, :weeks
31
31
 
32
+ # Class for handling persistence in user's own way
33
+ #
34
+ def self.persistence_class=(klass)
35
+ @@persistence = klass
36
+ end
37
+
38
+ def self.persistence?
39
+ @@persistence ||= nil
40
+ end
41
+
32
42
  # The new <tt>Workpattern</tt> object is created with all working minutes.
33
43
  #
34
44
  # @param [String] name Every workpattern has a unique name
@@ -119,6 +129,8 @@ module Workpattern
119
129
  :work_type => WORK}
120
130
 
121
131
  args.merge! opts
132
+
133
+ @@persistence.store( name: @name, workpattern: args) if self.class.persistence?
122
134
 
123
135
  args[:start] = dmy_date(args[:start])
124
136
  args[:finish] = dmy_date(args[:finish])
@@ -132,9 +144,7 @@ module Workpattern
132
144
  current_wp=find_weekpattern(upd_start)
133
145
  if (current_wp.start == upd_start)
134
146
  if (current_wp.finish > upd_finish)
135
- clone_wp=current_wp.duplicate
136
- current_wp.adjust(upd_finish+1,current_wp.finish)
137
- clone_wp.adjust(upd_start,upd_finish)
147
+ clone_wp=clone_and_adjust_current_wp(current_wp, upd_finish+1,current_wp.finish,upd_start,upd_finish)
138
148
  clone_wp.workpattern(args[:days],from_time,to_time,args[:work_type])
139
149
  @weeks<< clone_wp
140
150
  upd_start=upd_finish+1
@@ -143,18 +153,14 @@ module Workpattern
143
153
  upd_start=current_wp.finish + 1
144
154
  end
145
155
  else
146
- clone_wp=current_wp.duplicate
147
- current_wp.adjust(current_wp.start,upd_start-1)
148
- clone_wp.adjust(upd_start,clone_wp.finish)
156
+ clone_wp=clone_and_adjust_current_wp(current_wp, current_wp.start,upd_start-1,upd_start)
149
157
  if (clone_wp.finish <= upd_finish)
150
158
  clone_wp.workpattern(args[:days],from_time,to_time,args[:work_type])
151
159
  @weeks<< clone_wp
152
160
  upd_start=clone_wp.finish+1
153
161
  else
154
- after_wp=clone_wp.duplicate
155
- after_wp.adjust(upd_finish+1,after_wp.finish)
162
+ after_wp=clone_and_adjust_current_wp(clone_wp, upd_start,upd_finish,upd_finish+1)
156
163
  @weeks<< after_wp
157
- clone_wp.adjust(upd_start,upd_finish)
158
164
  clone_wp.workpattern(args[:days],from_time,to_time,args[:work_type])
159
165
  @weeks<< clone_wp
160
166
  upd_start=clone_wp.finish+1
@@ -278,6 +284,20 @@ module Workpattern
278
284
  return Clock.new(date.hour,date.min)
279
285
  end
280
286
 
287
+ private
288
+
289
+ # Handles cloning of Week Pattern including date adjustments
290
+ #
291
+ def clone_and_adjust_current_wp(current_wp, current_start,current_finish,clone_start,clone_finish=nil)
292
+ clone_wp=current_wp.duplicate
293
+ current_wp.adjust(current_start,current_finish)
294
+ if (clone_finish.nil?)
295
+ clone_wp.adjust(clone_start,clone_wp.finish)
296
+ else
297
+ clone_wp.adjust(clone_start,clone_finish)
298
+ end
299
+ return clone_wp
300
+ end
281
301
  end
282
302
  end
283
303
 
data/script/console CHANGED
File without changes
data/script/destroy CHANGED
File without changes
data/script/generate CHANGED
File without changes
data/script/txt2html CHANGED
File without changes
data/test/test_hour.rb CHANGED
@@ -9,24 +9,24 @@ class TestHour < Test::Unit::TestCase #:nodoc:
9
9
 
10
10
  must "ceate a working hour" do
11
11
  working_hour = Workpattern::WORKING_HOUR
12
- assert_equal 60, working_hour.total,"working total minutes"
12
+ assert_equal 60, working_hour.wp_total,"working total minutes"
13
13
  end
14
14
 
15
15
  must "ceate a resting hour" do
16
16
  resting_hour = Workpattern::RESTING_HOUR
17
- assert_equal 0, resting_hour.total,"resting total minutes"
17
+ assert_equal 0, resting_hour.wp_total,"resting total minutes"
18
18
  end
19
19
 
20
20
  must "set patterns correctly" do
21
21
  working_hour = Workpattern::WORKING_HOUR
22
- working_hour = working_hour.workpattern(0,0,0)
23
- working_hour = working_hour.workpattern(59,59,0)
24
- working_hour = working_hour.workpattern(11,30,0)
25
- assert_equal 38,working_hour.total, "total working minutes"
26
- assert_equal 1, working_hour.first, "first minute of the day"
27
- assert_equal 58, working_hour.last, "last minute of the day"
28
- assert !working_hour.working?(0)
29
- assert working_hour.working?(1)
22
+ working_hour = working_hour.wp_workpattern(0,0,0)
23
+ working_hour = working_hour.wp_workpattern(59,59,0)
24
+ working_hour = working_hour.wp_workpattern(11,30,0)
25
+ assert_equal 38,working_hour.wp_total, "total working minutes"
26
+ assert_equal 1, working_hour.wp_first, "first minute of the day"
27
+ assert_equal 58, working_hour.wp_last, "last minute of the day"
28
+ assert !working_hour.wp_working?(0)
29
+ assert working_hour.wp_working?(1)
30
30
  end
31
31
 
32
32
  must 'add minutes in a working hour' do
@@ -43,7 +43,7 @@ class TestHour < Test::Unit::TestCase #:nodoc:
43
43
  [2000,12,31,23,59,1,2001,1,1,0,0,0]
44
44
  ].each{|y,m,d,h,n,add,yr,mr,dr,hr,nr,rem|
45
45
  start=DateTime.new(y,m,d,h,n)
46
- result,remainder = working_hour.calc(start,add)
46
+ result,remainder = working_hour.wp_calc(start,add)
47
47
  assert_equal DateTime.new(yr,mr,dr,hr,nr), result, "result calc(#{start},#{add})"
48
48
  assert_equal rem, remainder, "remainder calc(#{start},#{add})"
49
49
  }
@@ -63,7 +63,7 @@ class TestHour < Test::Unit::TestCase #:nodoc:
63
63
  [2000,12,31,23,59,1,2001,1,1,0,0,1]
64
64
  ].each{|y,m,d,h,n,add,yr,mr,dr,hr,nr,rem|
65
65
  start=DateTime.new(y,m,d,h,n)
66
- result,remainder = resting_hour.calc(start,add)
66
+ result,remainder = resting_hour.wp_calc(start,add)
67
67
  assert_equal DateTime.new(yr,mr,dr,hr,nr), result, "result calc(#{start},#{add})"
68
68
  assert_equal rem, remainder, "remainder calc(#{start},#{add})"
69
69
  }
@@ -73,8 +73,8 @@ class TestHour < Test::Unit::TestCase #:nodoc:
73
73
  must 'add minutes in a patterned hour' do
74
74
 
75
75
  pattern_hour = Workpattern::WORKING_HOUR
76
- pattern_hour = pattern_hour.workpattern(1,10,0)
77
- pattern_hour = pattern_hour.workpattern(55,59,0)
76
+ pattern_hour = pattern_hour.wp_workpattern(1,10,0)
77
+ pattern_hour = pattern_hour.wp_workpattern(55,59,0)
78
78
  [
79
79
  [2000,1,1,0,0,3,2000,1,1,0,13,0],
80
80
  [2000,1,1,0,0,0,2000,1,1,0,0,0],
@@ -86,7 +86,7 @@ class TestHour < Test::Unit::TestCase #:nodoc:
86
86
  [2000,12,31,23,59,1,2001,1,1,0,0,1]
87
87
  ].each{|y,m,d,h,n,add,yr,mr,dr,hr,nr,rem|
88
88
  start=DateTime.new(y,m,d,h,n)
89
- result,remainder = pattern_hour.calc(start,add)
89
+ result,remainder = pattern_hour.wp_calc(start,add)
90
90
  assert_equal DateTime.new(yr,mr,dr,hr,nr), result, "result calc(#{start},#{add})"
91
91
  assert_equal rem, remainder, "remainder calc(#{start},#{add})"
92
92
  }
@@ -106,7 +106,7 @@ class TestHour < Test::Unit::TestCase #:nodoc:
106
106
  [2001,1,1,0,0,-1,2001,1,1,0,0,-1]
107
107
  ].each{|y,m,d,h,n,add,yr,mr,dr,hr,nr,rem|
108
108
  start=DateTime.new(y,m,d,h,n)
109
- result,remainder = working_hour.calc(start,add)
109
+ result,remainder = working_hour.wp_calc(start,add)
110
110
  assert_equal DateTime.new(yr,mr,dr,hr,nr), result, "result calc(#{start},#{add})"
111
111
  assert_equal rem, remainder, "remainder calc(#{start},#{add})"
112
112
  }
@@ -126,7 +126,7 @@ class TestHour < Test::Unit::TestCase #:nodoc:
126
126
  [2001,1,1,0,0,-1,2001,1,1,0,0,-1]
127
127
  ].each{|y,m,d,h,n,add,yr,mr,dr,hr,nr,rem|
128
128
  start=DateTime.new(y,m,d,h,n)
129
- result,remainder = resting_hour.calc(start,add)
129
+ result,remainder = resting_hour.wp_calc(start,add)
130
130
  assert_equal DateTime.new(yr,mr,dr,hr,nr), result, "result calc(#{start},#{add})"
131
131
  assert_equal rem, remainder, "remainder calc(#{start},#{add})"
132
132
  }
@@ -136,8 +136,8 @@ class TestHour < Test::Unit::TestCase #:nodoc:
136
136
  must 'subtract minutes in a patterned hour' do
137
137
 
138
138
  pattern_hour = Workpattern::WORKING_HOUR
139
- pattern_hour = pattern_hour.workpattern(1,10,0)
140
- pattern_hour = pattern_hour.workpattern(55,59,0)
139
+ pattern_hour = pattern_hour.wp_workpattern(1,10,0)
140
+ pattern_hour = pattern_hour.wp_workpattern(55,59,0)
141
141
  [
142
142
  [2000,1,1,0,0,-3,2000,1,1,0,0,-3],
143
143
  [2000,1,1,0,0,0,2000,1,1,0,0,0],
@@ -149,7 +149,7 @@ class TestHour < Test::Unit::TestCase #:nodoc:
149
149
  [2001,1,1,23,59,-1,2001,1,1,23,54,0]
150
150
  ].each{|y,m,d,h,n,add,yr,mr,dr,hr,nr,rem|
151
151
  start=DateTime.new(y,m,d,h,n)
152
- result,remainder = pattern_hour.calc(start,add)
152
+ result,remainder = pattern_hour.wp_calc(start,add)
153
153
  assert_equal DateTime.new(yr,mr,dr,hr,nr), result, "result calc(#{start},#{add})"
154
154
  assert_equal rem, remainder, "remainder calc(#{start},#{add})"
155
155
  }
@@ -170,16 +170,16 @@ class TestHour < Test::Unit::TestCase #:nodoc:
170
170
  [0,0,1,1,0,0],
171
171
  [59,59,1,2,0,59]
172
172
  ].each{|start,finish,type,total,first,last|
173
- working_hour = working_hour.workpattern(start,finish,type)
174
- assert_equal total,working_hour.total, "total working minutes #{j}"
175
- assert_equal first, working_hour.first, "first minute of the day #{j}"
176
- assert_equal last, working_hour.last, "last minute of the day #{j}"
173
+ working_hour = working_hour.wp_workpattern(start,finish,type)
174
+ assert_equal total,working_hour.wp_total, "total working minutes #{j}"
175
+ assert_equal first, working_hour.wp_first, "first minute of the day #{j}"
176
+ assert_equal last, working_hour.wp_last, "last minute of the day #{j}"
177
177
  start.upto(finish) {|i| control[i]=type}
178
178
  0.upto(59) {|i|
179
179
  if (control[i]==0)
180
- assert !working_hour.working?(i)
180
+ assert !working_hour.wp_working?(i)
181
181
  else
182
- assert working_hour.working?(i)
182
+ assert working_hour.wp_working?(i)
183
183
  end
184
184
  }
185
185
  j+=1
@@ -201,7 +201,7 @@ class TestHour < Test::Unit::TestCase #:nodoc:
201
201
  [59,0,59],
202
202
  [60,0,60]
203
203
  ].each {|start,finish,result|
204
- assert_equal result, working_hour.diff(start,finish),"diff(#{start},#{finish})"
204
+ assert_equal result, working_hour.wp_diff(start,finish),"diff(#{start},#{finish})"
205
205
  }
206
206
 
207
207
  end
@@ -220,7 +220,7 @@ class TestHour < Test::Unit::TestCase #:nodoc:
220
220
  [59,0,0],
221
221
  [60,0,0]
222
222
  ].each {|start,finish,result|
223
- assert_equal result, resting_hour.diff(start,finish),"diff(#{start},#{finish})"
223
+ assert_equal result, resting_hour.wp_diff(start,finish),"diff(#{start},#{finish})"
224
224
  }
225
225
 
226
226
  end
@@ -228,9 +228,9 @@ class TestHour < Test::Unit::TestCase #:nodoc:
228
228
  must "calculate difference between minutes in pattern hour" do
229
229
 
230
230
  pattern_hour = Workpattern::WORKING_HOUR
231
- pattern_hour = pattern_hour.workpattern(1,10,0)
232
- pattern_hour = pattern_hour.workpattern(55,59,0)
233
- pattern_hour = pattern_hour.workpattern(59,59,1)
231
+ pattern_hour = pattern_hour.wp_workpattern(1,10,0)
232
+ pattern_hour = pattern_hour.wp_workpattern(55,59,0)
233
+ pattern_hour = pattern_hour.wp_workpattern(59,59,1)
234
234
 
235
235
  [[0,0,0],
236
236
  [0,1,1],
@@ -244,7 +244,7 @@ class TestHour < Test::Unit::TestCase #:nodoc:
244
244
  [59,0,45],
245
245
  [60,0,46]
246
246
  ].each {|start,finish,result|
247
- assert_equal result, pattern_hour.diff(start,finish),"diff(#{start},#{finish})"
247
+ assert_equal result, pattern_hour.wp_diff(start,finish),"diff(#{start},#{finish})"
248
248
  }
249
249
  end
250
250
 
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: workpattern
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
5
- prerelease:
4
+ version: 0.3.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Barrie Callender
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-10-14 00:00:00.000000000 Z
11
+ date: 2013-03-14 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -65,27 +62,25 @@ files:
65
62
  - workpattern.gemspec
66
63
  homepage: ''
67
64
  licenses: []
65
+ metadata: {}
68
66
  post_install_message:
69
67
  rdoc_options: []
70
68
  require_paths:
71
69
  - lib
72
70
  required_ruby_version: !ruby/object:Gem::Requirement
73
- none: false
74
71
  requirements:
75
72
  - - ! '>='
76
73
  - !ruby/object:Gem::Version
77
74
  version: '0'
78
75
  required_rubygems_version: !ruby/object:Gem::Requirement
79
- none: false
80
76
  requirements:
81
77
  - - ! '>='
82
78
  - !ruby/object:Gem::Version
83
79
  version: '0'
84
80
  requirements: []
85
81
  rubyforge_project: workpattern
86
- rubygems_version: 1.8.24
82
+ rubygems_version: 2.0.3
87
83
  signing_key:
88
- specification_version: 3
84
+ specification_version: 4
89
85
  summary: temporal calculations
90
86
  test_files: []
91
- has_rdoc: