Module: Metanorma::Standoc::Index
- Included in:
- Cleanup
- Defined in:
- lib/metanorma/cleanup/index.rb
Instance Method Summary collapse
- #block_index_cleanup(xmldoc) ⇒ Object
- #include_indexterm?(elem) ⇒ Boolean
- #index_cleanup1(term, fieldofappl) ⇒ Object
- #indexterm_para?(para) ⇒ Boolean
- #para_index_cleanup(xmldoc) ⇒ Object
- #para_index_cleanup1(para, prev, foll) ⇒ Object
- #term_index_cleanup(xmldoc) ⇒ Object
Instance Method Details
#block_index_cleanup(xmldoc) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/metanorma/cleanup/index.rb', line 4 def block_index_cleanup(xmldoc) xmldoc.xpath("//quote | //td | //th | //formula | //li | //dt | " \ "//dd | //example | //note | //figure | //sourcecode | " \ "//admonition | //termnote | //termexample | //form | " \ "//requirement | //recommendation | //permission | " \ "//imagemap | //svgmap").each do |b| b.xpath("./p[indexterm]").each do |p| indexterm_para?(p) or next p.replace(p.children) end end end |
#include_indexterm?(elem) ⇒ Boolean
23 24 25 26 |
# File 'lib/metanorma/cleanup/index.rb', line 23 def include_indexterm?(elem) elem.nil? and return false !%w(image literal sourcecode).include?(elem.name) end |
#index_cleanup1(term, fieldofappl) ⇒ Object
55 56 57 58 59 60 |
# File 'lib/metanorma/cleanup/index.rb', line 55 def index_cleanup1(term, fieldofappl) term or return idx = term.children.dup fieldofappl.empty? or idx << ", <#{fieldofappl}>" term << "<index><primary>#{idx.to_xml}</primary></index>" end |
#indexterm_para?(para) ⇒ Boolean
17 18 19 20 21 |
# File 'lib/metanorma/cleanup/index.rb', line 17 def indexterm_para?(para) p = para.dup p.xpath("./index").each(&:remove) p.text.strip.empty? end |
#para_index_cleanup(xmldoc) ⇒ Object
28 29 30 31 32 33 |
# File 'lib/metanorma/cleanup/index.rb', line 28 def para_index_cleanup(xmldoc) xmldoc.xpath("//p[index]").select { |p| indexterm_para?(p) } .each do |p| para_index_cleanup1(p, p.previous_element, p.next_element) end end |
#para_index_cleanup1(para, prev, foll) ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/metanorma/cleanup/index.rb', line 35 def para_index_cleanup1(para, prev, foll) if include_indexterm?(prev) prev << para.remove.children elsif include_indexterm?(foll) # && !foll.children.empty? foll.add_first_child para.remove.children end end |
#term_index_cleanup(xmldoc) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/metanorma/cleanup/index.rb', line 43 def term_index_cleanup(xmldoc) @index_terms or return xmldoc.xpath("//preferred").each do |p| index_cleanup1(p.at("./expression/name | ./letter-symbol/name"), p.xpath("./field-of-application | ./usage-info") &.map(&:text)&.join(", ")) end xmldoc.xpath("//definitions/dl/dt").each do |p| index_cleanup1(p, "") end end |