lib/stepmod/utils/stepmod_file_annotator.rb in stepmod-utils-0.3.5 vs lib/stepmod/utils/stepmod_file_annotator.rb in stepmod-utils-0.3.7

- old
+ new

@@ -1,8 +1,8 @@ -require 'json' -require 'stepmod/utils/smrl_description_converter' -require 'stepmod/utils/smrl_resource_converter' +require "json" +require "stepmod/utils/smrl_description_converter" +require "stepmod/utils/smrl_resource_converter" module Stepmod module Utils class StepmodFileAnnotator attr_reader :express_file, :resource_docs_cache_file, :stepmod_dir @@ -15,39 +15,45 @@ @stepmod_dir = stepmod_dir || Dir.pwd end def call match = File.basename(express_file).match('^(arm|mim|bom)\.exp$') - descriptions_base = match ? "#{match.captures[0]}_descriptions.xml" : 'descriptions.xml' - descriptions_file = File.join(File.dirname(express_file), descriptions_base) + descriptions_base = match ? "#{match.captures[0]}_descriptions.xml" : "descriptions.xml" + descriptions_file = File.join(File.dirname(express_file), + descriptions_base) output_express = File.read(express_file) resource_docs_cache = JSON.parse(File.read(resource_docs_cache_file)) if File.exists?(descriptions_file) descriptions = Nokogiri::XML(File.read(descriptions_file)).root added_resource_descriptions = {} - descriptions.xpath('ext_description').each do |description| + descriptions.xpath("ext_description").each do |description| # Add base resource from linked path if exists, eg "language_schema.language.wr:WR1" -> "language_schema" - base_linked = description['linkend'].to_s.split('.').first + base_linked = description["linkend"].to_s.split(".").first if added_resource_descriptions[base_linked].nil? - base_reource_doc_dir = resource_docs_cache[description['linkend'].to_s.split('.').first] + base_reource_doc_dir = resource_docs_cache[description["linkend"].to_s.split(".").first] if base_reource_doc_dir - output_express << convert_from_resource_file(base_reource_doc_dir, stepmod_dir, base_linked, descriptions_file) + output_express << convert_from_resource_file( + base_reource_doc_dir, stepmod_dir, base_linked, descriptions_file + ) end added_resource_descriptions[base_linked] = true end - resource_docs_dir = resource_docs_cache[description['linkend']] + resource_docs_dir = resource_docs_cache[description["linkend"]] # Convert content description # when a schema description is available from resource.xml and also descriptions.xml, the description from resource.xml is only used. # https://github.com/metanorma/annotated-express/issues/32#issuecomment-792609078 if description.text.strip.length.positive? && resource_docs_dir.nil? - output_express << convert_from_description_text(descriptions_file, description) + output_express << convert_from_description_text( + descriptions_file, description + ) end # Add converted description from exact linked path - if resource_docs_dir && added_resource_descriptions[description['linkend']].nil? - output_express << convert_from_resource_file(resource_docs_dir, stepmod_dir, description['linkend'], descriptions_file) - added_resource_descriptions[description['linkend']] = true + if resource_docs_dir && added_resource_descriptions[description["linkend"]].nil? + output_express << convert_from_resource_file(resource_docs_dir, + stepmod_dir, description["linkend"], descriptions_file) + added_resource_descriptions[description["linkend"]] = true end end end output_express @@ -55,23 +61,24 @@ private def convert_from_description_text(descriptions_file, description) Dir.chdir(File.dirname(descriptions_file)) do - wrapper = "<ext_descriptions>#{description.to_s}</ext_descriptions>" - "\n" + Stepmod::Utils::SmrlDescriptionConverter.convert(wrapper) + wrapper = "<ext_descriptions>#{description}</ext_descriptions>" + "\n#{Stepmod::Utils::SmrlDescriptionConverter.convert(wrapper)}" end end def convert_from_resource_file(resource_docs_dir, stepmod_dir, linked, descriptions_file) - resource_docs_file = File.join(stepmod_dir, 'data/resource_docs', resource_docs_dir, 'resource.xml') + resource_docs_file = File.join(stepmod_dir, "data/resource_docs", + resource_docs_dir, "resource.xml") puts(resource_docs_file) resource_docs = Nokogiri::XML(File.read(resource_docs_file)).root schema = resource_docs.xpath("schema[@name='#{linked}']") Dir.chdir(File.dirname(descriptions_file)) do - wrapper = "<resource>#{schema.to_s}</resource>" - "\n" + Stepmod::Utils::SmrlResourceConverter.convert(wrapper) + wrapper = "<resource>#{schema}</resource>" + "\n#{Stepmod::Utils::SmrlResourceConverter.convert(wrapper)}" end end end end end