metanorma-iec 0.0.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.
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
+