lens_protocol 0.1.1 → 0.2.1
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.
- checksums.yaml +4 -4
- data/.envrc +2 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +16 -4
- data/.ruby-version +1 -1
- data/.travis.yml +1 -3
- data/Gemfile.lock +47 -34
- data/README.md +2 -2
- data/examples/oma/R1000_1.oma +213 -213
- data/examples/oma/R1000_2.oma +213 -213
- data/examples/oma/STHKFMT.oma +358 -0
- data/lens_protocol.gemspec +2 -2
- data/lib/lens_protocol/errors.rb +3 -0
- data/lib/lens_protocol/oma/builder.rb +18 -0
- data/lib/lens_protocol/oma/formatter.rb +10 -2
- data/lib/lens_protocol/oma/line.rb +16 -0
- data/lib/lens_protocol/oma/message.rb +5 -59
- data/lib/lens_protocol/oma/parser.rb +17 -9
- data/lib/lens_protocol/oma/record.rb +0 -1
- data/lib/lens_protocol/oma/types/array.rb +21 -0
- data/lib/lens_protocol/oma/types/chiral.rb +31 -0
- data/lib/lens_protocol/oma/types/ignored.rb +15 -0
- data/lib/lens_protocol/oma/types/matrix.rb +17 -0
- data/lib/lens_protocol/oma/types/single.rb +21 -0
- data/lib/lens_protocol/oma/types/trcfmt.rb +77 -0
- data/lib/lens_protocol/oma/types/type.rb +74 -0
- data/lib/lens_protocol/oma/types/values/tracing_dataset.rb +42 -0
- data/lib/lens_protocol/oma/types.rb +81 -79
- data/lib/lens_protocol/oma.rb +1 -1
- data/lib/lens_protocol/version.rb +1 -1
- data/lib/lens_protocol.rb +10 -6
- data/shell.nix +9 -0
- metadata +27 -21
- data/lib/lens_protocol/oma/type/base.rb +0 -97
- data/lib/lens_protocol/oma/type/integer.rb +0 -15
- data/lib/lens_protocol/oma/type/numeric.rb +0 -24
- data/lib/lens_protocol/oma/type/r.rb +0 -17
- data/lib/lens_protocol/oma/type/text.rb +0 -8
- data/lib/lens_protocol/oma/type/trcfmt.rb +0 -30
@@ -0,0 +1,358 @@
|
|
1
|
+
OMAV=03.10
|
2
|
+
ACCN=999999
|
3
|
+
ADD=1.75;1.75
|
4
|
+
AVAL=13.80;13.80
|
5
|
+
AX=65;135
|
6
|
+
BACK=84.19;84.19
|
7
|
+
BCDRPIN=0.00;0.00
|
8
|
+
BCDRPUP=8.00;8.00
|
9
|
+
BCERIN=0.0;0.0
|
10
|
+
BCERUP=0.0;0.0
|
11
|
+
BCNRPIN=2.50;2.50
|
12
|
+
BCNRPUP=-13.00;-13.00
|
13
|
+
BCOCIN=0.00;0.00
|
14
|
+
BCOCUP=0.00;0.00
|
15
|
+
BCSBIN=0.00;0.00
|
16
|
+
BCSBUP=0.00;0.00
|
17
|
+
BCSGIN=0.00;0.00
|
18
|
+
BCSGUP=4.00;4.00
|
19
|
+
BCTHK=12.80;12.80
|
20
|
+
BETHK=14.70;14.70
|
21
|
+
BEVM=35.00;35.00
|
22
|
+
BEVP=2;2
|
23
|
+
BLKD=63.0;63.0
|
24
|
+
CBUMP=6.00;6.00
|
25
|
+
CIRC=151.761;151.761
|
26
|
+
CLIENT=11372
|
27
|
+
CLNAME=11372
|
28
|
+
CORRLEN=17;17
|
29
|
+
CRIB=70;70
|
30
|
+
CRIBFMTOK=0
|
31
|
+
CTHICK=4.90;4.40
|
32
|
+
CYL=-0.75;-0.75
|
33
|
+
DBL=19.00
|
34
|
+
DIA=80;80
|
35
|
+
DO=B
|
36
|
+
ERDRIN=0.00;0.00
|
37
|
+
ERDRUP=8.00;8.00
|
38
|
+
ERNRIN=3.50;3.50
|
39
|
+
ERNRUP=-13.00;-13.00
|
40
|
+
ETYP=1
|
41
|
+
FCBCIN=2.80;2.80
|
42
|
+
FCBCUP=0.00;0.40
|
43
|
+
FCOCIN=7.0;8.0
|
44
|
+
FCOCUP=-1.5;-1.5
|
45
|
+
FCRV=0;0
|
46
|
+
FCSGIN=6.98;7.98
|
47
|
+
FCSGUP=2.50;2.50
|
48
|
+
FED=59;59
|
49
|
+
FINCMP=0.20;0.20
|
50
|
+
FMFR=TST
|
51
|
+
FPINB=0.00;0.00
|
52
|
+
FRAM=4
|
53
|
+
FRNT=85.68;85.68
|
54
|
+
FTYP=2
|
55
|
+
FUPC=4
|
56
|
+
GAX=0;0
|
57
|
+
GBASE=-3.31;-3.81
|
58
|
+
GBASEX=-3.292;-3.805
|
59
|
+
GCROS=-4.25;-4.81
|
60
|
+
GCROSX=-4.243;-4.780
|
61
|
+
GTHK=4.90;4.40
|
62
|
+
HBOX=54.96;54.96
|
63
|
+
INSADD=1.77;1.78
|
64
|
+
INSAX=65.00;135.00
|
65
|
+
INSCTHK=4.96;4.47
|
66
|
+
INSCYL=-0.75;-0.75
|
67
|
+
INSDRAX=65.00;135.00
|
68
|
+
INSDRCYL=-0.75;-0.75
|
69
|
+
INSDRSPH=2.50;2.00
|
70
|
+
INSNRAX=60.00;139.00
|
71
|
+
INSNRCYL=-0.73;-0.79
|
72
|
+
INSNRSPH=4.26;3.80
|
73
|
+
INSPRPRVA=270;270
|
74
|
+
INSPRPRVM=0.12;0.12
|
75
|
+
INSSPH=2.50;2.00
|
76
|
+
IPD=30.00;29.00
|
77
|
+
JOB=L438942100
|
78
|
+
KPRVA=338;194
|
79
|
+
KPRVM=1.03;1.02
|
80
|
+
LDADD=1.77;1.78
|
81
|
+
LDDRAX=65;135
|
82
|
+
LDDRCYL=-0.75;-0.75
|
83
|
+
LDDRSPH=2.50;2.00
|
84
|
+
LDNAM=C85900;C85900
|
85
|
+
LDNRAX=60;139
|
86
|
+
LDNRCYL=-0.73;-0.79
|
87
|
+
LDNRSPH=4.26;3.80
|
88
|
+
LDPATH=00L438942100R.stf;00L438942100L.stf
|
89
|
+
LDPRVA=270;270
|
90
|
+
LDPRVM=0.12;0.12
|
91
|
+
LDVEN=essilor;essilor
|
92
|
+
LIND=1.498;1.498
|
93
|
+
LMATID=47;47
|
94
|
+
LMATTYPE=1;1
|
95
|
+
LMFR=ESSILOR;ESSILOR
|
96
|
+
LNAM=2590;2590
|
97
|
+
LTYP=PR;PR
|
98
|
+
LTYPE=PR FF;PR FF
|
99
|
+
LTYPEB=PR FF;PR FF
|
100
|
+
LTYPEF=SV;SV
|
101
|
+
MADD=0.00;0.00
|
102
|
+
MBASE=6.25;6.25
|
103
|
+
MINCTR=4.85;4.35
|
104
|
+
MINEDG=1.60;1.60
|
105
|
+
MINTHKCD=0.60;0.60
|
106
|
+
OCHT=22.00;22.00
|
107
|
+
OPC=0192301885;0192301885
|
108
|
+
OTHK=4.96;4.47
|
109
|
+
PHOTO=0
|
110
|
+
PINB=0.25;0.25
|
111
|
+
PIND=1.498;1.498
|
112
|
+
POLAR=0
|
113
|
+
POLISH=1
|
114
|
+
PTOK=1
|
115
|
+
PTPRVA=270;270
|
116
|
+
PTPRVM=0.12;0.12
|
117
|
+
REM=lo mas fino y estetico posible
|
118
|
+
RNGD=63.0;63.0
|
119
|
+
RNGH=5.3;5.3
|
120
|
+
RPRVA=173;-3
|
121
|
+
RPRVM=-1.28;-1.25
|
122
|
+
RXNM=10671905
|
123
|
+
SBBCIN=2.5;-2.5
|
124
|
+
SBBCUP=0.0;0.0
|
125
|
+
SBFCIN=0.00;0.00
|
126
|
+
SBFCUP=0.00;0.00
|
127
|
+
SBOCIN=4.20;5.20
|
128
|
+
SBOCUP=-1.50;-1.90
|
129
|
+
SBSGIN=7.00;8.00
|
130
|
+
SBSGUP=2.50;2.50
|
131
|
+
SGOCIN=0.00;0.00
|
132
|
+
SGOCUP=-4.00;-4.00
|
133
|
+
SPH=2.50;2.00
|
134
|
+
STATUS=0
|
135
|
+
STHKFMT=1;72;E;R
|
136
|
+
R=2574;2659;2745;2838;2891;2846;2741;2594;2460;2344
|
137
|
+
R=2245;2161;2090;2037;1997;1977;1961;1949;1940;1957
|
138
|
+
R=1979;2015;2062;2127;2209;2305;2416;2541;2684;2814
|
139
|
+
R=2918;2946;2903;2845;2775;2712;2655;2602;2549;2504
|
140
|
+
R=2458;2410;2364;2324;2281;2237;2192;2147;2104;2064
|
141
|
+
R=2029;2001;1977;1958;1943;1940;1942;1947;1955;1970
|
142
|
+
R=1993;2018;2044;2074;2107;2146;2189;2236;2288;2350
|
143
|
+
R=2420;2495
|
144
|
+
T=0346;0338;0327;0313;0300;0293;0293;0297;0304;0311
|
145
|
+
T=0315;0318;0321;0322;0324;0324;0322;0321;0318;0317
|
146
|
+
T=0314;0309;0304;0297;0289;0279;0266;0250;0230;0208
|
147
|
+
T=0187;0174;0173;0177;0183;0188;0191;0193;0195;0194
|
148
|
+
T=0194;0194;0195;0196;0201;0207;0216;0227;0238;0250
|
149
|
+
T=0263;0275;0287;0299;0309;0319;0328;0337;0343;0349
|
150
|
+
T=0354;0358;0361;0363;0364;0365;0365;0365;0365;0361
|
151
|
+
T=0359;0354
|
152
|
+
STHKFMT=1;72;E;L
|
153
|
+
R=2655;2712;2775;2845;2903;2946;2918;2814;2684;2541
|
154
|
+
R=2416;2305;2209;2127;2062;2015;1979;1957;1940;1949
|
155
|
+
R=1961;1977;1997;2037;2090;2161;2245;2344;2460;2594
|
156
|
+
R=2741;2846;2891;2838;2745;2659;2574;2495;2420;2350
|
157
|
+
R=2288;2236;2189;2146;2107;2074;2044;2018;1993;1970
|
158
|
+
R=1955;1947;1942;1940;1943;1958;1977;2001;2029;2064
|
159
|
+
R=2104;2147;2192;2237;2281;2324;2364;2410;2458;2504
|
160
|
+
R=2549;2602
|
161
|
+
T=0164;0165;0165;0165;0167;0174;0192;0213;0234;0252
|
162
|
+
T=0266;0278;0286;0293;0299;0302;0306;0308;0308;0310
|
163
|
+
T=0311;0311;0310;0308;0306;0303;0300;0295;0288;0282
|
164
|
+
T=0276;0273;0277;0288;0300;0309;0317;0324;0329;0332
|
165
|
+
T=0336;0337;0338;0339;0339;0338;0336;0334;0330;0325
|
166
|
+
T=0319;0312;0303;0294;0282;0272;0259;0246;0233;0220
|
167
|
+
T=0207;0195;0183;0174;0167;0162;0161;0160;0160;0161
|
168
|
+
T=0163;0163
|
169
|
+
SVAL=5.86;5.35
|
170
|
+
SWIDTH=0.0;0.0
|
171
|
+
TEXT_11= ;
|
172
|
+
TEXT_12= ;
|
173
|
+
TEXT_13= ;
|
174
|
+
TEXT_14= ;
|
175
|
+
TEXT_15= ;
|
176
|
+
TEXT_16= ;
|
177
|
+
THKA=355;190
|
178
|
+
THKP=2.78;2.67
|
179
|
+
THKR=35.00;35.00
|
180
|
+
THNA=240;305
|
181
|
+
THNP=0.11;0.14
|
182
|
+
THNR=35.00;35.00
|
183
|
+
TIND=1.530;1.530
|
184
|
+
TRCFMT=1;360;E;R;F
|
185
|
+
R=2574;2591;2609;2626;2642;2659;2676;2693;2709;2727
|
186
|
+
R=2745;2764;2782;2801;2820;2838;2857;2873;2881;2888
|
187
|
+
R=2891;2886;2881;2872;2859;2846;2830;2812;2794;2768
|
188
|
+
R=2741;2714;2683;2653;2623;2594;2565;2537;2511;2485
|
189
|
+
R=2460;2436;2413;2390;2367;2344;2323;2302;2282;2263
|
190
|
+
R=2245;2227;2210;2193;2177;2161;2145;2130;2116;2102
|
191
|
+
R=2090;2079;2068;2057;2047;2037;2027;2017;2009;2003
|
192
|
+
R=1997;1992;1988;1984;1980;1977;1973;1970;1967;1964
|
193
|
+
R=1961;1959;1956;1954;1952;1949;1947;1945;1943;1941
|
194
|
+
R=1940;1943;1947;1950;1954;1957;1961;1965;1969;1974
|
195
|
+
R=1979;1985;1991;1999;2006;2015;2024;2033;2043;2052
|
196
|
+
R=2062;2073;2083;2096;2112;2127;2143;2159;2175;2192
|
197
|
+
R=2209;2226;2245;2264;2283;2305;2326;2348;2370;2393
|
198
|
+
R=2416;2439;2463;2489;2515;2541;2569;2597;2626;2655
|
199
|
+
R=2684;2712;2739;2766;2791;2814;2837;2859;2880;2901
|
200
|
+
R=2918;2934;2948;2948;2949;2946;2938;2930;2922;2912
|
201
|
+
R=2903;2893;2882;2871;2858;2845;2832;2818;2803;2789
|
202
|
+
R=2775;2760;2747;2735;2723;2712;2701;2690;2678;2667
|
203
|
+
R=2655;2644;2633;2623;2612;2602;2591;2580;2569;2559
|
204
|
+
R=2549;2540;2531;2522;2513;2504;2495;2486;2477;2467
|
205
|
+
R=2458;2449;2439;2429;2420;2410;2400;2391;2381;2373
|
206
|
+
R=2364;2356;2348;2340;2332;2324;2315;2307;2298;2290
|
207
|
+
R=2281;2272;2263;2255;2246;2237;2228;2219;2210;2201
|
208
|
+
R=2192;2183;2174;2164;2155;2147;2138;2129;2121;2112
|
209
|
+
R=2104;2095;2087;2079;2071;2064;2056;2049;2042;2035
|
210
|
+
R=2029;2023;2017;2012;2006;2001;1995;1991;1986;1981
|
211
|
+
R=1977;1972;1968;1965;1961;1958;1954;1951;1948;1946
|
212
|
+
R=1943;1942;1941;1940;1940;1940;1940;1940;1941;1941
|
213
|
+
R=1942;1943;1944;1945;1946;1947;1948;1949;1951;1953
|
214
|
+
R=1955;1957;1959;1962;1966;1970;1975;1979;1984;1989
|
215
|
+
R=1993;1998;2003;2008;2013;2018;2023;2028;2034;2039
|
216
|
+
R=2044;2050;2055;2061;2067;2074;2080;2087;2094;2101
|
217
|
+
R=2107;2114;2122;2129;2137;2146;2154;2163;2171;2180
|
218
|
+
R=2189;2198;2207;2216;2226;2236;2246;2257;2267;2278
|
219
|
+
R=2288;2299;2311;2322;2336;2350;2364;2378;2392;2406
|
220
|
+
R=2420;2435;2449;2465;2480;2495;2511;2526;2542;2558
|
221
|
+
TRCFMT=1;360;E;L;F
|
222
|
+
R=2655;2667;2678;2690;2701;2712;2723;2735;2747;2760
|
223
|
+
R=2775;2789;2803;2818;2832;2845;2858;2871;2882;2893
|
224
|
+
R=2903;2912;2922;2930;2938;2946;2949;2948;2948;2934
|
225
|
+
R=2918;2901;2880;2859;2837;2814;2791;2766;2739;2712
|
226
|
+
R=2684;2655;2626;2597;2569;2541;2515;2489;2463;2439
|
227
|
+
R=2416;2393;2370;2348;2326;2305;2283;2264;2245;2226
|
228
|
+
R=2209;2192;2175;2159;2143;2127;2112;2096;2083;2073
|
229
|
+
R=2062;2052;2043;2033;2024;2015;2006;1999;1991;1985
|
230
|
+
R=1979;1974;1969;1965;1961;1957;1954;1950;1947;1943
|
231
|
+
R=1940;1941;1943;1945;1947;1949;1952;1954;1956;1959
|
232
|
+
R=1961;1964;1967;1970;1973;1977;1980;1984;1988;1992
|
233
|
+
R=1997;2003;2009;2017;2027;2037;2047;2057;2068;2079
|
234
|
+
R=2090;2102;2116;2130;2145;2161;2177;2193;2210;2227
|
235
|
+
R=2245;2263;2282;2302;2323;2344;2367;2390;2413;2436
|
236
|
+
R=2460;2485;2511;2537;2565;2594;2623;2653;2683;2714
|
237
|
+
R=2741;2768;2794;2812;2830;2846;2859;2872;2881;2886
|
238
|
+
R=2891;2888;2881;2873;2857;2838;2820;2801;2782;2764
|
239
|
+
R=2745;2727;2709;2693;2676;2659;2642;2626;2609;2591
|
240
|
+
R=2574;2558;2542;2527;2511;2495;2480;2465;2449;2435
|
241
|
+
R=2420;2406;2392;2378;2364;2350;2336;2322;2311;2299
|
242
|
+
R=2288;2278;2267;2257;2246;2236;2226;2216;2207;2198
|
243
|
+
R=2189;2180;2171;2163;2154;2146;2137;2129;2122;2114
|
244
|
+
R=2107;2101;2094;2087;2080;2074;2067;2061;2055;2050
|
245
|
+
R=2044;2039;2034;2028;2023;2018;2013;2008;2003;1998
|
246
|
+
R=1993;1989;1984;1979;1975;1970;1966;1962;1959;1957
|
247
|
+
R=1955;1953;1951;1949;1948;1947;1946;1945;1944;1943
|
248
|
+
R=1942;1941;1941;1940;1940;1940;1940;1940;1941;1942
|
249
|
+
R=1943;1946;1948;1951;1954;1958;1961;1965;1968;1972
|
250
|
+
R=1977;1981;1986;1991;1995;2001;2006;2012;2017;2023
|
251
|
+
R=2029;2035;2042;2049;2056;2064;2071;2079;2087;2095
|
252
|
+
R=2104;2112;2121;2129;2138;2147;2155;2164;2174;2183
|
253
|
+
R=2192;2201;2210;2219;2228;2237;2246;2255;2263;2272
|
254
|
+
R=2281;2290;2298;2307;2315;2324;2332;2340;2348;2356
|
255
|
+
R=2364;2373;2381;2391;2400;2410;2420;2429;2439;2449
|
256
|
+
R=2458;2467;2477;2486;2495;2504;2513;2522;2531;2540
|
257
|
+
R=2549;2559;2569;2580;2591;2602;2612;2623;2633;2644
|
258
|
+
UNI=0;0
|
259
|
+
VBOX=39.01;39.01
|
260
|
+
VEN=MODVCA
|
261
|
+
XSTATUS=R;1110;External module returns warning;W
|
262
|
+
XSTATUS=L;1110;External module returns warning;W
|
263
|
+
_ADDENGCODE=J2688;J2688
|
264
|
+
_BACK=84.190;84.190
|
265
|
+
_BATORIC=0
|
266
|
+
_BLKINSC=azul0;azul0
|
267
|
+
_BLKRNG=0063;0063
|
268
|
+
_CALCMODE=AUTO;AUTO
|
269
|
+
_COMMENT=lo mas fino y estetico posible
|
270
|
+
_CRIBBC=65;65
|
271
|
+
_CRIBTYPE=R;R
|
272
|
+
_CTO=1;1
|
273
|
+
_DENSITY=1.3;1.3
|
274
|
+
_DIA2=80;80
|
275
|
+
_DIAPHYS=80;80
|
276
|
+
_DIASALES=77;78
|
277
|
+
_DIASB=80;80
|
278
|
+
_DIGIT=257;275;289;274;246;225;209;200;196;194;198;206;221;242;268;292;290;278;266;255;246;236;228;219;210;203;198;194;194;196;199;204;211;219;229;242;
|
279
|
+
_DLP1=010702501112000000;010702501112000000
|
280
|
+
_DLP1DM=070;070
|
281
|
+
_DLP1TYP=01;01
|
282
|
+
_DLP2=000702500000000000;000702500000000000
|
283
|
+
_DLP2DM=070;070
|
284
|
+
_DLP2TYP=00;00
|
285
|
+
_DLP3=000702500000000000;000702500000000000
|
286
|
+
_DLP3DM=070;070
|
287
|
+
_DLP3TYP=00;00
|
288
|
+
_DOBLEND=0
|
289
|
+
_DODECENTER=0
|
290
|
+
_EDI=0
|
291
|
+
_EID=10671905
|
292
|
+
_ENTRYDATE=20200303
|
293
|
+
_ENTRYTIME=16:28:22
|
294
|
+
_ENTRYTYPE=I
|
295
|
+
_ENVELOPE=,;,
|
296
|
+
_FININKCODE=C324;C324
|
297
|
+
_FORCEDBATORIC=0
|
298
|
+
_FRNT=85.680;85.680
|
299
|
+
_FRONTTORIC=0
|
300
|
+
_GBASEX=-3.093;-3.575
|
301
|
+
_GCROSX=-3.987;-4.491
|
302
|
+
_GPRVA=338;194
|
303
|
+
_GPRVM=1.03;1.02
|
304
|
+
_JOBX=10671905
|
305
|
+
_LDESC=Varilux Comfort DS Orma;Varilux Comfort DS Orma
|
306
|
+
_LDS_CTHICK=4.90;4.40
|
307
|
+
_LDS_STHKA=322.00;221.00
|
308
|
+
_LDS_STHKP=4.30;4.00
|
309
|
+
_LDS_STHNA=157.00;348.00
|
310
|
+
_LDS_STHNP=2.30;2.20
|
311
|
+
_LENSGROUP=PR;PR
|
312
|
+
_LENTIOPT=0
|
313
|
+
_LMATID2=47;47
|
314
|
+
_LMATID3=47;47
|
315
|
+
_LMATID4=47;47
|
316
|
+
_LNAM=2590;2590
|
317
|
+
_MARGIN=3.00;3.00
|
318
|
+
_MATCHCRIB=0
|
319
|
+
_MATCODE=ORN498;ORN498
|
320
|
+
_MATTYPE=OR;OR
|
321
|
+
_MAXSAGR=121.249;107.888
|
322
|
+
_MAXSAGV=51.6;58.3
|
323
|
+
_MBASEACT=1;1
|
324
|
+
_MINSAGR=228.963;183.188
|
325
|
+
_MINSAGV=26.9;33.7
|
326
|
+
_MINSUM=3.80;3.80
|
327
|
+
_NOCALC=0
|
328
|
+
_OCONTROLS= 0 1 ; 0 1
|
329
|
+
_OMITADD=0
|
330
|
+
_ORDTYPE=I
|
331
|
+
_PHOTO=N;N
|
332
|
+
_PRINTLOCAL=0
|
333
|
+
_PROCESS=Essilor
|
334
|
+
_PRPON=1;1
|
335
|
+
_RECTYPE=F
|
336
|
+
_RNGZ=7.035;7.035
|
337
|
+
_SCSBCCA=0.00;0.00
|
338
|
+
_SCSBRD=0.00;0.00
|
339
|
+
_SHEIGHT=0.0;0.0
|
340
|
+
_SLABOFF=0
|
341
|
+
_SPORT=0
|
342
|
+
_STHKB=3.79;3.48
|
343
|
+
_STHKI=4.18;3.83
|
344
|
+
_STHKO=2.60;2.29
|
345
|
+
_STHKT=3.89;3.73
|
346
|
+
_STOCKRX=R;R
|
347
|
+
_SUPRAD=0.00;0.00
|
348
|
+
_SURFACE1=SP;SP
|
349
|
+
_SURFACE2=FP;FP
|
350
|
+
_THKA=325;220
|
351
|
+
_THKP=4.36;4.05
|
352
|
+
_THKR=19.47;19.52
|
353
|
+
_THNA=160;340
|
354
|
+
_THNP=2.42;2.25
|
355
|
+
_THNR=31.80;27.21
|
356
|
+
_USER=VCA
|
357
|
+
_VARINSET=0
|
358
|
+
_XCALC=ESS;ESS
|
data/lens_protocol.gemspec
CHANGED
@@ -24,10 +24,10 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_dependency 'activesupport', '>= 4.0'
|
25
25
|
spec.add_dependency 'nokogiri'
|
26
26
|
spec.add_development_dependency "bundler", "~> 2.0"
|
27
|
-
spec.add_development_dependency "rake", "~>
|
27
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
28
28
|
spec.add_development_dependency "rspec", "~> 3.0"
|
29
29
|
spec.add_development_dependency "guard-rspec"
|
30
30
|
spec.add_development_dependency 'pry'
|
31
|
-
spec.add_development_dependency 'pry-byebug'
|
32
31
|
spec.add_development_dependency 'sinatra'
|
32
|
+
spec.add_development_dependency 'rubocop', '~> 0.80.0'
|
33
33
|
end
|
data/lib/lens_protocol/errors.rb
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
module LensProtocol
|
2
|
+
module OMA
|
3
|
+
class Builder
|
4
|
+
def build hash, types: {}
|
5
|
+
types = TYPES.merge(types)
|
6
|
+
|
7
|
+
hash.reduce Message.new do |message, (label, value)|
|
8
|
+
wrapped_value = types[label].wrap(value, hash, label)
|
9
|
+
if wrapped_value == :ignored
|
10
|
+
message
|
11
|
+
else
|
12
|
+
message.add_record(label, wrapped_value)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -13,10 +13,18 @@ module LensProtocol
|
|
13
13
|
|
14
14
|
def format_lines message, types: {}
|
15
15
|
types = TYPES.merge(types)
|
16
|
-
message.records.
|
17
|
-
|
16
|
+
message.records.flat_map do |label, record|
|
17
|
+
format_record label, record.value, types
|
18
18
|
end
|
19
19
|
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def format_record label, value, types
|
24
|
+
lines = types[label].format(label, value)
|
25
|
+
lines = lines.is_a?(Array) ? lines : [lines]
|
26
|
+
lines.map &:to_s
|
27
|
+
end
|
20
28
|
end
|
21
29
|
end
|
22
30
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module LensProtocol
|
2
|
+
module OMA
|
3
|
+
Line = Struct.new(:label, :data, :raw, keyword_init: true) do
|
4
|
+
def self.parse raw_line
|
5
|
+
raise ParsingError.new('The label separator is missing', raw_line) unless raw_line.include?('=')
|
6
|
+
|
7
|
+
label, data = raw_line.split('=', -1)
|
8
|
+
Line.new label: label, data: data, raw: raw_line
|
9
|
+
end
|
10
|
+
|
11
|
+
def to_s
|
12
|
+
"#{label}=#{data}"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -4,15 +4,12 @@ module LensProtocol
|
|
4
4
|
attr_reader :records
|
5
5
|
|
6
6
|
# Builds a message from a hash of record labels to record value.
|
7
|
-
def self.from_hash
|
8
|
-
|
9
|
-
message.add_record(label, value)
|
10
|
-
end
|
7
|
+
def self.from_hash *args
|
8
|
+
OMA.generate *args
|
11
9
|
end
|
12
10
|
|
13
|
-
def initialize records: {}
|
11
|
+
def initialize records: {}
|
14
12
|
@records = records
|
15
|
-
@context = context
|
16
13
|
end
|
17
14
|
|
18
15
|
def add_record label, value
|
@@ -20,29 +17,6 @@ module LensProtocol
|
|
20
17
|
self
|
21
18
|
end
|
22
19
|
|
23
|
-
def add_record_or_insert_values label, values
|
24
|
-
@records[label] ||= Record.new(label: label, value: [])
|
25
|
-
@records[label].value << values
|
26
|
-
self
|
27
|
-
end
|
28
|
-
|
29
|
-
def add_record_or_concat_values label, values
|
30
|
-
@records[label] ||= Record.new(label: label, value: [])
|
31
|
-
@records[label].value.concat values
|
32
|
-
self
|
33
|
-
end
|
34
|
-
|
35
|
-
def add_record_side_values label, side, values
|
36
|
-
@records[label] ||= Record.new(label: label, value: [[], []])
|
37
|
-
@records[label].value[side].concat values
|
38
|
-
self
|
39
|
-
end
|
40
|
-
|
41
|
-
def set_context key, value
|
42
|
-
@context[key] = value
|
43
|
-
self
|
44
|
-
end
|
45
|
-
|
46
20
|
def value_of label, default = nil
|
47
21
|
if include? label
|
48
22
|
@records[label].value
|
@@ -60,46 +34,18 @@ module LensProtocol
|
|
60
34
|
@records.empty?
|
61
35
|
end
|
62
36
|
|
63
|
-
def context key
|
64
|
-
@context[key]
|
65
|
-
end
|
66
|
-
|
67
37
|
def to_hash
|
68
38
|
Hash[*@records.flat_map { |label, record| [label, record.value] }]
|
69
39
|
end
|
70
40
|
|
71
|
-
# Returns the "R" reconds decoded radiuses according to the tracing format.
|
72
|
-
def radius_data
|
73
|
-
return [] unless value_of('TRCFMT') && value_of('R')
|
74
|
-
[0, 1].map do |side|
|
75
|
-
format_number, = value_of('TRCFMT')[side]
|
76
|
-
case format_number.to_i
|
77
|
-
when 0 # side not present
|
78
|
-
[]
|
79
|
-
when 1 # ASCII format
|
80
|
-
value_of('R')[side]
|
81
|
-
else # unknown format
|
82
|
-
return []
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
41
|
# Converts the "R" record values to polar coordinates.
|
88
42
|
def tracing_in_polar_coordinates
|
89
|
-
|
90
|
-
end
|
91
|
-
|
92
|
-
def radiuses_to_polar radiuses
|
93
|
-
radiuses.map.with_index { |r, i| [i * 2 * Math::PI / radiuses.size, r] }
|
43
|
+
value_of('TRCFMT', []).map { |tracing_dataset| tracing_dataset&.in_polar_coordinates || [] }
|
94
44
|
end
|
95
45
|
|
96
46
|
# Converts the "R" record values to rectangular coordinates.
|
97
47
|
def tracing_in_rectangular_coordinates
|
98
|
-
|
99
|
-
end
|
100
|
-
|
101
|
-
def radiuses_to_rectangular radiuses
|
102
|
-
radiuses_to_polar(radiuses).map { |(a, r)| [r * Math.cos(a), r * Math.sin(a)].map { |v| v.round 2 } }
|
48
|
+
value_of('TRCFMT', []).map { |tracing_dataset| tracing_dataset&.in_rectangular_coordinates || [] }
|
103
49
|
end
|
104
50
|
|
105
51
|
# Returns an array of SVG strings, one for each side. If the tracing format is not recognized
|
@@ -3,22 +3,30 @@ module LensProtocol
|
|
3
3
|
class Parser
|
4
4
|
def parse oma_str, types: {}
|
5
5
|
types = TYPES.merge(types)
|
6
|
-
normalize_line_endings(oma_str)
|
7
|
-
|
8
|
-
.reduce(Message.new) { |message, line| parse_line line, message, types }
|
6
|
+
lines = convert_to_structured_lines normalize_line_endings(oma_str).split("\n")
|
7
|
+
parse_lines lines, types, Message.new
|
9
8
|
end
|
10
9
|
|
11
10
|
private
|
12
11
|
|
13
|
-
def parse_line line, message, types
|
14
|
-
raise ParsingError.new('The label separator is missing', line) unless line.include?('=')
|
15
|
-
label, = line.split('=')
|
16
|
-
types[label].parse(line, message)
|
17
|
-
end
|
18
|
-
|
19
12
|
def normalize_line_endings str
|
20
13
|
str.to_s.gsub /\r\n?/, "\n"
|
21
14
|
end
|
15
|
+
|
16
|
+
def convert_to_structured_lines lines
|
17
|
+
lines.map { |line| Line.parse line }
|
18
|
+
end
|
19
|
+
|
20
|
+
def parse_lines lines, types, message
|
21
|
+
line, *next_lines = lines
|
22
|
+
if line
|
23
|
+
value, next_lines = types[line.label].parse(line, next_lines)
|
24
|
+
message.add_record(line.label, value) if value
|
25
|
+
parse_lines next_lines, types, message
|
26
|
+
else
|
27
|
+
message
|
28
|
+
end
|
29
|
+
end
|
22
30
|
end
|
23
31
|
end
|
24
32
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module LensProtocol
|
2
|
+
module OMA
|
3
|
+
module Types
|
4
|
+
class Array < Type
|
5
|
+
def parse line, next_lines
|
6
|
+
values = parse_values line.data
|
7
|
+
[values, next_lines]
|
8
|
+
end
|
9
|
+
|
10
|
+
def wrap value, _message_hash, label
|
11
|
+
raise ValidationError, "#{label}: Expected an array of values. Got #{value}" unless value.is_a?(::Array)
|
12
|
+
value
|
13
|
+
end
|
14
|
+
|
15
|
+
def format label, values
|
16
|
+
build_line label, format_values(values)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module LensProtocol
|
2
|
+
module OMA
|
3
|
+
module Types
|
4
|
+
class Chiral < Type
|
5
|
+
def parse line, next_lines
|
6
|
+
values = make_chiral parse_values line.data
|
7
|
+
[values, next_lines]
|
8
|
+
end
|
9
|
+
|
10
|
+
def wrap value, _message_hash, _label
|
11
|
+
make_chiral Array(value)
|
12
|
+
end
|
13
|
+
|
14
|
+
def format label, values
|
15
|
+
data = values.select(&:present?).empty? ? '' : format_values(values)
|
16
|
+
build_line label, data
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def make_chiral values
|
22
|
+
if values.size <= 1
|
23
|
+
[values[0], values[0]]
|
24
|
+
else
|
25
|
+
values[0..1]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module LensProtocol
|
2
|
+
module OMA
|
3
|
+
module Types
|
4
|
+
class Matrix < Type
|
5
|
+
def parse line, next_lines
|
6
|
+
same_label_lines, next_lines = next_lines.partition { |other_line| other_line.label == line.label }
|
7
|
+
values = [line, *same_label_lines].map { |line| parse_values line.data }
|
8
|
+
[values, next_lines]
|
9
|
+
end
|
10
|
+
|
11
|
+
def format label, values
|
12
|
+
values.map { |v| build_line label, format_values(v) }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module LensProtocol
|
2
|
+
module OMA
|
3
|
+
module Types
|
4
|
+
class Single < Type
|
5
|
+
def parse line, next_lines
|
6
|
+
value = parse_value line.data
|
7
|
+
[value, next_lines]
|
8
|
+
end
|
9
|
+
|
10
|
+
def wrap value, _message_hash, label
|
11
|
+
raise ValidationError, "#{label}: Expected a single value. Got #{value}" if value.respond_to?(:each)
|
12
|
+
value
|
13
|
+
end
|
14
|
+
|
15
|
+
def format label, value
|
16
|
+
build_line label, format_value(value)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|