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.
14 15 16 17 18 |
# File 'lib/stepmod/utils/stepmod_file_annotator.rb', line 14 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.
10 11 12 |
# File 'lib/stepmod/utils/stepmod_file_annotator.rb', line 10 def express_file @express_file end |
#resource_docs_cache_file ⇒ Object (readonly)
Returns the value of attribute resource_docs_cache_file.
10 11 12 |
# File 'lib/stepmod/utils/stepmod_file_annotator.rb', line 10 def resource_docs_cache_file @resource_docs_cache_file end |
#stepmod_dir ⇒ Object (readonly)
Returns the value of attribute stepmod_dir.
10 11 12 |
# File 'lib/stepmod/utils/stepmod_file_annotator.rb', line 10 def stepmod_dir @stepmod_dir end |
Instance Method Details
#call ⇒ Object
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 61 62 |
# File 'lib/stepmod/utils/stepmod_file_annotator.rb', line 20 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 |