Skip to content

Commit

Permalink
Merge 6ea495a into fc3b979
Browse files Browse the repository at this point in the history
  • Loading branch information
leejjoon committed Jul 2, 2018
2 parents fc3b979 + 6ea495a commit 48dee6a
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 11 deletions.
5 changes: 4 additions & 1 deletion CHANGES.rst
@@ -1,7 +1,10 @@
2.1 (unreleased)
----------------

- No changes yet
Other Changes and Additions
^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Support for angular units of 'd' and 'r' added.


2.0 (Oct 14, 2017)
Expand Down
28 changes: 18 additions & 10 deletions pyregion/region_numbers.py
@@ -1,3 +1,4 @@
from math import pi
from pyparsing import Literal, Optional, Combine, Or, Word, nums


Expand Down Expand Up @@ -133,15 +134,20 @@ def __repr__(self):
def __init__(self, kl):
self.text = "".join(kl)

m, s = 0, 0
if kl[1] == "'":
m = float(kl[0])
if len(kl) == 4:
s = float(kl[2])
else:
s = float(kl[0])

self.v = (m + s / 60.) / 60.
d, m, s = 0, 0, 0
if kl[1] == "d": # format of "3.5d"
d = float(kl[0])
elif kl[1] == "r": # format of "3.5r"
d = float(kl[0]) / pi * 180.
else: # 3'5" or 3'
if kl[1] == "'":
m = float(kl[0])
if len(kl) == 4:
s = float(kl[2])
else: # should be a format of 5"
s = float(kl[0])

self.v = d + (m + s / 60.) / 60.
self.degree = self.v


Expand Down Expand Up @@ -189,8 +195,10 @@ def _dms_number():
def _angular_distance():
_m = (usn + Literal("\'").leaveWhitespace())
_s = (usn + Literal("\"").leaveWhitespace())
_dr = (usn + Or([Literal("d"),
Literal("r")]).leaveWhitespace())

ms = Or([_m + Optional(_s), _s])
ms = Or([_m + Optional(_s), _s, _dr])

ms = ms.setParseAction(lambda s, l, tok: AngularDistance(tok))

Expand Down
3 changes: 3 additions & 0 deletions pyregion/tests/test_region_numbers.py
@@ -1,3 +1,4 @@
from math import pi
from ..region_numbers import (usn, simple_integer, sexadecimal60, Sixty,
hms_number, dms_number, angular_distance,
CoordOdd, HMS)
Expand Down Expand Up @@ -42,6 +43,8 @@ def test_ang_distance():

assert s("32.3'")[0].v == Sixty(1, 0, 32.3, 0.).v
assert s("32\'24\"")[0].v == Sixty(1, 0, 32, 24).v
assert s("0.3d")[0].v == Sixty(1, 0.3, 0, 0).v
assert s("1r")[0].v == Sixty(1, 1./pi*180., 0, 0).v


def test_coord_odd():
Expand Down

0 comments on commit 48dee6a

Please sign in to comment.