atc-tools 1.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.
Files changed (60) hide show
  1. checksums.yaml +7 -0
  2. data/bin/fpv +3 -0
  3. data/doc/ATCTools.html +133 -0
  4. data/doc/ATCTools/Aircraft.html +309 -0
  5. data/doc/ATCTools/Airport.html +634 -0
  6. data/doc/ATCTools/FlightPlan.html +544 -0
  7. data/doc/ATCTools/FlightPlanValidator.html +265 -0
  8. data/doc/ATCTools/HeadingDiscoveryError.html +135 -0
  9. data/doc/ATCTools/HeadingError.html +135 -0
  10. data/doc/ATCTools/NameDiscoveryError.html +135 -0
  11. data/doc/ATCTools/NoAircraftSelectedError.html +135 -0
  12. data/doc/ATCTools/VRC.html +656 -0
  13. data/doc/Aircraft.html +127 -0
  14. data/doc/Airport.html +564 -0
  15. data/doc/FlightPlan.html +127 -0
  16. data/doc/HeadingError.html +127 -0
  17. data/doc/NameDiscoveryError.html +127 -0
  18. data/doc/created.rid +7 -0
  19. data/doc/images/add.png +0 -0
  20. data/doc/images/arrow_up.png +0 -0
  21. data/doc/images/brick.png +0 -0
  22. data/doc/images/brick_link.png +0 -0
  23. data/doc/images/bug.png +0 -0
  24. data/doc/images/bullet_black.png +0 -0
  25. data/doc/images/bullet_toggle_minus.png +0 -0
  26. data/doc/images/bullet_toggle_plus.png +0 -0
  27. data/doc/images/date.png +0 -0
  28. data/doc/images/delete.png +0 -0
  29. data/doc/images/find.png +0 -0
  30. data/doc/images/loadingAnimation.gif +0 -0
  31. data/doc/images/macFFBgHack.png +0 -0
  32. data/doc/images/package.png +0 -0
  33. data/doc/images/page_green.png +0 -0
  34. data/doc/images/page_white_text.png +0 -0
  35. data/doc/images/page_white_width.png +0 -0
  36. data/doc/images/plugin.png +0 -0
  37. data/doc/images/ruby.png +0 -0
  38. data/doc/images/tag_blue.png +0 -0
  39. data/doc/images/tag_green.png +0 -0
  40. data/doc/images/transparent.png +0 -0
  41. data/doc/images/wrench.png +0 -0
  42. data/doc/images/wrench_orange.png +0 -0
  43. data/doc/images/zoom.png +0 -0
  44. data/doc/index.html +87 -0
  45. data/doc/js/darkfish.js +155 -0
  46. data/doc/js/jquery.js +18 -0
  47. data/doc/js/navigation.js +142 -0
  48. data/doc/js/search.js +94 -0
  49. data/doc/js/search_index.js +1 -0
  50. data/doc/js/searcher.js +228 -0
  51. data/doc/rdoc.css +595 -0
  52. data/doc/table_of_contents.html +132 -0
  53. data/lib/atc-tools.rb +1 -0
  54. data/lib/atc-tools/aircraft.rb +36 -0
  55. data/lib/atc-tools/airport.rb +103 -0
  56. data/lib/atc-tools/flight_plan.rb +119 -0
  57. data/lib/atc-tools/script/flight_plan_validator.rb +65 -0
  58. data/lib/atc-tools/vrc.rb +165 -0
  59. data/license.txt +19 -0
  60. metadata +174 -0
@@ -0,0 +1,634 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
6
+
7
+ <title>class ATCTools::Airport - RDoc Documentation</title>
8
+
9
+ <link type="text/css" media="screen" href="../rdoc.css" rel="stylesheet">
10
+
11
+ <script type="text/javascript">
12
+ var rdoc_rel_prefix = "../";
13
+ </script>
14
+
15
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
16
+ <script type="text/javascript" charset="utf-8" src="../js/navigation.js"></script>
17
+ <script type="text/javascript" charset="utf-8" src="../js/search_index.js"></script>
18
+ <script type="text/javascript" charset="utf-8" src="../js/search.js"></script>
19
+ <script type="text/javascript" charset="utf-8" src="../js/searcher.js"></script>
20
+ <script type="text/javascript" charset="utf-8" src="../js/darkfish.js"></script>
21
+
22
+
23
+ <body id="top" class="class">
24
+ <nav id="metadata">
25
+ <nav id="home-section" class="section">
26
+ <h3 class="section-header">
27
+ <a href="../index.html">Home</a>
28
+ <a href="../table_of_contents.html#classes">Classes</a>
29
+ <a href="../table_of_contents.html#methods">Methods</a>
30
+ </h3>
31
+ </nav>
32
+
33
+
34
+ <nav id="search-section" class="section project-section" class="initially-hidden">
35
+ <form action="#" method="get" accept-charset="utf-8">
36
+ <h3 class="section-header">
37
+ <input type="text" name="search" placeholder="Search" id="search-field"
38
+ title="Type to search, Up and Down to navigate, Enter to load">
39
+ </h3>
40
+ </form>
41
+
42
+ <ul id="search-results" class="initially-hidden"></ul>
43
+ </nav>
44
+
45
+
46
+
47
+
48
+ <div id="file-metadata">
49
+ <nav id="file-list-section" class="section">
50
+ <h3 class="section-header">Defined In</h3>
51
+ <ul>
52
+ <li>lib/atc-tools/airport.rb
53
+ </ul>
54
+ </nav>
55
+
56
+
57
+ </div>
58
+
59
+ <div id="class-metadata">
60
+
61
+ <nav id="parent-class-section" class="section">
62
+ <h3 class="section-header">Parent</h3>
63
+
64
+ <p class="link">Object
65
+
66
+ </nav>
67
+
68
+
69
+
70
+ <!-- Method Quickref -->
71
+ <nav id="method-list-section" class="section">
72
+ <h3 class="section-header">Methods</h3>
73
+
74
+ <ul class="link-list">
75
+
76
+ <li ><a href="#method-c-new">::new</a>
77
+
78
+ <li ><a href="#method-i-discover_name">#discover_name</a>
79
+
80
+ <li ><a href="#method-i-discover_variance">#discover_variance</a>
81
+
82
+ <li ><a href="#method-i-magnetic_heading_from">#magnetic_heading_from</a>
83
+
84
+ <li ><a href="#method-i-magnetic_heading_to">#magnetic_heading_to</a>
85
+
86
+ <li ><a href="#method-i-magnetic_to_true">#magnetic_to_true</a>
87
+
88
+ <li ><a href="#method-i-name">#name</a>
89
+
90
+ <li ><a href="#method-i-to_s">#to_s</a>
91
+
92
+ <li ><a href="#method-i-true_heading_from">#true_heading_from</a>
93
+
94
+ <li ><a href="#method-i-true_heading_to">#true_heading_to</a>
95
+
96
+ <li ><a href="#method-i-true_to_magnetic">#true_to_magnetic</a>
97
+
98
+ </ul>
99
+ </nav>
100
+
101
+ </div>
102
+
103
+ <div id="project-metadata">
104
+
105
+ <nav id="classindex-section" class="section project-section">
106
+ <h3 class="section-header">Class and Module Index</h3>
107
+
108
+ <ul class="link-list">
109
+
110
+ <li><a href="../ATCTools.html">ATCTools</a>
111
+
112
+ <li><a href="../ATCTools/Aircraft.html">ATCTools::Aircraft</a>
113
+
114
+ <li><a href="../ATCTools/Airport.html">ATCTools::Airport</a>
115
+
116
+ <li><a href="../ATCTools/FlightPlan.html">ATCTools::FlightPlan</a>
117
+
118
+ <li><a href="../ATCTools/FlightPlanValidator.html">ATCTools::FlightPlanValidator</a>
119
+
120
+ <li><a href="../ATCTools/HeadingDiscoveryError.html">ATCTools::HeadingDiscoveryError</a>
121
+
122
+ <li><a href="../ATCTools/NameDiscoveryError.html">ATCTools::NameDiscoveryError</a>
123
+
124
+ <li><a href="../ATCTools/NoAircraftSelectedError.html">ATCTools::NoAircraftSelectedError</a>
125
+
126
+ <li><a href="../ATCTools/VRC.html">ATCTools::VRC</a>
127
+
128
+ </ul>
129
+ </nav>
130
+
131
+ </div>
132
+ </nav>
133
+
134
+ <div id="documentation">
135
+ <h1 class="class">class ATCTools::Airport</h1>
136
+
137
+ <div id="description" class="description">
138
+
139
+ </div><!-- description -->
140
+
141
+
142
+
143
+
144
+ <section id="5Buntitled-5D" class="documentation-section">
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+ <!-- Attributes -->
153
+ <section id="attribute-method-details" class="method-section section">
154
+ <h3 class="section-header">Attributes</h3>
155
+
156
+
157
+ <div id="attribute-i-code" class="method-detail">
158
+ <div class="method-heading attribute-method-heading">
159
+ <span class="method-name">code</span><span
160
+ class="attribute-access-type">[RW]</span>
161
+ </div>
162
+
163
+ <div class="method-description">
164
+
165
+ <p>Airport&#39;s ICAO code.</p>
166
+
167
+ </div>
168
+ </div>
169
+
170
+ <div id="attribute-i-heading_uri" class="method-detail">
171
+ <div class="method-heading attribute-method-heading">
172
+ <span class="method-name">heading_uri</span><span
173
+ class="attribute-access-type">[R]</span>
174
+ </div>
175
+
176
+ <div class="method-description">
177
+
178
+ <p>URI of the web page used for the last heading lookup.</p>
179
+
180
+ </div>
181
+ </div>
182
+
183
+ <div id="attribute-i-name" class="method-detail">
184
+ <div class="method-heading attribute-method-heading">
185
+ <span class="method-name">name</span><span
186
+ class="attribute-access-type">[W]</span>
187
+ </div>
188
+
189
+ <div class="method-description">
190
+
191
+ <p>Airport&#39;s full name.</p>
192
+
193
+ </div>
194
+ </div>
195
+
196
+ <div id="attribute-i-name_uri" class="method-detail">
197
+ <div class="method-heading attribute-method-heading">
198
+ <span class="method-name">name_uri</span><span
199
+ class="attribute-access-type">[R]</span>
200
+ </div>
201
+
202
+ <div class="method-description">
203
+
204
+ <p>URI of the web page used for the last airport name lookup.</p>
205
+
206
+ </div>
207
+ </div>
208
+
209
+ <div id="attribute-i-variance" class="method-detail">
210
+ <div class="method-heading attribute-method-heading">
211
+ <span class="method-name">variance</span><span
212
+ class="attribute-access-type">[RW]</span>
213
+ </div>
214
+
215
+ <div class="method-description">
216
+
217
+ <p>Airport&#39;s magnetic variance from true north.</p>
218
+
219
+ </div>
220
+ </div>
221
+
222
+ </section><!-- attribute-method-details -->
223
+
224
+
225
+ <!-- Methods -->
226
+
227
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section section">
228
+ <h3 class="section-header">Public Class Methods</h3>
229
+
230
+
231
+ <div id="method-c-new" class="method-detail ">
232
+
233
+ <div class="method-heading">
234
+ <span class="method-name">new</span><span
235
+ class="method-args">(code = nil, **kvargs)</span>
236
+
237
+ <span class="method-click-advice">click to toggle source</span>
238
+
239
+ </div>
240
+
241
+
242
+ <div class="method-description">
243
+
244
+ <p>Params: :code, :name, :variance</p>
245
+
246
+
247
+
248
+
249
+ <div class="method-source-code" id="new-source">
250
+ <pre><span class="ruby-comment"># File lib/atc-tools/airport.rb, line 22</span>
251
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">code</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-operator">**</span><span class="ruby-identifier">kvargs</span>)
252
+ <span class="ruby-ivar">@code</span> = <span class="ruby-identifier">code</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">kvargs</span>.<span class="ruby-identifier">fetch</span> <span class="ruby-value">:code</span>, <span class="ruby-string">&#39;&#39;</span>)
253
+ <span class="ruby-ivar">@name</span> = <span class="ruby-identifier">kvargs</span>.<span class="ruby-identifier">fetch</span> <span class="ruby-value">:name</span>, <span class="ruby-string">&#39;&#39;</span>
254
+ <span class="ruby-ivar">@variance</span> = <span class="ruby-identifier">kvargs</span>.<span class="ruby-identifier">fetch</span> <span class="ruby-value">:variance</span>, <span class="ruby-value">17.0</span> <span class="ruby-comment"># TODO: Detect this intelligently.</span>
255
+ <span class="ruby-keyword">end</span></pre>
256
+ </div><!-- new-source -->
257
+
258
+ </div>
259
+
260
+
261
+
262
+
263
+ </div><!-- new-method -->
264
+
265
+
266
+ </section><!-- public-class-method-details -->
267
+
268
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section section">
269
+ <h3 class="section-header">Public Instance Methods</h3>
270
+
271
+
272
+ <div id="method-i-discover_name" class="method-detail ">
273
+
274
+ <div class="method-heading">
275
+ <span class="method-name">discover_name</span><span
276
+ class="method-args">()</span>
277
+
278
+ <span class="method-click-advice">click to toggle source</span>
279
+
280
+ </div>
281
+
282
+
283
+ <div class="method-description">
284
+
285
+ <p>Discover the airport&#39;s full name based on ICAO code.</p>
286
+
287
+
288
+
289
+
290
+ <div class="method-source-code" id="discover_name-source">
291
+ <pre><span class="ruby-comment"># File lib/atc-tools/airport.rb, line 36</span>
292
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">discover_name</span>
293
+ <span class="ruby-ivar">@name_uri</span> = <span class="ruby-node">&quot;http://www.airnav.com/airport/#{@code.to_s.downcase}&quot;</span>
294
+ <span class="ruby-identifier">response</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">get</span> <span class="ruby-constant">URI</span> <span class="ruby-identifier">name_uri</span>
295
+
296
+ <span class="ruby-identifier">l</span> = <span class="ruby-identifier">response</span>.<span class="ruby-identifier">scan</span> <span class="ruby-regexp">%r{(?i:&lt;title&gt;)(?:AirNav:\s*\w*\s*-\s*)?(.*)(?i:&lt;/title&gt;)}</span>
297
+
298
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ATCTools</span><span class="ruby-operator">::</span><span class="ruby-constant">NameDiscoveryError</span>, <span class="ruby-node">&quot;Could not discover name for #{@code.to_s.upcase}&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">l</span>.<span class="ruby-identifier">count</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
299
+
300
+ <span class="ruby-ivar">@name</span> = <span class="ruby-identifier">l</span>.<span class="ruby-identifier">flatten</span>.<span class="ruby-identifier">first</span>
301
+ <span class="ruby-keyword">end</span></pre>
302
+ </div><!-- discover_name-source -->
303
+
304
+ </div>
305
+
306
+
307
+
308
+
309
+ </div><!-- discover_name-method -->
310
+
311
+
312
+ <div id="method-i-discover_variance" class="method-detail ">
313
+
314
+ <div class="method-heading">
315
+ <span class="method-name">discover_variance</span><span
316
+ class="method-args">()</span>
317
+
318
+ <span class="method-click-advice">click to toggle source</span>
319
+
320
+ </div>
321
+
322
+
323
+ <div class="method-description">
324
+
325
+ <p>Discover the airport&#39;s magnetic variance based on ICAO code.</p>
326
+
327
+
328
+
329
+
330
+ <div class="method-source-code" id="discover_variance-source">
331
+ <pre><span class="ruby-comment"># File lib/atc-tools/airport.rb, line 50</span>
332
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">discover_variance</span>
333
+ <span class="ruby-keyword">end</span></pre>
334
+ </div><!-- discover_variance-source -->
335
+
336
+ </div>
337
+
338
+
339
+
340
+
341
+ </div><!-- discover_variance-method -->
342
+
343
+
344
+ <div id="method-i-magnetic_heading_from" class="method-detail ">
345
+
346
+ <div class="method-heading">
347
+ <span class="method-name">magnetic_heading_from</span><span
348
+ class="method-args">(departure)</span>
349
+
350
+ <span class="method-click-advice">click to toggle source</span>
351
+
352
+ </div>
353
+
354
+
355
+ <div class="method-description">
356
+
357
+ <p>Calculate the magnetic heading from the specified airport. Takes an ICAO
358
+ code or <a href="Airport.html">Airport</a> object.</p>
359
+
360
+
361
+
362
+
363
+ <div class="method-source-code" id="magnetic_heading_from-source">
364
+ <pre><span class="ruby-comment"># File lib/atc-tools/airport.rb, line 80</span>
365
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">magnetic_heading_from</span>(<span class="ruby-identifier">departure</span>)
366
+ <span class="ruby-identifier">true_to_magnetic</span> <span class="ruby-identifier">true_heading_from</span>(<span class="ruby-identifier">departure</span>)
367
+ <span class="ruby-keyword">end</span></pre>
368
+ </div><!-- magnetic_heading_from-source -->
369
+
370
+ </div>
371
+
372
+
373
+
374
+
375
+ </div><!-- magnetic_heading_from-method -->
376
+
377
+
378
+ <div id="method-i-magnetic_heading_to" class="method-detail ">
379
+
380
+ <div class="method-heading">
381
+ <span class="method-name">magnetic_heading_to</span><span
382
+ class="method-args">(arrival)</span>
383
+
384
+ <span class="method-click-advice">click to toggle source</span>
385
+
386
+ </div>
387
+
388
+
389
+ <div class="method-description">
390
+
391
+ <p>Calculate the magnetic heading to the specified airport. Takes an ICAO code
392
+ or <a href="Airport.html">Airport</a> object.</p>
393
+
394
+
395
+
396
+
397
+ <div class="method-source-code" id="magnetic_heading_to-source">
398
+ <pre><span class="ruby-comment"># File lib/atc-tools/airport.rb, line 74</span>
399
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">magnetic_heading_to</span>(<span class="ruby-identifier">arrival</span>)
400
+ <span class="ruby-identifier">true_to_magnetic</span> <span class="ruby-identifier">true_heading_to</span>(<span class="ruby-identifier">arrival</span>)
401
+ <span class="ruby-keyword">end</span></pre>
402
+ </div><!-- magnetic_heading_to-source -->
403
+
404
+ </div>
405
+
406
+
407
+
408
+
409
+ </div><!-- magnetic_heading_to-method -->
410
+
411
+
412
+ <div id="method-i-magnetic_to_true" class="method-detail ">
413
+
414
+ <div class="method-heading">
415
+ <span class="method-name">magnetic_to_true</span><span
416
+ class="method-args">(heading)</span>
417
+
418
+ <span class="method-click-advice">click to toggle source</span>
419
+
420
+ </div>
421
+
422
+
423
+ <div class="method-description">
424
+
425
+ <p>Convert a magnetic heading to true based on the airport&#39;s magnetic
426
+ variance.</p>
427
+
428
+
429
+
430
+
431
+ <div class="method-source-code" id="magnetic_to_true-source">
432
+ <pre><span class="ruby-comment"># File lib/atc-tools/airport.rb, line 92</span>
433
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">magnetic_to_true</span>(<span class="ruby-identifier">heading</span>)
434
+ <span class="ruby-identifier">heading</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@variance</span>
435
+ <span class="ruby-keyword">end</span></pre>
436
+ </div><!-- magnetic_to_true-source -->
437
+
438
+ </div>
439
+
440
+
441
+
442
+
443
+ </div><!-- magnetic_to_true-method -->
444
+
445
+
446
+ <div id="method-i-name" class="method-detail ">
447
+
448
+ <div class="method-heading">
449
+ <span class="method-name">name</span><span
450
+ class="method-args">()</span>
451
+
452
+ <span class="method-click-advice">click to toggle source</span>
453
+
454
+ </div>
455
+
456
+
457
+ <div class="method-description">
458
+
459
+ <p>Airport&#39;s full name.</p>
460
+
461
+
462
+
463
+
464
+ <div class="method-source-code" id="name-source">
465
+ <pre><span class="ruby-comment"># File lib/atc-tools/airport.rb, line 29</span>
466
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">name</span>
467
+ <span class="ruby-identifier">discover_name</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@name</span>.<span class="ruby-identifier">empty?</span>
468
+ <span class="ruby-ivar">@name</span>
469
+ <span class="ruby-keyword">end</span></pre>
470
+ </div><!-- name-source -->
471
+
472
+ </div>
473
+
474
+
475
+
476
+
477
+ </div><!-- name-method -->
478
+
479
+
480
+ <div id="method-i-to_s" class="method-detail ">
481
+
482
+ <div class="method-heading">
483
+ <span class="method-name">to_s</span><span
484
+ class="method-args">()</span>
485
+
486
+ <span class="method-click-advice">click to toggle source</span>
487
+
488
+ </div>
489
+
490
+
491
+ <div class="method-description">
492
+
493
+ <p>Print the <a href="Airport.html">Airport</a> ICAO code. Allows the object
494
+ to act as a direct replacement for string input.</p>
495
+
496
+
497
+
498
+
499
+ <div class="method-source-code" id="to_s-source">
500
+ <pre><span class="ruby-comment"># File lib/atc-tools/airport.rb, line 98</span>
501
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">to_s</span>
502
+ <span class="ruby-ivar">@code</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">upcase</span>
503
+ <span class="ruby-keyword">end</span></pre>
504
+ </div><!-- to_s-source -->
505
+
506
+ </div>
507
+
508
+
509
+
510
+
511
+ </div><!-- to_s-method -->
512
+
513
+
514
+ <div id="method-i-true_heading_from" class="method-detail ">
515
+
516
+ <div class="method-heading">
517
+ <span class="method-name">true_heading_from</span><span
518
+ class="method-args">(departure)</span>
519
+
520
+ <span class="method-click-advice">click to toggle source</span>
521
+
522
+ </div>
523
+
524
+
525
+ <div class="method-description">
526
+
527
+ <p>Calculate the true heading from the specified airport. Takes an ICAO code
528
+ or <a href="Airport.html">Airport</a> object.</p>
529
+
530
+
531
+
532
+
533
+ <div class="method-source-code" id="true_heading_from-source">
534
+ <pre><span class="ruby-comment"># File lib/atc-tools/airport.rb, line 68</span>
535
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">true_heading_from</span>(<span class="ruby-identifier">departure</span>)
536
+ <span class="ruby-value">360.0</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">true_heading_to</span>(<span class="ruby-identifier">departure</span>)
537
+ <span class="ruby-keyword">end</span></pre>
538
+ </div><!-- true_heading_from-source -->
539
+
540
+ </div>
541
+
542
+
543
+
544
+
545
+ </div><!-- true_heading_from-method -->
546
+
547
+
548
+ <div id="method-i-true_heading_to" class="method-detail ">
549
+
550
+ <div class="method-heading">
551
+ <span class="method-name">true_heading_to</span><span
552
+ class="method-args">(arrival)</span>
553
+
554
+ <span class="method-click-advice">click to toggle source</span>
555
+
556
+ </div>
557
+
558
+
559
+ <div class="method-description">
560
+
561
+ <p>Calculate the true heading to the specified airport. Takes an ICAO code or
562
+ <a href="Airport.html">Airport</a> object.</p>
563
+
564
+
565
+
566
+
567
+ <div class="method-source-code" id="true_heading_to-source">
568
+ <pre><span class="ruby-comment"># File lib/atc-tools/airport.rb, line 55</span>
569
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">true_heading_to</span>(<span class="ruby-identifier">arrival</span>)
570
+ <span class="ruby-ivar">@heading_uri</span> = <span class="ruby-node">&quot;http://www6.landings.com/cgi-bin/nph-dist_apt?airport1=#{@code.downcase}&amp;airport2=#{arrival.to_s.strip.downcase}&quot;</span>
571
+ <span class="ruby-identifier">response</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">get</span> <span class="ruby-constant">URI</span> <span class="ruby-identifier">heading_uri</span>
572
+ <span class="ruby-identifier">r</span> = <span class="ruby-identifier">response</span>.<span class="ruby-identifier">scan</span> <span class="ruby-regexp">/(?:heading:)\s*([\d\.]+)\s+/</span>
573
+
574
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ATCTools</span><span class="ruby-operator">::</span><span class="ruby-constant">HeadingDiscoveryError</span>, <span class="ruby-node">&quot;Heading from #{@code.upcase} to #{arrival.to_s.upcase} not found.&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">count</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
575
+
576
+ <span class="ruby-identifier">true_hdg</span> = <span class="ruby-identifier">r</span>.<span class="ruby-identifier">flatten</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">to_f</span>
577
+ <span class="ruby-keyword">end</span></pre>
578
+ </div><!-- true_heading_to-source -->
579
+
580
+ </div>
581
+
582
+
583
+
584
+
585
+ </div><!-- true_heading_to-method -->
586
+
587
+
588
+ <div id="method-i-true_to_magnetic" class="method-detail ">
589
+
590
+ <div class="method-heading">
591
+ <span class="method-name">true_to_magnetic</span><span
592
+ class="method-args">(heading)</span>
593
+
594
+ <span class="method-click-advice">click to toggle source</span>
595
+
596
+ </div>
597
+
598
+
599
+ <div class="method-description">
600
+
601
+ <p>Convert a true heading to magnetic based on the airport&#39;s magnetic
602
+ variance.</p>
603
+
604
+
605
+
606
+
607
+ <div class="method-source-code" id="true_to_magnetic-source">
608
+ <pre><span class="ruby-comment"># File lib/atc-tools/airport.rb, line 86</span>
609
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">true_to_magnetic</span>(<span class="ruby-identifier">heading</span>)
610
+ <span class="ruby-identifier">heading</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@variance</span>
611
+ <span class="ruby-keyword">end</span></pre>
612
+ </div><!-- true_to_magnetic-source -->
613
+
614
+ </div>
615
+
616
+
617
+
618
+
619
+ </div><!-- true_to_magnetic-method -->
620
+
621
+
622
+ </section><!-- public-instance-method-details -->
623
+
624
+ </section><!-- 5Buntitled-5D -->
625
+
626
+ </div><!-- documentation -->
627
+
628
+
629
+ <footer id="validator-badges">
630
+ <p><a href="http://validator.w3.org/check/referer">[Validate]</a>
631
+ <p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 4.0.1.
632
+ <p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
633
+ </footer>
634
+