rats 0.3.2 → 0.4.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.
@@ -59,14 +59,20 @@ There can be up to a maximum of 36 Sections in a township. The number starts wi
59
59
  North of number 6 and counts up West-to-East until the number 12. It snakes back
60
60
  and forth until it finishes at number 36 in the North-East corner.
61
61
 
62
- === Half
63
- a.k.a. Half Section
62
+ === Multi
63
+ a.k.a. Multi Quarters
64
64
 
65
65
  from above example: [= N or = North]
66
66
 
67
67
  The Half Section represents a 1/2 x 1 mile area within the 1x1 mile Section.
68
68
  They are identified by "N", "E", "S" and "W".
69
69
 
70
+ from above example: [= NSE]
71
+
72
+ The Multi Quarter Section represents a 1/2 x 1 mile + 1/2 x 1/2 mile area within the
73
+ 1x1 mile Section (or basically 3 of the 4 quarters).
74
+ They are identified by "NSE", "NSW", "ENW", "ESW", "SNE", "SNW", "WNE" and "WSE".
75
+
70
76
  === Quarter
71
77
  a.k.a. Quarter Section
72
78
 
@@ -103,11 +109,12 @@ the same location.
103
109
 
104
110
  Townships, Sections and Half Sections can be divided into multiple Quarter Sections.
105
111
  1 Half Section = 2 Quarter Sections
112
+ 1 Multi Quarter Section = 2-3 Quarter Sections
106
113
  1 Section = 4 Quarter Sections
107
114
  1 Township = 144 Quarter Sections
108
115
 
109
116
  For example, the Half Section N 1-2-3 W4 has the Quarter Sections NE 1-2-3 W4 and
110
- NW 1-2-3 W4.
117
+ NW 1-2-3 W4.
111
118
 
112
119
  === Display
113
120
 
@@ -142,6 +149,11 @@ Divide into multiple Quarter Sections
142
149
  quarter_sections = half_section.divide
143
150
  # quarter_sections == [Rats.new("NE 1-2-3 W4"), Rats.new("NW 1-2-3 W4")]
144
151
 
152
+ multi_section = Rats.new("NSE 1-2-3 W4")
153
+ multi_section.is_divisible?
154
+ quarter_sections = multi_section.divide
155
+ # quarter_sections == [Rats.new("NE 1-2-3 W4"), Rats.new("NW 1-2-3 W4"), Rats.new("SE 1-2-3 W4")]
156
+
145
157
  = Information
146
158
 
147
159
  == links
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.2
1
+ 0.4.0
@@ -172,20 +172,40 @@ module Rats
172
172
 
173
173
  def divide_half
174
174
  quarters = []
175
- case self.quarter.to_s.downcase
175
+ locations = case self.quarter.to_s.downcase
176
176
  when 'n'
177
- quarters << Rats.new(self.meridian, self.range, self.township, self.section, 'NE')
178
- quarters << Rats.new(self.meridian, self.range, self.township, self.section, 'NW')
177
+ ['NE','NW']
179
178
  when 's'
180
- quarters << Rats.new(self.meridian, self.range, self.township, self.section, 'SE')
181
- quarters << Rats.new(self.meridian, self.range, self.township, self.section, 'SW')
179
+ ['SE','SW']
182
180
  when 'e'
183
- quarters << Rats.new(self.meridian, self.range, self.township, self.section, 'NE')
184
- quarters << Rats.new(self.meridian, self.range, self.township, self.section, 'SE')
181
+ ['NE','SE']
185
182
  when 'w'
186
- quarters << Rats.new(self.meridian, self.range, self.township, self.section, 'NW')
187
- quarters << Rats.new(self.meridian, self.range, self.township, self.section, 'SW')
183
+ ['NW','SW']
184
+ when 'all'
185
+ ['NE','NW','SE','SW']
186
+ when 'nse'
187
+ ['NE','NW','SE']
188
+ when 'nsw'
189
+ ['NE','NW','SW']
190
+ when 'enw'
191
+ ['NE','NW','SE']
192
+ when 'esw'
193
+ ['NE','SE','SW']
194
+ when 'sne'
195
+ ['NE','SE','SW']
196
+ when 'snw'
197
+ ['NW','SE','SW']
198
+ when 'wse'
199
+ ['NW','SE','SW']
200
+ when 'wne'
201
+ ['NE','NW','SW']
188
202
  end
203
+
204
+ # create the required locations
205
+ locations.each do |quarter|
206
+ quarters << Rats.new(self.meridian, self.range, self.township, section || self.section, quarter)
207
+ end
208
+
189
209
  quarters
190
210
  end
191
211
 
@@ -225,7 +245,7 @@ module Rats
225
245
  def parse_description(description)
226
246
  # just skip the case of only a meridian ie: 'W4'
227
247
  unless description.to_s.match(/^w\d{1,3}$/i)
228
- quarter = description.to_s.scan(/^north|^south|^east|^west|^ne|^nw|^se|^sw|^n|^e|^s|^w/i)
248
+ quarter = description.to_s.scan(/^north|^south|^east|^west|^all|^nse|^nsw|^enw|^esw|^sne|^snw|^wse|^wne|^ne|^nw|^se|^sw|^n|^e|^s|^w/i)
229
249
  self.quarter = Rats::Quarter.transform(quarter[0]) if quarter && quarter.size > 0
230
250
  end
231
251
 
@@ -1,7 +1,7 @@
1
1
  module Rats
2
2
  class Quarter < Data
3
3
 
4
- VALID_QUARTERS = [:ne, :nw, :se, :sw, :n, :e, :s, :w]
4
+ VALID_QUARTERS = [:all, :nse, :nsw, :enw, :esw, :sne, :snw, :wse, :wne, :ne, :nw, :se, :sw, :n, :e, :s, :w]
5
5
 
6
6
  def self.padding_width; 2; end
7
7
  def self.padding_value; " "; end
@@ -30,13 +30,31 @@ module Rats
30
30
  sprintf(template, 'South', 'Half')
31
31
  when :w
32
32
  sprintf(template, 'West', 'Half')
33
+ when :all
34
+ sprintf(template, 'Entire', 'Section')
35
+ when :nse
36
+ sprintf(template, 'North Half and', 'Southeast Quarter')
37
+ when :nsw
38
+ sprintf(template, 'North Half and', 'Southwest Quarter')
39
+ when :enw
40
+ sprintf(template, 'East Half and', 'Northwest Quarter')
41
+ when :esw
42
+ sprintf(template, 'East Half and', 'Southwest Quarter')
43
+ when :sne
44
+ sprintf(template, 'South Half and', 'Northeast Quarter')
45
+ when :snw
46
+ sprintf(template, 'South Half and', 'Northwest Quarter')
47
+ when :wse
48
+ sprintf(template, 'West Half and', 'Southeast Quarter')
49
+ when :wne
50
+ sprintf(template, 'West Half and', 'Northeast Quarter')
33
51
  else
34
52
  ''
35
53
  end
36
54
  end
37
55
 
38
56
  def self.half?(value)
39
- %w(north n south s east e west w).include?(value.to_s.downcase)
57
+ %w(all nse nsw enw esw sne snw wse wne north n south s east e west w).include?(value.to_s.downcase)
40
58
  end
41
59
 
42
60
  def self.transform(value)
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rats}
8
- s.version = "0.3.2"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Mark G"]
12
- s.date = %q{2010-09-16}
12
+ s.date = %q{2010-11-30}
13
13
  s.description = %q{A ruby class to help with using the Alberta Township System}
14
14
  s.email = %q{rats@attackcorp.com}
15
15
  s.extra_rdoc_files = [
@@ -47,7 +47,7 @@ Gem::Specification.new do |s|
47
47
  s.homepage = %q{http://github.com/attack/rats}
48
48
  s.rdoc_options = ["--charset=UTF-8"]
49
49
  s.require_paths = ["lib"]
50
- s.rubygems_version = %q{1.3.7}
50
+ s.rubygems_version = %q{1.3.6}
51
51
  s.summary = %q{A ruby class to help with using the Alberta Township System}
52
52
  s.test_files = [
53
53
  "spec/data/data_spec.rb",
@@ -64,7 +64,7 @@ Gem::Specification.new do |s|
64
64
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
65
65
  s.specification_version = 3
66
66
 
67
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
67
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
68
68
  else
69
69
  end
70
70
  else
@@ -457,6 +457,8 @@ describe "Rats" do
457
457
 
458
458
  it "is divisible" do
459
459
  Rats.new("N 1-2-3 W4").is_divisible?.should be_true
460
+ Rats.new("NSE 1-2-3 W4").is_divisible?.should be_true
461
+ Rats.new("ALL 1-2-3 W4").is_divisible?.should be_true
460
462
  Rats.new("1-2-3 W4").is_divisible?.should be_true
461
463
  Rats.new("2-3 W4").is_divisible?.should be_true
462
464
  end
@@ -474,6 +476,14 @@ describe "Rats" do
474
476
  quarters.last.quarter.should == 'NW'
475
477
  end
476
478
 
479
+ describe "3/4 -> 3 quarters" do
480
+ quarters = Rats.new("NSE 1-2-3 W4").divide
481
+ quarters.size.should == 3
482
+ quarters[0].quarter.should == 'NE'
483
+ quarters[1].quarter.should == 'NW'
484
+ quarters[2].quarter.should == 'SE'
485
+ end
486
+
477
487
  describe "section -> 4 quarters" do
478
488
  quarters = Rats.new("1-2-3 W4").divide
479
489
  quarters.size.should == 4
@@ -483,6 +493,15 @@ describe "Rats" do
483
493
  quarters[3].quarter.should == 'SW'
484
494
  end
485
495
 
496
+ describe "ALL -> 4 quarters" do
497
+ quarters = Rats.new("ALL 1-2-3 W4").divide
498
+ quarters.size.should == 4
499
+ quarters[0].quarter.should == 'NE'
500
+ quarters[1].quarter.should == 'NW'
501
+ quarters[2].quarter.should == 'SE'
502
+ quarters[3].quarter.should == 'SW'
503
+ end
504
+
486
505
  describe "township -> 144 quarters" do
487
506
  quarters = Rats.new("2-3 W4").divide
488
507
  quarters.size.should == 144
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 3
8
- - 2
9
- version: 0.3.2
7
+ - 4
8
+ - 0
9
+ version: 0.4.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Mark G
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-09-16 00:00:00 -06:00
17
+ date: 2010-11-30 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
@@ -64,7 +64,6 @@ rdoc_options:
64
64
  require_paths:
65
65
  - lib
66
66
  required_ruby_version: !ruby/object:Gem::Requirement
67
- none: false
68
67
  requirements:
69
68
  - - ">="
70
69
  - !ruby/object:Gem::Version
@@ -72,7 +71,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
72
71
  - 0
73
72
  version: "0"
74
73
  required_rubygems_version: !ruby/object:Gem::Requirement
75
- none: false
76
74
  requirements:
77
75
  - - ">="
78
76
  - !ruby/object:Gem::Version
@@ -82,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
80
  requirements: []
83
81
 
84
82
  rubyforge_project:
85
- rubygems_version: 1.3.7
83
+ rubygems_version: 1.3.6
86
84
  signing_key:
87
85
  specification_version: 3
88
86
  summary: A ruby class to help with using the Alberta Township System