asciiunits 0.1.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/lib/asciiunits.rb ADDED
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "asciiunits/version"
4
+
5
+ module Asciiunits
6
+ REPO_ROOT = File.expand_path("..", __dir__)
7
+ ARTIFACT_PATH = File.join(REPO_ROOT, "artifacts/unitsml.json")
8
+ TABLES_DIR = File.join(REPO_ROOT, "tables")
9
+ GRAMMAR_PATH = File.join(REPO_ROOT, "grammars/unitsml.parg")
10
+ CORPUS_PATH = File.join(REPO_ROOT, "corpora/unitsml/corpus.json")
11
+
12
+ module_function
13
+
14
+ # Loads the checksummed PARG artifact through the parsanol runtime.
15
+ # The returned Parsanol::PARG::Artifact exposes parse, parse_and_bind,
16
+ # parse_recovering and run_tests for the single entry "expression".
17
+ def load_artifact
18
+ require "parsanol"
19
+ Parsanol::PARG::Artifact.load(ARTIFACT_PATH, tables_dir: TABLES_DIR)
20
+ end
21
+ end
@@ -0,0 +1,24 @@
1
+ suite smoke for entry expression {
2
+ accept "m"
3
+ accept "mm"
4
+ accept "um"
5
+ accept "kg"
6
+ accept "mm*s^-2"
7
+ accept "sqrt(Hz)"
8
+ accept "K/(kg*m)"
9
+ accept "Hz^10*darcy^100"
10
+ accept "mW*cm^(-2)"
11
+ accept "p-"
12
+ accept "1"
13
+ accept "(m)(s)"
14
+ accept "m s"
15
+ accept "km//s"
16
+ accept "sqrt(sqrt(m))"
17
+ accept "ton-force (2000 lb)"
18
+ accept "dim_Theta*dim_L^2"
19
+ reject "que?"
20
+ reject "m2"
21
+ reject "dim_Ldim_M"
22
+ reject "(cm)^3"
23
+ reject "sqrt(m)^2"
24
+ }
@@ -0,0 +1,9 @@
1
+ ---
2
+ - name: dim_Theta
3
+ - name: dim_phi
4
+ - name: dim_I
5
+ - name: dim_J
6
+ - name: dim_L
7
+ - name: dim_M
8
+ - name: dim_N
9
+ - name: dim_T
@@ -0,0 +1,10 @@
1
+ ---
2
+ - name: Ei
3
+ - name: Gi
4
+ - name: Ki
5
+ - name: Mi
6
+ - name: Pi
7
+ - name: Ti
8
+ - name: Yi
9
+ - name: Zi
10
+ - name: da
@@ -0,0 +1,25 @@
1
+ ---
2
+ - name: '1'
3
+ - name: E
4
+ - name: G
5
+ - name: M
6
+ - name: P
7
+ - name: Q
8
+ - name: R
9
+ - name: T
10
+ - name: "Y"
11
+ - name: Z
12
+ - name: a
13
+ - name: c
14
+ - name: d
15
+ - name: f
16
+ - name: h
17
+ - name: k
18
+ - name: m
19
+ - name: "n"
20
+ - name: p
21
+ - name: q
22
+ - name: r
23
+ - name: u
24
+ - name: "y"
25
+ - name: z
data/tables/units.yaml ADDED
@@ -0,0 +1,274 @@
1
+ ---
2
+ - name: ton-force (2000 lb)
3
+ - name: ton_refrigeration
4
+ - name: dprime_Hg_32degF
5
+ - name: dprime_Hg_60degF
6
+ - name: fl oz (US label)
7
+ - name: a_sidereal_year
8
+ - name: a_tropical_year
9
+ - name: aW (Cardelli)
10
+ - name: ftH_2O_39degF
11
+ - name: inH_2O_39degF
12
+ - name: inH_2O_60degF
13
+ - name: liq pint (US)
14
+ - name: oz (US label)
15
+ - name: pica_computer
16
+ - name: rad_radiation
17
+ - name: cmH_2O_4degC
18
+ - name: ft_US_survey
19
+ - name: h-bar_atomic
20
+ - name: in_US_survey
21
+ - name: lambda-bar_C
22
+ - name: mi_US_survey
23
+ - name: min_sidereal
24
+ - name: pica_printer
25
+ - name: yd_US_survey
26
+ - name: dry pt (US)
27
+ - name: dry qt (US)
28
+ - name: gi_imperial
29
+ - name: hp_electric
30
+ - name: inHg_32degF
31
+ - name: inHg_60degF
32
+ - name: liq qt (US)
33
+ - name: pt_computer
34
+ - name: statcoulomb
35
+ - name: "\"Hg_32degF"
36
+ - name: "\"Hg_60degF"
37
+ - name: Btu_39degF
38
+ - name: Btu_59degF
39
+ - name: Btu_60degF
40
+ - name: cmHg_0degC
41
+ - name: d_sidereal
42
+ - name: dwt (troy)
43
+ - name: fl oz (UK)
44
+ - name: fl oz (US)
45
+ - name: h-bar_eV_s
46
+ - name: h_sidereal
47
+ - name: m_e_atomic
48
+ - name: pt_printer
49
+ - name: rh_percent
50
+ - name: s_sidereal
51
+ - name: tbsp_label
52
+ - name: cup_label
53
+ - name: dprime_Hg
54
+ - name: dprime_in
55
+ - name: dr (avdp)
56
+ - name: hp_boiler
57
+ - name: hp_metric
58
+ - name: prime_min
59
+ - name: scr (ap.)
60
+ - name: ton_short
61
+ - name: tsp_label
62
+ - name: Btu_mean
63
+ - name: E_erlang
64
+ - name: bbl (US)
65
+ - name: cwt (UK)
66
+ - name: cwt (US)
67
+ - name: dprime_s
68
+ - name: gal (UK)
69
+ - name: gal (US)
70
+ - name: hp_water
71
+ - name: mil_nato
72
+ - name: prime_Hg
73
+ - name: prime_ft
74
+ - name: statwatt
75
+ - name: thm (EC)
76
+ - name: thm (US)
77
+ - name: ton_long
78
+ - name: Lambert
79
+ - name: bu (US)
80
+ - name: lb_troy
81
+ - name: oz_troy
82
+ - name: pt (UK)
83
+ - name: qt (UK)
84
+ - name: statmho
85
+ - name: statohm
86
+ - name: ton_TNT
87
+ - name: Btu_th
88
+ - name: a_year
89
+ - name: byte_B
90
+ - name: cal_IT
91
+ - name: cal_th
92
+ - name: cmH_2O
93
+ - name: dprime
94
+ - name: ftH_2O
95
+ - name: inH_2O
96
+ - name: kayser
97
+ - name: micron
98
+ - name: mmH_2O
99
+ - name: statWb
100
+ - name: "'_min"
101
+ - name: Aring
102
+ - name: Darcy
103
+ - name: abohm
104
+ - name: barye
105
+ - name: bel_B
106
+ - name: dB_mW
107
+ - name: darcy
108
+ - name: fermi
109
+ - name: fl dr
110
+ - name: gamma
111
+ - name: h-bar
112
+ - name: hp_UK
113
+ - name: lbmol
114
+ - name: minim
115
+ - name: prime
116
+ - name: shake
117
+ - name: statA
118
+ - name: statF
119
+ - name: statH
120
+ - name: statT
121
+ - name: statV
122
+ - name: "\"_in"
123
+ - name: "'_ft"
124
+ - name: Hart
125
+ - name: Torr
126
+ - name: barn
127
+ - name: cmHg
128
+ - name: cmil
129
+ - name: degC
130
+ - name: degF
131
+ - name: degK
132
+ - name: degR
133
+ - name: fath
134
+ - name: ft.L
135
+ - name: ft.c
136
+ - name: ftHg
137
+ - name: inHg
138
+ - name: l.h.
139
+ - name: l.m.
140
+ - name: l.s.
141
+ - name: l.w.
142
+ - name: l.y.
143
+ - name: mmHg
144
+ - name: slug
145
+ - name: tbsp
146
+ - name: thou
147
+ - name: "\"Hg"
148
+ - name: "\"_s"
149
+ - name: "'Hg"
150
+ - name: Btu
151
+ - name: E_h
152
+ - name: Gal
153
+ - name: Ohm
154
+ - name: a_0
155
+ - name: abA
156
+ - name: abC
157
+ - name: abF
158
+ - name: abH
159
+ - name: abS
160
+ - name: abV
161
+ - name: atm
162
+ - name: bar
163
+ - name: bit
164
+ - name: c_0
165
+ - name: cal
166
+ - name: cup
167
+ - name: dBm
168
+ - name: dec
169
+ - name: deg
170
+ - name: den
171
+ - name: dyn
172
+ - name: erg
173
+ - name: fur
174
+ - name: gon
175
+ - name: gpm
176
+ - name: kat
177
+ - name: kip
178
+ - name: lbf
179
+ - name: lnk
180
+ - name: m_e
181
+ - name: mil
182
+ - name: min
183
+ - name: mol
184
+ - name: mpg
185
+ - name: oct
186
+ - name: pdl
187
+ - name: ppm
188
+ - name: psi
189
+ - name: rad
190
+ - name: rem
191
+ - name: rhe
192
+ - name: tex
193
+ - name: tsp
194
+ - name: var
195
+ - name: Bd
196
+ - name: Bi
197
+ - name: Bq
198
+ - name: Ci
199
+ - name: Da
200
+ - name: Gi
201
+ - name: Gs
202
+ - name: Gy
203
+ - name: Hz
204
+ - name: Mx
205
+ - name: Np
206
+ - name: Oe
207
+ - name: Pa
208
+ - name: Sh
209
+ - name: St
210
+ - name: Sv
211
+ - name: Wb
212
+ - name: ac
213
+ - name: as
214
+ - name: at
215
+ - name: cd
216
+ - name: ch
217
+ - name: ct
218
+ - name: dr
219
+ - name: eV
220
+ - name: ft
221
+ - name: gf
222
+ - name: gi
223
+ - name: gr
224
+ - name: ha
225
+ - name: hp
226
+ - name: in
227
+ - name: kn
228
+ - name: kp
229
+ - name: lb
230
+ - name: lm
231
+ - name: lx
232
+ - name: mi
233
+ - name: oz
234
+ - name: pH
235
+ - name: pc
236
+ - name: ph
237
+ - name: pk
238
+ - name: rd
239
+ - name: rh
240
+ - name: sb
241
+ - name: sr
242
+ - name: st
243
+ - name: ua
244
+ - name: yd
245
+ - name: "\""
246
+ - name: "'"
247
+ - name: A
248
+ - name: C
249
+ - name: D
250
+ - name: F
251
+ - name: G
252
+ - name: H
253
+ - name: J
254
+ - name: K
255
+ - name: L
256
+ - name: M
257
+ - name: "N"
258
+ - name: P
259
+ - name: R
260
+ - name: S
261
+ - name: T
262
+ - name: V
263
+ - name: W
264
+ - name: a
265
+ - name: c
266
+ - name: d
267
+ - name: e
268
+ - name: g
269
+ - name: h
270
+ - name: l
271
+ - name: m
272
+ - name: s
273
+ - name: t
274
+ - name: u
metadata ADDED
@@ -0,0 +1,77 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: asciiunits
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ribose Inc.
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2026-10-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: parsanol
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ description: 'Checksummed parsanol PARG artifact, terminal tables and oracle-frozen
28
+ conformance corpus for the unitsml(...) expression syntax of UnitsML. Runtime-agnostic:
29
+ load the artifact with any Parsanol runtime (Ruby, Rust, wasm).'
30
+ email:
31
+ - open.source@ribose.com
32
+ executables: []
33
+ extensions: []
34
+ extra_rdoc_files: []
35
+ files:
36
+ - LICENSE.md
37
+ - README.adoc
38
+ - artifacts/unitsml.checksums.txt
39
+ - artifacts/unitsml.json
40
+ - corpora/unitsml/corpus.json
41
+ - corpora/unitsml/expected-kinds.json
42
+ - corpora/unitsml/inputs.txt
43
+ - grammars/unitsml.parg
44
+ - lib/asciiunits.rb
45
+ - lib/asciiunits/version.rb
46
+ - suites/unitsml.pgtest
47
+ - tables/dimensions.yaml
48
+ - tables/prefixes_double.yaml
49
+ - tables/prefixes_single.yaml
50
+ - tables/units.yaml
51
+ homepage: https://github.com/unitsml/asciiunits
52
+ licenses:
53
+ - BSD-2-Clause
54
+ metadata:
55
+ homepage_uri: https://github.com/unitsml/asciiunits
56
+ source_code_uri: https://github.com/unitsml/asciiunits
57
+ rubygems_mfa_required: 'true'
58
+ post_install_message:
59
+ rdoc_options: []
60
+ require_paths:
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '3.0'
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirements: []
73
+ rubygems_version: 3.5.22
74
+ signing_key:
75
+ specification_version: 4
76
+ summary: PARG grammar, artifact and corpus for UnitsML AsciiUnits expressions
77
+ test_files: []