Sha256: 40b68a591e57bb85f4836866dc079eb5b45c59c45a3a2ace214f17df60524efc

Contents?: true

Size: 988 Bytes

Versions: 6

Compression:

Stored size: 988 Bytes

Contents

module Asciidoctor
  module Csa
    class Converter < Standoc::Converter
      def content_validate(doc)
        super
        bibdata_validate(doc.root)
      end

      def bibdata_validate(doc)
        stage_validate(doc)
        role_validate(doc)
      end

      def stage_validate(xmldoc)
        stage = xmldoc&.at("//bibdata/status/stage")&.text
        %w(proposal working-draft committee-draft draft-standard final-draft
        published withdrawn).include? stage or
        @log.add("Document Attributes", nil,
                 "#{stage} is not a recognised status")
      end

      def role_validate(doc)
        doc&.xpath("//bibdata/contributor/role[description]")&.each do |r|
          r["type"] == "author" or next
          role = r.at("./description").text
          %w{full-author contributor staff reviewer}.include?(role) or
        @log.add("Document Attributes", nil,
                 "#{role} is not a recognised role")
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
metanorma-csa-1.6.8 lib/asciidoctor/csa/validate.rb
metanorma-csa-1.6.7 lib/asciidoctor/csa/validate.rb
metanorma-csa-1.6.6 lib/asciidoctor/csa/validate.rb
metanorma-csa-1.6.5 lib/asciidoctor/csa/validate.rb
metanorma-csa-1.6.4 lib/asciidoctor/csa/validate.rb
metanorma-csa-1.6.3 lib/asciidoctor/csa/validate.rb