quanty 1.1.0 → 1.2.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.
- data/History.txt +1 -1
- data/Manifest.txt +1 -0
- data/README.en +6 -5
- data/extconf.rb +1 -1
- data/lib/quanty.rb +4 -4
- data/lib/quanty/.cvsignore +1 -0
- data/lib/quanty/fact.rb +43 -29
- data/lib/quanty/main.rb +8 -3
- data/lib/quanty/parse.rb +382 -335
- data/parse.y +8 -9
- data/quanty-en.rd +49 -43
- data/quanty-ja.rd +44 -38
- data/units.dat +24 -48
- metadata +4 -3
data/parse.y
CHANGED
@@ -12,7 +12,7 @@ class Parse
|
|
12
12
|
prechigh
|
13
13
|
nonassoc UMINUS
|
14
14
|
right POW UPOW
|
15
|
-
left '*' '/' '|'
|
15
|
+
left '.' '*' '/' '|'
|
16
16
|
left '+' '-'
|
17
17
|
preclow
|
18
18
|
|
@@ -42,6 +42,7 @@ rule
|
|
42
42
|
|
43
43
|
seq : exp
|
44
44
|
| seq exp { result.mul!(val[1]) }
|
45
|
+
| seq '.' exp { result.mul!(val[2]) }
|
45
46
|
| seq '*' exp { result.mul!(val[2]) }
|
46
47
|
| seq '/' exp { result.div!(val[2]) }
|
47
48
|
| seq '*' num { result.fac!(val[2]) }
|
@@ -76,18 +77,16 @@ class Quanty
|
|
76
77
|
while str.size > 0 do
|
77
78
|
#p str
|
78
79
|
case str
|
79
|
-
when /\A[\s\n]+/
|
80
|
-
when /\A\d+\.?\d*([eE][+-]?\d+)?/
|
80
|
+
when /\A[\s\n]+/o
|
81
|
+
when /\A\d+\.?\d*([eE][+-]?\d+)?/o
|
81
82
|
@q.push [:NUMBER, $&.to_f]
|
82
|
-
|
83
|
-
when /\A[A-Za-z_]+ -/u
|
84
|
-
when /\A[A-Za-z_µ]+([A-Za-z_µ0-9-]+[A-Za-z_µ])?/ou
|
83
|
+
when /\A[A-Za-z_]+([A-Za-z_0-9-]+[A-Za-z_])?/o
|
85
84
|
@q.push [:WORD, $&]
|
86
|
-
when /\A[$%'"]'?/
|
85
|
+
when /\A[$%'"]'?/o
|
87
86
|
@q.push [:WORD, $&]
|
88
|
-
when /\A\^|\A\*\*/
|
87
|
+
when /\A\^|\A\*\*/o
|
89
88
|
@q.push [:POW, $&]
|
90
|
-
when /\A./
|
89
|
+
when /\A./o
|
91
90
|
@q.push [$&,$&]
|
92
91
|
end
|
93
92
|
str = $'
|
data/quanty-en.rd
CHANGED
@@ -21,87 +21,93 @@ Featuring:
|
|
21
21
|
== Quanty class
|
22
22
|
|
23
23
|
=== Super Class:
|
24
|
-
|
24
|
+
Object (Numeric is better??)
|
25
25
|
|
26
26
|
=== Class method:
|
27
27
|
--- Quanty.new([value],[unit])
|
28
28
|
--- Quanty([value],[unit])
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
29
|
+
Create Quanty class instance having ((|value|)) and ((|unit|)) (is String).
|
30
|
+
If ((|value|)) is omitted, ((|value|)) = 1 is assumed.
|
31
|
+
If ((|unit|)) is omitted, ((|unit|)) = "" is assumed,
|
32
|
+
which is regarded as a quantity with "dimensionless" unit
|
33
|
+
(i.e. all dimensions of unit are zero).
|
34
|
+
Refer to ((<Notation of unit>)) below.
|
35
35
|
|
36
36
|
=== Methods:
|
37
37
|
--- self + other
|
38
38
|
--- self - other
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
39
|
+
Addition and subtraction of quantities.
|
40
|
+
Operation is made after
|
41
|
+
the unit of ((|other|)) is converted to the unit of ((|self|)).
|
42
|
+
Exception is raised if unit conversion is failed.
|
43
|
+
Return the Quanty class instance with the unit of ((|self|)).
|
44
44
|
|
45
45
|
--- self * other
|
46
|
-
|
47
|
-
|
46
|
+
Multiplication of quantities.
|
47
|
+
Resulting unit is made by concatenating ((|self|)) and ((|other|)).
|
48
|
+
|
48
49
|
--- self / other
|
49
|
-
|
50
|
-
|
51
|
-
|
50
|
+
Division of quantities.
|
51
|
+
Resulting unit is made by placing (({"/"}))
|
52
|
+
between ((|self|)) and ((|other|)), and concatenating them.
|
52
53
|
|
53
54
|
--- self ** number
|
54
|
-
|
55
|
-
|
55
|
+
Power of quantities.
|
56
|
+
Resulting unit is made by "(unit of self)^((|number|))"
|
56
57
|
|
57
58
|
--- self == other
|
58
59
|
--- self < other
|
59
60
|
--- self <= other
|
60
61
|
--- self > other
|
61
62
|
--- self >= other
|
62
|
-
|
63
|
+
Comparison of quantities.
|
63
64
|
|
64
65
|
--- coerce(number)
|
65
|
-
|
66
|
-
|
66
|
+
Convert ((|number|)) to Quanty class instance with dimensionless unit,
|
67
|
+
then return [((|number|)), ((|self|))].
|
68
|
+
|
69
|
+
--- to_si
|
70
|
+
--- to_SI
|
71
|
+
Convert ((|self|)) to the SI unit system.
|
67
72
|
|
68
73
|
--- to_f
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
74
|
+
If ((|self|)) is a quantity with a dimensionless unit, return its value.
|
75
|
+
If ((|self|)) is a quantity with an angular unit,
|
76
|
+
return the value converted into radian.
|
77
|
+
Otherwise, raise exception.
|
73
78
|
|
74
79
|
--- unit
|
75
|
-
|
80
|
+
Return the string of unit.
|
76
81
|
|
77
82
|
--- val
|
78
83
|
--- value
|
79
|
-
|
84
|
+
Return the value.
|
80
85
|
|
81
86
|
--- want(unit)
|
82
|
-
|
83
|
-
|
87
|
+
Convert ((|self|)) to a quantity with ((|unit|)) (is String),
|
88
|
+
and return Quanty class instance.
|
84
89
|
|
85
90
|
== Notation of unit
|
86
91
|
|
87
|
-
|
88
|
-
|
92
|
+
==== Multiplication
|
93
|
+
'N m' == 'N*m'
|
89
94
|
|
90
|
-
|
91
|
-
|
95
|
+
==== Division
|
96
|
+
'/s' , 'm/s'
|
92
97
|
|
93
|
-
|
94
|
-
|
98
|
+
==== Power
|
99
|
+
'm-2' == 'm^-2' == 'm**-2'
|
95
100
|
|
96
|
-
|
97
|
-
|
101
|
+
==== Numerical factor
|
102
|
+
'12 inch' == 'feet'
|
98
103
|
|
99
|
-
|
100
|
-
|
101
|
-
|
104
|
+
==== Combination rule
|
105
|
+
'm/s*m' == 'm^2/s'.
|
106
|
+
'm/(s*m)' == '/s'.
|
102
107
|
|
103
|
-
|
108
|
+
+ See ((%parse.y%)) for more.
|
104
109
|
|
105
|
-
|
110
|
+
== Author
|
111
|
+
((<Masahiro Tanaka|URL:http://www.ir.isas.ac.jp/~masa/index-e.html>))
|
106
112
|
(2001-04-25)
|
107
113
|
=end
|
data/quanty-ja.rd
CHANGED
@@ -24,79 +24,85 @@
|
|
24
24
|
=== ���饹��å�:
|
25
25
|
--- Quanty.new([value],[unit])
|
26
26
|
--- Quanty([value],[unit])
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
27
|
+
�̤��ͤ�((|value|))��ñ�̤�((|unit|)) (ʸ����)�Ȥ���
|
28
|
+
Unit ���饹�Υ������������롣
|
29
|
+
((|value|))����ά���줿���ϡ�1�����ꤵ�줿����Ʊ����
|
30
|
+
((|unit|))����ά���줿���ϡ�""�����ꤵ�줿����Ʊ���ǡ�ñ�̤ʤ��̤ˤʤ롣
|
31
|
+
ñ�̤ν����ϡ�����((<ñ��ɽ��ˡ>))�ȡ�
|
32
32
|
|
33
33
|
=== ��å�:
|
34
34
|
--- self + other
|
35
35
|
--- self - other
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
�̤βû���������
|
37
|
+
((|other|))��ñ�̤�((|self|))��ñ�̤��Ѵ����Ʊ黻���롣
|
38
|
+
ñ���Ѵ����Ǥ��ʤ�����㳰��ȯ�����롣
|
39
|
+
��̤�((|self|))��ñ�̤ˤ��� Quanty ���饹�Υ������֤���
|
40
40
|
|
41
41
|
--- self * other
|
42
|
-
|
43
|
-
|
42
|
+
�̤ξ軻��
|
43
|
+
��̤�ñ�̤ϡ�((|self|))��((|other|))��ñ�̤�Ϣ�뤷�ƺ�롣
|
44
|
+
|
44
45
|
--- self / other
|
45
|
-
|
46
|
-
|
47
|
-
|
46
|
+
�̤ν�����
|
47
|
+
��̤�ñ�̤ϡ�
|
48
|
+
((|self|))��((|other|))��ñ�̤�(({"/"}))��Ϥ����Ϣ�뤷�ƺ�롣
|
48
49
|
|
49
50
|
--- self ** number
|
50
|
-
|
51
|
-
|
51
|
+
�̤��Ѿ衣
|
52
|
+
��̤�ñ�̤ϡ�"(((|self|))��ñ��)^((|number|))" �Ȥ��ƺ�롣
|
52
53
|
|
53
54
|
--- self == other
|
54
55
|
--- self < other
|
55
56
|
--- self <= other
|
56
57
|
--- self > other
|
57
58
|
--- self >= other
|
58
|
-
|
59
|
+
�̤���ӡ�
|
59
60
|
|
60
61
|
--- coerce(number)
|
61
|
-
|
62
|
-
|
62
|
+
((|number|))��ñ�̤ʤ�Quanty���饹�Υ����ˤ���
|
63
|
+
[((|number|)),((|self|))]�Ȥ����֤���
|
64
|
+
|
65
|
+
--- to_si
|
66
|
+
--- to_SI
|
67
|
+
((|self|))��SIñ�̷Ϥ��Ѵ����롣
|
63
68
|
|
64
69
|
--- to_f
|
65
|
-
|
66
|
-
|
67
|
-
|
70
|
+
((|self|))��ñ�̤ʤ��̤ξ��ϡ����Ȥ��ͤ��֤���
|
71
|
+
((|self|))�����٤ξ��ϡ�radian���Ѵ������ͤ��֤���
|
72
|
+
����ʳ���ñ�̤ξ��ϡ��㳰��ȯ�����롣
|
68
73
|
|
69
74
|
--- unit
|
70
|
-
|
75
|
+
ñ�̤�ʸ������֤���
|
71
76
|
|
72
77
|
--- val
|
73
78
|
--- value
|
74
|
-
|
79
|
+
�̤��ͤ��֤���
|
75
80
|
|
76
81
|
--- want(unit)
|
77
|
-
|
82
|
+
((|self|))�� ((|unit|)) (ʸ����) ��ñ�̤Ȥ����̤��Ѵ����롣
|
78
83
|
|
79
84
|
|
80
85
|
== ñ��ɽ��ˡ
|
81
86
|
|
82
|
-
|
83
|
-
|
87
|
+
==== ��ˡ
|
88
|
+
'N m' == 'N*m'
|
84
89
|
|
85
|
-
|
86
|
-
|
90
|
+
==== ��ˡ
|
91
|
+
'/s' , 'm/s'
|
87
92
|
|
88
|
-
|
89
|
-
|
93
|
+
==== �٤�
|
94
|
+
'm-2' == 'm^-2' == 'm**-2'
|
90
95
|
|
91
|
-
|
92
|
-
|
96
|
+
==== ������
|
97
|
+
'12 inch' == 'feet'
|
93
98
|
|
94
|
-
|
95
|
-
|
96
|
-
|
99
|
+
==== ����
|
100
|
+
'm/s*m' == 'm^2/s'.
|
101
|
+
'm/(s*m)' == '/s'.
|
97
102
|
|
98
|
-
|
103
|
+
+ �ܺ٤� ((%parse.y%)) �ȤΤ��ȡ�
|
99
104
|
|
100
|
-
|
105
|
+
== Author
|
106
|
+
((<Masahiro Tanaka|URL:http://www.ir.isas.ac.jp/~masa/index-e.html>))
|
101
107
|
(2001-04-25)
|
102
108
|
=end
|
data/units.dat
CHANGED
@@ -87,15 +87,15 @@
|
|
87
87
|
kg ! # Mass of the international prototype
|
88
88
|
kilogram kg
|
89
89
|
|
90
|
-
s ! # Duration of 9192631770 periods of the radiation
|
91
|
-
second s # corresponding to the transition between the two hyperfine
|
92
|
-
# levels of the ground state of the cesium-133 atom
|
93
|
-
|
94
90
|
m ! # Length of the path traveled by light in a vacuum
|
95
91
|
meter m # during 1|299792458 seconds. Originally meant to be
|
96
92
|
# 1e-7 of the length along a meridian from the equator
|
97
93
|
# to a pole.
|
98
94
|
|
95
|
+
s ! # Duration of 9192631770 periods of the radiation
|
96
|
+
second s # corresponding to the transition between the two hyperfine
|
97
|
+
# levels of the ground state of the cesium-133 atom
|
98
|
+
|
99
99
|
A ! # The current which produces a force of 2e-7 N/m between two
|
100
100
|
ampere A # infinitely long wires that are 1 meter apart
|
101
101
|
amp ampere
|
@@ -145,6 +145,9 @@ bit ! # Basic unit of information (entropy). The entropy in bits
|
|
145
145
|
# p(i) is the probability that the random variable takes
|
146
146
|
# on the value i.
|
147
147
|
|
148
|
+
mag ! # Magnitude used in Astronomy
|
149
|
+
magnitude mag # added by M.Tanaka
|
150
|
+
|
148
151
|
pi 3.14159265358979323846
|
149
152
|
|
150
153
|
###########################################################################
|
@@ -262,7 +265,7 @@ septendecillion 1e54
|
|
262
265
|
octodecillion 1e57
|
263
266
|
novemdecillion 1e60
|
264
267
|
vigintillion 1e63
|
265
|
-
centillion 1e303
|
268
|
+
#centillion 1e303
|
266
269
|
|
267
270
|
googol 1e100
|
268
271
|
|
@@ -3404,21 +3407,21 @@ blanc 1|24 periot
|
|
3404
3407
|
# Some definitions using ISO 8859-1 characters
|
3405
3408
|
#
|
3406
3409
|
|
3407
|
-
|
3408
|
-
|
3409
|
-
|
3410
|
-
|
3411
|
-
|
3412
|
-
|
3413
|
-
|
3414
|
-
|
3415
|
-
|
3416
|
-
|
3417
|
-
|
3418
|
-
|
3419
|
-
|
3420
|
-
|
3421
|
-
|
3410
|
+
�- 1|4
|
3411
|
+
�- 1|2
|
3412
|
+
�- 3|4
|
3413
|
+
�- micro
|
3414
|
+
� cent
|
3415
|
+
� britainpound
|
3416
|
+
� japanyen
|
3417
|
+
�ngstr�m angstrom
|
3418
|
+
� angstrom
|
3419
|
+
r�ntgen roentgen
|
3420
|
+
�C degC
|
3421
|
+
�F degF
|
3422
|
+
�K K # �K is incorrect notation
|
3423
|
+
�R degR
|
3424
|
+
� degree
|
3422
3425
|
|
3423
3426
|
|
3424
3427
|
############################################################################
|
@@ -3465,7 +3468,7 @@ slugf slug force
|
|
3465
3468
|
slinch lbf s^2 / inch # Mass unit derived from inch second
|
3466
3469
|
slinchf slinch force # pound-force system. Used in space
|
3467
3470
|
geepound slug
|
3468
|
-
olddidotpoint 1|72 frenchinch #
|
3471
|
+
olddidotpoint 1|72 frenchinch # Fran�ois Ambroise Didot, one of
|
3469
3472
|
frenchprinterspoint olddidotpoint
|
3470
3473
|
denier 1|9 tex # used for silk and rayon
|
3471
3474
|
austriaschilling 1|13.7603 euro
|
@@ -3520,30 +3523,3 @@ perm_twentythree perm_23C
|
|
3520
3523
|
# marathon 26 miles + 385 yards
|
3521
3524
|
# eggvolume 3 tablespoons + 1|2 tsp
|
3522
3525
|
# standardgauge 4 ft + 8.5 in # Standard width between railroad track
|
3523
|
-
|
3524
|
-
|
3525
|
-
###########################################################################
|
3526
|
-
# #
|
3527
|
-
# oddb units #
|
3528
|
-
# #
|
3529
|
-
###########################################################################
|
3530
|
-
|
3531
|
-
UPhEur ! # Unite Pharmacopee Europeenne
|
3532
|
-
U.Ph.Eur. UPhEur
|
3533
|
-
|
3534
|
-
UI !
|
3535
|
-
U UI
|
3536
|
-
U. UI
|
3537
|
-
U.I. UI
|
3538
|
-
IE UI
|
3539
|
-
I.E. IE
|
3540
|
-
|
3541
|
-
LSU ! # lipoprotein lipase releasing units
|
3542
|
-
|
3543
|
-
tablet ! # one of the "official doses" in ATC-DDD
|
3544
|
-
|
3545
|
-
Mio- 1e6
|
3546
|
-
Mio 1e6
|
3547
|
-
µ- 1e-6
|
3548
|
-
u- 1e-6
|
3549
|
-
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quanty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 0
|
10
|
-
version: 1.
|
10
|
+
version: 1.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Masahiro Tanaka, Masaomi Hatakeyama, Zeno R.R. Davatz
|
@@ -59,6 +59,7 @@ files:
|
|
59
59
|
- Rakefile
|
60
60
|
- extconf.rb
|
61
61
|
- lib/quanty.rb
|
62
|
+
- lib/quanty/.cvsignore
|
62
63
|
- lib/quanty/fact.rb
|
63
64
|
- lib/quanty/main.rb
|
64
65
|
- lib/quanty/parse.rb
|