asciidoctor-iso 0.6.1 → 0.7.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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +2 -0
  3. data/.travis.yml +5 -0
  4. data/Gemfile.lock +12 -10
  5. data/README.adoc +113 -16
  6. data/bin/rspec +18 -0
  7. data/lib/asciidoctor/iso/base.rb +30 -28
  8. data/lib/asciidoctor/iso/blocks.rb +33 -33
  9. data/lib/asciidoctor/iso/cleanup.rb +79 -33
  10. data/lib/asciidoctor/iso/cleanup_block.rb +71 -18
  11. data/lib/asciidoctor/iso/cleanup_ref.rb +35 -30
  12. data/lib/asciidoctor/iso/converter.rb +0 -3
  13. data/lib/asciidoctor/iso/front.rb +29 -16
  14. data/lib/asciidoctor/iso/html/isodoc.css +34 -0
  15. data/lib/asciidoctor/iso/html/wordstyle.css +138 -6
  16. data/lib/asciidoctor/iso/inline.rb +10 -22
  17. data/lib/asciidoctor/iso/isodoc.rng +66 -16
  18. data/lib/asciidoctor/iso/isostandard.rng +129 -15
  19. data/lib/asciidoctor/iso/lists.rb +49 -42
  20. data/lib/asciidoctor/iso/macros.rb +12 -8
  21. data/lib/asciidoctor/iso/section.rb +53 -37
  22. data/lib/asciidoctor/iso/table.rb +9 -1
  23. data/lib/asciidoctor/iso/utils.rb +18 -13
  24. data/lib/asciidoctor/iso/validate.rb +100 -24
  25. data/lib/asciidoctor/iso/validate_requirements.rb +106 -0
  26. data/lib/asciidoctor/iso/validate_section.rb +85 -65
  27. data/lib/asciidoctor/iso/validate_style.rb +68 -115
  28. data/lib/asciidoctor/iso/version.rb +1 -1
  29. data/spec/asciidoctor-iso/base_spec.rb +193 -0
  30. data/spec/asciidoctor-iso/blocks_spec.rb +426 -0
  31. data/spec/asciidoctor-iso/cleanup_spec.rb +687 -0
  32. data/spec/asciidoctor-iso/inline_spec.rb +159 -0
  33. data/spec/asciidoctor-iso/lists_spec.rb +189 -0
  34. data/spec/asciidoctor-iso/macros_spec.rb +20 -0
  35. data/spec/asciidoctor-iso/refs_spec.rb +194 -0
  36. data/spec/asciidoctor-iso/section_spec.rb +301 -0
  37. data/spec/asciidoctor-iso/table_spec.rb +307 -0
  38. data/spec/asciidoctor-iso/validate_spec.rb +749 -0
  39. data/spec/examples/english.yaml +69 -0
  40. data/spec/examples/rice.adoc +30 -28
  41. data/spec/examples/rice.doc +3035 -2865
  42. data/spec/examples/rice.html +281 -234
  43. data/spec/examples/rice.preview.html +30 -20
  44. data/spec/examples/rice.xml +250 -282
  45. data/spec/spec_helper.rb +87 -0
  46. metadata +17 -2
@@ -0,0 +1,301 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Asciidoctor::ISO do
4
+ it "processes sections" do
5
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
6
+ #{ASCIIDOC_BLANK_HDR}
7
+ .Foreword
8
+
9
+ == Introduction
10
+
11
+ === Introduction Subsection
12
+
13
+ === Patent Notice
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
+ [appendix]
42
+ == Annex
43
+
44
+ === Annex A.1
45
+
46
+ == Bibliography
47
+
48
+ === Bibliography Subsection
49
+ INPUT
50
+ #{BLANK_HDR}
51
+ <introduction id="_" obligation="informative"><title>Introduction</title><subsection id="_" inline-header="false" obligation="informative">
52
+ <title>Introduction Subsection</title>
53
+ </subsection>
54
+ </introduction><sections>
55
+ <clause id="_" obligation="normative">
56
+ <title>Scope</title>
57
+ <p id="_">Text</p>
58
+ </clause>
59
+
60
+ <terms id="_" obligation="normative">
61
+ <title>Terms and Definitions</title>
62
+ <term id="_">
63
+ <preferred>Term1</preferred>
64
+ </term>
65
+ </terms>
66
+ <terms id="_" obligation="normative"><title>Terms, Definitions, Symbols and Abbreviated Terms</title><terms id="_" obligation="normative">
67
+ <title>Normal Terms</title>
68
+ <term id="_">
69
+ <preferred>Term2</preferred>
70
+ </term>
71
+ </terms>
72
+ <symbols-abbrevs id="_"/></terms>
73
+ <symbols-abbrevs id="_"/>
74
+ <clause id="_" inline-header="false" obligation="normative"><title>Clause 4</title><subsection id="_" inline-header="false" obligation="normative">
75
+ <title>Introduction</title>
76
+ </subsection>
77
+ <subsection id="_" inline-header="false" obligation="normative">
78
+ <title>Clause 4.2</title>
79
+ </subsection></clause>
80
+
81
+ </sections><annex id="_" inline-header="false" obligation="normative">
82
+ <title>Annex</title>
83
+ <subsection id="_" inline-header="false" obligation="normative">
84
+ <title>Annex A.1</title>
85
+ </subsection>
86
+ </annex><references id="_" obligation="informative">
87
+ <title>Normative References</title>
88
+ </references><references id="_" obligation="informative">
89
+ <title>Bibliography</title>
90
+ <references id="_" obligation="informative">
91
+ <title>Bibliography Subsection</title>
92
+ </references>
93
+ </references>
94
+ </iso-standard>
95
+ OUTPUT
96
+ end
97
+
98
+ it "processes sections with title attributes" do
99
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
100
+ #{ASCIIDOC_BLANK_HDR}
101
+ .Foreword
102
+
103
+ [heading=introduction]
104
+ == Εισαγωγή
105
+
106
+ === Introduction Subsection
107
+
108
+ === Patent Notice
109
+
110
+ [heading=scope]
111
+ == Σκοπός
112
+
113
+ Text
114
+
115
+ [heading=normative references]
116
+ == Κανονιστικές Παραπομπές
117
+
118
+ [heading=terms and definitions]
119
+ == Όροι και Ορισμοί
120
+
121
+ === Term1
122
+
123
+ [heading="terms, definitions, symbols and abbreviated terms"]
124
+ == Όροι, Ορισμοί, Σύμβολα και Συντομογραφίες
125
+
126
+ === Normal Terms
127
+
128
+ ==== Term2
129
+
130
+ [heading=symbols and abbreviated terms]
131
+ === Σύμβολα και Συντομογραφίες
132
+
133
+ [heading=symbols and abbreviated terms]
134
+ == Σύμβολα και Συντομογραφίες
135
+
136
+ == Clause 4
137
+
138
+ === Introduction
139
+
140
+ === Clause 4.2
141
+
142
+ [appendix]
143
+ == Annex
144
+
145
+ === Annex A.1
146
+
147
+ [heading=bibliography]
148
+ == Βιβλιογραφία
149
+
150
+ === Bibliography Subsection
151
+ INPUT
152
+ #{BLANK_HDR}
153
+ <introduction id="_" obligation="informative"><title>Introduction</title><subsection id="_" inline-header="false" obligation="informative">
154
+ <title>Introduction Subsection</title>
155
+ </subsection>
156
+ </introduction><sections>
157
+ <clause id="_" obligation="normative">
158
+ <title>Scope</title>
159
+ <p id="_">Text</p>
160
+ </clause>
161
+
162
+ <terms id="_" obligation="normative">
163
+ <title>Terms and Definitions</title>
164
+ <term id="_">
165
+ <preferred>Term1</preferred>
166
+ </term>
167
+ </terms>
168
+ <terms id="_" obligation="normative"><title>Terms and Definitions</title><terms id="_" obligation="normative">
169
+ <title>Normal Terms</title>
170
+ <term id="_">
171
+ <preferred>Term2</preferred>
172
+ </term>
173
+ </terms>
174
+ <symbols-abbrevs id="_"/></terms>
175
+ <symbols-abbrevs id="_"/>
176
+ <clause id="_" inline-header="false" obligation="normative"><title>Clause 4</title><subsection id="_" inline-header="false" obligation="normative">
177
+ <title>Introduction</title>
178
+ </subsection>
179
+ <subsection id="_" inline-header="false" obligation="normative">
180
+ <title>Clause 4.2</title>
181
+ </subsection></clause>
182
+
183
+ </sections><annex id="_" inline-header="false" obligation="normative">
184
+ <title>Annex</title>
185
+ <subsection id="_" inline-header="false" obligation="normative">
186
+ <title>Annex A.1</title>
187
+ </subsection>
188
+ </annex><references id="_" obligation="informative">
189
+ <title>Normative References</title>
190
+ </references><references id="_" obligation="informative">
191
+ <title>Bibliography</title>
192
+ <references id="_" obligation="informative">
193
+ <title>Bibliography Subsection</title>
194
+ </references>
195
+ </references>
196
+ </iso-standard>
197
+ OUTPUT
198
+ end
199
+
200
+ it "processes section obligations" do
201
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
202
+ #{ASCIIDOC_BLANK_HDR}
203
+ [obligation=informative]
204
+ == Clause 1
205
+
206
+ === Clause 1a
207
+
208
+ [obligation=normative]
209
+ == Clause 2
210
+
211
+ [appendix,obligation=informative]
212
+ == Annex
213
+ INPUT
214
+ #{BLANK_HDR}
215
+ <sections><clause id="_" inline-header="false" obligation="informative">
216
+ <title>Clause 1</title>
217
+ <subsection id="_" inline-header="false" obligation="informative">
218
+ <title>Clause 1a</title>
219
+ </subsection>
220
+ </clause>
221
+ <clause id="_" inline-header="false" obligation="normative">
222
+ <title>Clause 2</title>
223
+ </clause>
224
+ </sections><annex id="_" inline-header="false" obligation="informative">
225
+ <title>Annex</title>
226
+ </annex>
227
+ </iso-standard>
228
+ OUTPUT
229
+ end
230
+
231
+ it "processes inline headers" do
232
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
233
+ #{ASCIIDOC_BLANK_HDR}
234
+ == Clause 1
235
+
236
+ [%inline-header]
237
+ === Clause 1a
238
+
239
+ [appendix]
240
+ == Annex A
241
+
242
+ [%inline-header]
243
+ === Clause Aa
244
+ INPUT
245
+ #{BLANK_HDR}
246
+ <sections><clause id="_" inline-header="false" obligation="normative">
247
+ <title>Clause 1</title>
248
+ <subsection id="_" inline-header="true" obligation="normative">
249
+ <title>Clause 1a</title>
250
+ </subsection>
251
+ </clause>
252
+ </sections><annex id="_" inline-header="false" obligation="normative">
253
+ <title>Annex A</title>
254
+ <subsection id="_" inline-header="true" obligation="normative">
255
+ <title>Clause Aa</title>
256
+ </subsection>
257
+ </annex>
258
+ </iso-standard>
259
+ OUTPUT
260
+ end
261
+
262
+ it "processes blank headers" do
263
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
264
+ #{ASCIIDOC_BLANK_HDR}
265
+ == Clause 1
266
+
267
+ === {blank}
268
+
269
+ INPUT
270
+ #{BLANK_HDR}
271
+ <sections>
272
+ <clause id="_" inline-header="false" obligation="normative">
273
+ <title>Clause 1</title>
274
+ <subsection id="_" inline-header="false" obligation="normative">
275
+ </subsection>
276
+ </clause>
277
+ </sections>
278
+ </iso-standard>
279
+ OUTPUT
280
+ end
281
+
282
+ it "processes term document sources" do
283
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
284
+ #{ASCIIDOC_BLANK_HDR}
285
+ [source="iso1234,iso5678"]
286
+ == Terms and Definitions
287
+
288
+ INPUT
289
+ #{BLANK_HDR}
290
+ <sections>
291
+ <terms id="_" obligation="normative">
292
+ <title>Terms and Definitions</title>
293
+ <source type="inline" bibitemid="iso1234" citeas=""/>
294
+ <source type="inline" bibitemid="iso5678" citeas=""/>
295
+ </terms>
296
+ </sections>
297
+ </iso-standard>
298
+ OUTPUT
299
+ end
300
+
301
+ end
@@ -0,0 +1,307 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Asciidoctor::ISO do
4
+ it "processes basic tables" do
5
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iso, 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: :iso, 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: :iso, 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: :iso, 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="AsciiMath">w_max</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
+