metanorma-iec 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +7 -0
  3. data/bin/rspec +18 -0
  4. data/lib/asciidoctor/iec/biblio.rng +949 -0
  5. data/lib/asciidoctor/iec/converter.rb +68 -0
  6. data/lib/asciidoctor/iec/iec_intro_en.xml +15 -0
  7. data/lib/asciidoctor/iec/iec_intro_fr.xml +15 -0
  8. data/lib/asciidoctor/iec/isodoc.rng +1132 -0
  9. data/lib/asciidoctor/iec/isostandard.rng +789 -0
  10. data/lib/asciidoctor/iec/reqt.rng +162 -0
  11. data/lib/isodoc/iec/base_convert.rb +69 -0
  12. data/lib/isodoc/iec/html/header.html +160 -0
  13. data/lib/isodoc/iec/html/html_iec_intro.html +34 -0
  14. data/lib/isodoc/iec/html/html_iec_titlepage.html +62 -0
  15. data/lib/isodoc/iec/html/htmlstyle.scss +840 -0
  16. data/lib/isodoc/iec/html/isodoc.scss +785 -0
  17. data/lib/isodoc/iec/html/scripts.html +176 -0
  18. data/lib/isodoc/iec/html/word_iec_intro.html +72 -0
  19. data/lib/isodoc/iec/html/word_iec_titlepage.html +92 -0
  20. data/lib/isodoc/iec/html/wordstyle.scss +1849 -0
  21. data/lib/isodoc/iec/html_convert.rb +33 -0
  22. data/lib/isodoc/iec/i18n-en.yaml +3 -0
  23. data/lib/isodoc/iec/i18n-fr.yaml +3 -0
  24. data/lib/isodoc/iec/i18n-zh-Hans.yaml +3 -0
  25. data/lib/isodoc/iec/metadata.rb +20 -0
  26. data/lib/isodoc/iec/word_convert.rb +165 -0
  27. data/lib/metanorma-iec.rb +12 -0
  28. data/lib/metanorma/iec.rb +8 -0
  29. data/lib/metanorma/iec/processor.rb +40 -0
  30. data/lib/metanorma/iec/version.rb +6 -0
  31. data/metanorma-iec.gemspec +47 -0
  32. data/spec/asciidoctor-iec/base_spec.rb +609 -0
  33. data/spec/asciidoctor-iec/blocks_spec.rb +467 -0
  34. data/spec/asciidoctor-iec/cleanup_spec.rb +766 -0
  35. data/spec/asciidoctor-iec/inline_spec.rb +162 -0
  36. data/spec/asciidoctor-iec/lists_spec.rb +190 -0
  37. data/spec/asciidoctor-iec/macros_spec.rb +21 -0
  38. data/spec/asciidoctor-iec/refs_spec.rb +268 -0
  39. data/spec/asciidoctor-iec/section_spec.rb +341 -0
  40. data/spec/asciidoctor-iec/table_spec.rb +307 -0
  41. data/spec/asciidoctor-iec/validate_spec.rb +132 -0
  42. data/spec/examples/rice.adoc +723 -0
  43. data/spec/examples/rice.doc +19162 -0
  44. data/spec/examples/rice.html +1787 -0
  45. data/spec/examples/rice.xml +1951 -0
  46. data/spec/isodoc/i18n_spec.rb +642 -0
  47. data/spec/isodoc/inline_spec.rb +265 -0
  48. data/spec/isodoc/iso_spec.rb +319 -0
  49. data/spec/isodoc/metadata_spec.rb +153 -0
  50. data/spec/isodoc/postproc_spec.rb +569 -0
  51. data/spec/isodoc/section_spec.rb +686 -0
  52. data/spec/isodoc/terms_spec.rb +206 -0
  53. data/spec/isodoc/xref_spec.rb +1323 -0
  54. data/spec/metanorma/processor_spec.rb +88 -0
  55. data/spec/spec_helper.rb +253 -0
  56. metadata +325 -0
@@ -0,0 +1,341 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Asciidoctor::Iec do
4
+ it "processes sections" do
5
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iec, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
6
+ #{ASCIIDOC_BLANK_HDR}
7
+ .Foreword
8
+
9
+ Text
10
+
11
+ == Introduction
12
+
13
+ === Introduction Subsection
14
+
15
+ == Scope
16
+
17
+ Text
18
+
19
+ == Normative References
20
+
21
+ == Terms and Definitions
22
+
23
+ === Term1
24
+
25
+ == Terms, Definitions, Symbols and Abbreviated Terms
26
+
27
+ === Normal Terms
28
+
29
+ ==== Term2
30
+
31
+ === Symbols and Abbreviated Terms
32
+
33
+ == Symbols and Abbreviated Terms
34
+
35
+ == Clause 4
36
+
37
+ === Introduction
38
+
39
+ === Clause 4.2
40
+
41
+ == Terms and Definitions
42
+
43
+ [appendix]
44
+ == Annex
45
+
46
+ === Annex A.1
47
+
48
+ [%appendix]
49
+ === Appendix 1
50
+
51
+ == Bibliography
52
+
53
+ === Bibliography Subsection
54
+ INPUT
55
+ #{BLANK_HDR}
56
+ <preface><foreword obligation="informative">
57
+ <title>Foreword</title>
58
+ <p id="_">Text</p>
59
+ </foreword><introduction id="_" obligation="informative"><title>Introduction</title><clause id="_" inline-header="false" obligation="informative">
60
+ <title>Introduction Subsection</title>
61
+ </clause>
62
+ </introduction></preface><sections>
63
+ <clause id="_" obligation="normative">
64
+ <title>Scope</title>
65
+ <p id="_">Text</p>
66
+ </clause>
67
+
68
+ <terms id="_" obligation="normative">
69
+ <title>Terms and definitions</title>
70
+ <term id="_">
71
+ <preferred>Term1</preferred>
72
+ </term>
73
+ </terms>
74
+ <clause id="_" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><terms id="_" obligation="normative">
75
+ <title>Normal Terms</title>
76
+ <term id="_">
77
+ <preferred>Term2</preferred>
78
+ </term>
79
+ </terms>
80
+ <definitions id="_"><title>Symbols and Abbreviated Terms</title></definitions></clause>
81
+ <definitions id="_"><title>Symbols and Abbreviated Terms</title></definitions>
82
+ <clause id="_" inline-header="false" obligation="normative"><title>Clause 4</title><clause id="_" inline-header="false" obligation="normative">
83
+ <title>Introduction</title>
84
+ </clause>
85
+ <clause id="_" inline-header="false" obligation="normative">
86
+ <title>Clause 4.2</title>
87
+ </clause></clause>
88
+ <clause id="_" inline-header="false" obligation="normative">
89
+ <title>Terms and Definitions</title>
90
+ </clause>
91
+
92
+
93
+ </sections><annex id="_" inline-header="false" obligation="normative">
94
+ <title>Annex</title>
95
+ <clause id="_" inline-header="false" obligation="normative">
96
+ <title>Annex A.1</title>
97
+ </clause>
98
+ <appendix id="_" inline-header="false" obligation="normative">
99
+ <title>Appendix 1</title>
100
+ </appendix></annex><bibliography><references id="_" obligation="informative">
101
+ <title>Normative References</title>
102
+ </references><clause id="_" obligation="informative">
103
+ <title>Bibliography</title>
104
+ <references id="_" obligation="informative">
105
+ <title>Bibliography Subsection</title>
106
+ </references>
107
+ </clause>
108
+ </bibliography>
109
+ </iso-standard>
110
+ OUTPUT
111
+ end
112
+
113
+ it "processes sections with title attributes" do
114
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iec, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
115
+ #{ASCIIDOC_BLANK_HDR}
116
+ .Foreword
117
+
118
+ Text
119
+
120
+ [heading=introduction]
121
+ == Εισαγωγή
122
+
123
+ === Introduction Subsection
124
+
125
+ [heading=scope]
126
+ == Σκοπός
127
+
128
+ Text
129
+
130
+ [heading=normative references]
131
+ == Κανονιστικές Παραπομπές
132
+
133
+ [heading=terms and definitions]
134
+ == Όροι και Ορισμοί
135
+
136
+ === Term1
137
+
138
+ [heading="terms, definitions, symbols and abbreviated terms"]
139
+ == Όροι, Ορισμοί, Σύμβολα και Συντομογραφίες
140
+
141
+ === Normal Terms
142
+
143
+ ==== Term2
144
+
145
+ [heading=symbols and abbreviated terms]
146
+ === Σύμβολα και Συντομογραφίες
147
+
148
+ [heading=symbols and abbreviated terms]
149
+ == Σύμβολα και Συντομογραφίες
150
+
151
+ == Clause 4
152
+
153
+ === Introduction
154
+
155
+ === Clause 4.2
156
+
157
+ [appendix]
158
+ == Annex
159
+
160
+ === Annex A.1
161
+
162
+ [%appendix]
163
+ === Appendx 1
164
+
165
+ [heading=bibliography]
166
+ == Βιβλιογραφία
167
+
168
+ === Bibliography Subsection
169
+ INPUT
170
+ #{BLANK_HDR}
171
+ <preface>
172
+ <foreword obligation="informative">
173
+ <title>Foreword</title>
174
+ <p id="_">Text</p>
175
+ </foreword>
176
+ <introduction id="_" obligation="informative"><title>Introduction</title><clause id="_" inline-header="false" obligation="informative">
177
+ <title>Introduction Subsection</title>
178
+ </clause>
179
+ </introduction>
180
+ </preface>
181
+ <sections>
182
+ <clause id="_" obligation="normative">
183
+ <title>Scope</title>
184
+ <p id="_">Text</p>
185
+ </clause>
186
+
187
+ <terms id="_" obligation="normative">
188
+ <title>Terms and definitions</title>
189
+ <term id="_">
190
+ <preferred>Term1</preferred>
191
+ </term>
192
+ </terms>
193
+ <clause id="_" obligation="normative"><title>Terms and definitions</title><terms id="_" obligation="normative">
194
+ <title>Normal Terms</title>
195
+ <term id="_">
196
+ <preferred>Term2</preferred>
197
+ </term>
198
+ </clause>
199
+ <definitions id="_">
200
+ <title>Σύμβολα και Συντομογραφίες</title>
201
+ </definitions>
202
+ </terms>
203
+ <definitions id="_">
204
+ <title>Σύμβολα και Συντομογραφίες</title>
205
+ </definitions>
206
+ <clause id="_" inline-header="false" obligation="normative"><title>Clause 4</title><clause id="_" inline-header="false" obligation="normative">
207
+ <title>Introduction</title>
208
+ </clause>
209
+ <clause id="_" inline-header="false" obligation="normative">
210
+ <title>Clause 4.2</title>
211
+ </clause></clause>
212
+
213
+ </sections><annex id="_" inline-header="false" obligation="normative">
214
+ <title>Annex</title>
215
+ <clause id="_" inline-header="false" obligation="normative">
216
+ <title>Annex A.1</title>
217
+ </clause>
218
+ <appendix id="_" inline-header="false" obligation="normative">
219
+ <title>Appendx 1</title>
220
+ </appendix></annex><bibliography><references id="_" obligation="informative">
221
+ <title>Normative References</title>
222
+ </references><clause id="_" obligation="informative">
223
+ <title>Bibliography</title>
224
+ <references id="_" obligation="informative">
225
+ <title>Bibliography Subsection</title>
226
+ </references>
227
+ </clause>
228
+ </bibliography>
229
+ </iso-standard>
230
+ OUTPUT
231
+ end
232
+
233
+ it "processes section obligations" do
234
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iec, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
235
+ #{ASCIIDOC_BLANK_HDR}
236
+ [obligation=informative]
237
+ == Clause 1
238
+
239
+ === Clause 1a
240
+
241
+ [obligation=normative]
242
+ == Clause 2
243
+
244
+ [appendix,obligation=informative]
245
+ == Annex
246
+ INPUT
247
+ #{BLANK_HDR}
248
+ <sections><clause id="_" inline-header="false" obligation="informative">
249
+ <title>Clause 1</title>
250
+ <clause id="_" inline-header="false" obligation="informative">
251
+ <title>Clause 1a</title>
252
+ </clause>
253
+ </clause>
254
+ <clause id="_" inline-header="false" obligation="normative">
255
+ <title>Clause 2</title>
256
+ </clause>
257
+ </sections><annex id="_" inline-header="false" obligation="informative">
258
+ <title>Annex</title>
259
+ </annex>
260
+ </iso-standard>
261
+ OUTPUT
262
+ end
263
+
264
+ it "processes inline headers" do
265
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iec, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
266
+ #{ASCIIDOC_BLANK_HDR}
267
+ == Clause 1
268
+
269
+ [%inline-header]
270
+ === Clause 1a
271
+
272
+ [appendix]
273
+ == Annex A
274
+
275
+ [%inline-header]
276
+ === Clause Aa
277
+ INPUT
278
+ #{BLANK_HDR}
279
+ <sections><clause id="_" inline-header="false" obligation="normative">
280
+ <title>Clause 1</title>
281
+ <clause id="_" inline-header="true" obligation="normative">
282
+ <title>Clause 1a</title>
283
+ </clause>
284
+ </clause>
285
+ </sections><annex id="_" inline-header="false" obligation="normative">
286
+ <title>Annex A</title>
287
+ <clause id="_" inline-header="true" obligation="normative">
288
+ <title>Clause Aa</title>
289
+ </clause>
290
+ </annex>
291
+ </iso-standard>
292
+ OUTPUT
293
+ end
294
+
295
+ it "processes blank headers" do
296
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iec, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
297
+ #{ASCIIDOC_BLANK_HDR}
298
+ == Clause 1
299
+
300
+ === {blank}
301
+
302
+ INPUT
303
+ #{BLANK_HDR}
304
+ <sections>
305
+ <clause id="_" inline-header="false" obligation="normative">
306
+ <title>Clause 1</title>
307
+ <clause id="_" inline-header="false" obligation="normative">
308
+ </clause>
309
+ </clause>
310
+ </sections>
311
+ </iso-standard>
312
+ OUTPUT
313
+ end
314
+
315
+ it "processes term document sources" do
316
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iec, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
317
+ #{ASCIIDOC_BLANK_HDR}
318
+
319
+ Foreword
320
+
321
+ [source="iso1234,iso5678"]
322
+ == Terms and Definitions
323
+
324
+ INPUT
325
+ #{BLANK_HDR}
326
+ <termdocsource bibitemid="iso1234"/><termdocsource bibitemid="iso5678"/>
327
+ <preface><foreword obligation="informative">
328
+ <title>Foreword</title>
329
+ <p id="_">Foreword</p>
330
+ </foreword></preface><sections>
331
+ <terms id="_" obligation="normative">
332
+ <title>Terms and definitions</title>
333
+
334
+
335
+ </terms></sections>
336
+ </iso-standard>
337
+
338
+ OUTPUT
339
+ end
340
+
341
+ end
@@ -0,0 +1,307 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Asciidoctor::Iec do
4
+ it "processes basic tables" do
5
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iec, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
6
+ #{ASCIIDOC_BLANK_HDR}
7
+ .Table Name
8
+ |===
9
+ |A |B |C
10
+
11
+ h|1 |2 |3
12
+ |===
13
+ INPUT
14
+ #{BLANK_HDR}
15
+ <sections>
16
+ <table id="_">
17
+ <name>Table Name</name>
18
+ <thead>
19
+ <tr>
20
+ <th align="left">A</th>
21
+ <th align="left">B</th>
22
+ <th align="left">C</th>
23
+ </tr>
24
+ </thead>
25
+ <tbody>
26
+ <tr>
27
+ <th align="left">1</th>
28
+ <td align="left">2</td>
29
+ <td align="left">3</td>
30
+ </tr>
31
+ </tbody>
32
+ </table>
33
+ </sections>
34
+ </iso-standard>
35
+ OUTPUT
36
+ end
37
+
38
+ it "inserts header rows in a table with a name and no header" do
39
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iec, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
40
+ #{ASCIIDOC_BLANK_HDR}
41
+ [headerrows=2]
42
+ .Table Name
43
+ |===
44
+ |A |B |C
45
+ h|1 |2 |3
46
+ h|1 |2 |3
47
+ |===
48
+ INPUT
49
+ #{BLANK_HDR}
50
+ <sections>
51
+ <table id="_">
52
+ <name>Table Name</name>
53
+ <thead><tr>
54
+ <td align="left">A</td>
55
+ <td align="left">B</td>
56
+ <td align="left">C</td>
57
+ </tr><tr>
58
+ <th align="left">1</th>
59
+ <td align="left">2</td>
60
+ <td align="left">3</td>
61
+ </tr></thead>
62
+ <tbody>
63
+
64
+
65
+ <tr>
66
+ <th align="left">1</th>
67
+ <td align="left">2</td>
68
+ <td align="left">3</td>
69
+ </tr>
70
+ </tbody>
71
+ </table>
72
+ </sections>
73
+ </iso-standard>
74
+ OUTPUT
75
+ end
76
+
77
+
78
+ it "inserts header rows in a table without a name and no header" do
79
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iec, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
80
+ #{ASCIIDOC_BLANK_HDR}
81
+ [headerrows=2]
82
+ |===
83
+ |A |B |C
84
+ h|1 |2 |3
85
+ h|1 |2 |3
86
+ |===
87
+ INPUT
88
+ #{BLANK_HDR}
89
+ <sections>
90
+ <table id="_"><thead><tr>
91
+ <td align="left">A</td>
92
+ <td align="left">B</td>
93
+ <td align="left">C</td>
94
+ </tr><tr>
95
+ <th align="left">1</th>
96
+ <td align="left">2</td>
97
+ <td align="left">3</td>
98
+ </tr></thead>
99
+ <tbody>
100
+
101
+
102
+ <tr>
103
+ <th align="left">1</th>
104
+ <td align="left">2</td>
105
+ <td align="left">3</td>
106
+ </tr>
107
+ </tbody>
108
+ </table>
109
+ </sections>
110
+ </iso-standard>
111
+ OUTPUT
112
+ end
113
+
114
+ it "processes complex tables" do
115
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iec, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
116
+ #{ASCIIDOC_BLANK_HDR}
117
+ [cols="<,^,^,^,^",options="header,footer",headerrows=2]
118
+ .Maximum permissible mass fraction of defects
119
+ |===
120
+ .2+|Defect 4+^| Maximum permissible mass fraction of defects in husked rice +
121
+ stem:[w_max]
122
+ | in husked rice | in milled rice (non-glutinous) | in husked parboiled rice | in milled parboiled rice
123
+
124
+ | Extraneous matter: organic footnote:[Organic extraneous matter includes foreign seeds, husks, bran, parts of straw, etc.] | 1,0 | 0,5 | 1,0 | 0,5
125
+ // not rendered list here
126
+ | Extraneous matter: inorganic footnote:[Inorganic extraneous matter includes stones, sand, dust, etc.] | 0,5 | 0,5 | 0,5 | 0,5
127
+ | Paddy | 2,5 | 0,3 | 2,5 | 0,3
128
+ | Husked rice, non-parboiled | Not applicable | 1,0 | 1,0 | 1,0
129
+ | Milled rice, non-parboiled | 1,0 | Not applicable | 1,0 | 1,0
130
+ | Husked rice, parboiled | 1,0 | 1,0 | Not applicable | 1,0
131
+ | Milled rice, parboiled | 1,0 | 1,0 | 1,0 | Not applicable
132
+ | Chips | 0,1 | 0,1 | 0,1 | 0,1
133
+ | HDK | 2,0 footnoteref:[defectsmass,The maximum permissible mass fraction of defects shall be determined with respect to the mass fraction obtained after milling.] | 2,0 | 2,0 footnoteref:[defectsmass] | 2,0
134
+ | Damaged kernels | 4,0 | 3,0 | 4,0 | 3,0
135
+ | Immature and/or malformed kernels | 8,0 | 2,0 | 8,0 | 2,0
136
+ | Chalky kernels | 5,0 footnoteref:[defectsmass] | 5,0 | Not applicable | Not applicable
137
+ | Red kernels and red-streaked kernels | 12,0 | 12,0 | 12,0 footnoteref:[defectsmass] | 12,0
138
+ | Partly gelatinized kernels | Not applicable | Not applicable | 11,0 footnoteref:[defectsmass] | 11,0
139
+ | Pecks | Not applicable | Not applicable | 4,0 | 2,0
140
+ | Waxy rice | 1,0 footnoteref:[defectsmass] | 1,0 | 1,0 footnoteref:[defectsmass] | 1,0
141
+
142
+ 5+a| Live insects shall not be present. Dead insects shall be included in extraneous matter.
143
+ |===
144
+ INPUT
145
+ #{BLANK_HDR}
146
+ <sections>
147
+ <table id="_">
148
+ <name>Maximum permissible mass fraction of defects</name>
149
+ <thead>
150
+ <tr>
151
+ <th rowspan="2" align="left">Defect</th>
152
+ <th colspan="4" align="center">Maximum permissible mass fraction of defects in husked rice<br/>
153
+ <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>w</mi><mi>max</mi></msub></math></stem></th>
154
+ </tr>
155
+ <tr>
156
+ <td align="left">in husked rice</td>
157
+ <td align="center">in milled rice (non-glutinous)</td>
158
+ <td align="center">in husked parboiled rice</td>
159
+ <td align="center">in milled parboiled rice</td>
160
+ </tr></thead>
161
+ <tbody>
162
+
163
+ <tr>
164
+ <td align="left">Extraneous matter: organic<fn reference="a">
165
+ <p id="_">Organic extraneous matter includes foreign seeds, husks, bran, parts of straw, etc.</p>
166
+ </fn></td>
167
+ <td align="center">1,0</td>
168
+ <td align="center">0,5</td>
169
+ <td align="center">1,0</td>
170
+ <td align="center">0,5</td>
171
+ </tr>
172
+ <tr>
173
+ <td align="left">Extraneous matter: inorganic<fn reference="b">
174
+ <p id="_">Inorganic extraneous matter includes stones, sand, dust, etc.</p>
175
+ </fn></td>
176
+ <td align="center">0,5</td>
177
+ <td align="center">0,5</td>
178
+ <td align="center">0,5</td>
179
+ <td align="center">0,5</td>
180
+ </tr>
181
+ <tr>
182
+ <td align="left">Paddy</td>
183
+ <td align="center">2,5</td>
184
+ <td align="center">0,3</td>
185
+ <td align="center">2,5</td>
186
+ <td align="center">0,3</td>
187
+ </tr>
188
+ <tr>
189
+ <td align="left">Husked rice, non-parboiled</td>
190
+ <td align="center">Not applicable</td>
191
+ <td align="center">1,0</td>
192
+ <td align="center">1,0</td>
193
+ <td align="center">1,0</td>
194
+ </tr>
195
+ <tr>
196
+ <td align="left">Milled rice, non-parboiled</td>
197
+ <td align="center">1,0</td>
198
+ <td align="center">Not applicable</td>
199
+ <td align="center">1,0</td>
200
+ <td align="center">1,0</td>
201
+ </tr>
202
+ <tr>
203
+ <td align="left">Husked rice, parboiled</td>
204
+ <td align="center">1,0</td>
205
+ <td align="center">1,0</td>
206
+ <td align="center">Not applicable</td>
207
+ <td align="center">1,0</td>
208
+ </tr>
209
+ <tr>
210
+ <td align="left">Milled rice, parboiled</td>
211
+ <td align="center">1,0</td>
212
+ <td align="center">1,0</td>
213
+ <td align="center">1,0</td>
214
+ <td align="center">Not applicable</td>
215
+ </tr>
216
+ <tr>
217
+ <td align="left">Chips</td>
218
+ <td align="center">0,1</td>
219
+ <td align="center">0,1</td>
220
+ <td align="center">0,1</td>
221
+ <td align="center">0,1</td>
222
+ </tr>
223
+ <tr>
224
+ <td align="left">HDK</td>
225
+ <td align="center">2,0<fn reference="c">
226
+ <p id="_">The maximum permissible mass fraction of defects shall be determined with respect to the mass fraction obtained after milling.</p>
227
+ </fn></td>
228
+ <td align="center">2,0</td>
229
+ <td align="center">2,0<fn reference="c">
230
+ <p id="_">The maximum permissible mass fraction of defects shall be determined with respect to the mass fraction obtained after milling.</p>
231
+ </fn></td>
232
+ <td align="center">2,0</td>
233
+ </tr>
234
+ <tr>
235
+ <td align="left">Damaged kernels</td>
236
+ <td align="center">4,0</td>
237
+ <td align="center">3,0</td>
238
+ <td align="center">4,0</td>
239
+ <td align="center">3,0</td>
240
+ </tr>
241
+ <tr>
242
+ <td align="left">Immature and/or malformed kernels</td>
243
+ <td align="center">8,0</td>
244
+ <td align="center">2,0</td>
245
+ <td align="center">8,0</td>
246
+ <td align="center">2,0</td>
247
+ </tr>
248
+ <tr>
249
+ <td align="left">Chalky kernels</td>
250
+ <td align="center">5,0<fn reference="c">
251
+ <p id="_">The maximum permissible mass fraction of defects shall be determined with respect to the mass fraction obtained after milling.</p>
252
+ </fn></td>
253
+ <td align="center">5,0</td>
254
+ <td align="center">Not applicable</td>
255
+ <td align="center">Not applicable</td>
256
+ </tr>
257
+ <tr>
258
+ <td align="left">Red kernels and red-streaked kernels</td>
259
+ <td align="center">12,0</td>
260
+ <td align="center">12,0</td>
261
+ <td align="center">12,0<fn reference="c">
262
+ <p id="_">The maximum permissible mass fraction of defects shall be determined with respect to the mass fraction obtained after milling.</p>
263
+ </fn></td>
264
+ <td align="center">12,0</td>
265
+ </tr>
266
+ <tr>
267
+ <td align="left">Partly gelatinized kernels</td>
268
+ <td align="center">Not applicable</td>
269
+ <td align="center">Not applicable</td>
270
+ <td align="center">11,0<fn reference="c">
271
+ <p id="_">The maximum permissible mass fraction of defects shall be determined with respect to the mass fraction obtained after milling.</p>
272
+ </fn></td>
273
+ <td align="center">11,0</td>
274
+ </tr>
275
+ <tr>
276
+ <td align="left">Pecks</td>
277
+ <td align="center">Not applicable</td>
278
+ <td align="center">Not applicable</td>
279
+ <td align="center">4,0</td>
280
+ <td align="center">2,0</td>
281
+ </tr>
282
+ <tr>
283
+ <td align="left">Waxy rice</td>
284
+ <td align="center">1,0<fn reference="c">
285
+ <p id="_">The maximum permissible mass fraction of defects shall be determined with respect to the mass fraction obtained after milling.</p>
286
+ </fn></td>
287
+ <td align="center">1,0</td>
288
+ <td align="center">1,0<fn reference="c">
289
+ <p id="_">The maximum permissible mass fraction of defects shall be determined with respect to the mass fraction obtained after milling.</p>
290
+ </fn></td>
291
+ <td align="center">1,0</td>
292
+ </tr>
293
+ </tbody>
294
+ <tfoot>
295
+ <tr>
296
+ <td colspan="5" align="left">
297
+ <p id="_">Live insects shall not be present. Dead insects shall be included in extraneous matter.</p>
298
+ </td>
299
+ </tr>
300
+ </tfoot>
301
+ </table>
302
+ </sections>
303
+ </iso-standard>
304
+ OUTPUT
305
+ end
306
+ end
307
+