Class: Stepmod::Utils::StepmodFileAnnotator
- Inherits:
-
Object
- Object
- Stepmod::Utils::StepmodFileAnnotator
- Defined in:
- lib/stepmod/utils/stepmod_file_annotator.rb
Instance Attribute Summary collapse
-
#express_file ⇒ Object
readonly
Returns the value of attribute express_file.
-
#resource_docs_cache_file ⇒ Object
readonly
Returns the value of attribute resource_docs_cache_file.
-
#stepmod_dir ⇒ Object
readonly
Returns the value of attribute stepmod_dir.
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(express_file:, resource_docs_cache_file:, stepmod_dir: nil) ⇒ StepmodFileAnnotator
constructor
A new instance of StepmodFileAnnotator.
Constructor Details
#initialize(express_file:, resource_docs_cache_file:, stepmod_dir: nil) ⇒ StepmodFileAnnotator
Returns a new instance of StepmodFileAnnotator.
12 13 14 15 16 |
# File 'lib/stepmod/utils/stepmod_file_annotator.rb', line 12 def initialize(express_file:, resource_docs_cache_file:, stepmod_dir: nil) @express_file = express_file @resource_docs_cache_file = resource_docs_cache_file @stepmod_dir = stepmod_dir || Dir.pwd end |
Instance Attribute Details
#express_file ⇒ Object (readonly)
Returns the value of attribute express_file.
8 9 10 |
# File 'lib/stepmod/utils/stepmod_file_annotator.rb', line 8 def express_file @express_file end |
#resource_docs_cache_file ⇒ Object (readonly)
Returns the value of attribute resource_docs_cache_file.
8 9 10 |
# File 'lib/stepmod/utils/stepmod_file_annotator.rb', line 8 def resource_docs_cache_file @resource_docs_cache_file end |
#stepmod_dir ⇒ Object (readonly)
Returns the value of attribute stepmod_dir.
8 9 10 |
# File 'lib/stepmod/utils/stepmod_file_annotator.rb', line 8 def stepmod_dir @stepmod_dir end |
Instance Method Details
#call ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/stepmod/utils/stepmod_file_annotator.rb', line 18 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) 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| # Add base resource from linked path if exists, eg "language_schema.language.wr:WR1" -> "language_schema" 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] if base_reource_doc_dir 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"]] # 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 ) 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 end end end output_express end |