asciidoctor-iso 0.6.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
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
+