Method: CodeRunner::Run::FortranNamelist.read_mediawiki_documentation

Defined in:
lib/coderunner/fortran_namelist.rb

.read_mediawiki_documentation(file = ) ⇒ Object

This reads the mediawiki documentation of the input variables (as generated by write_mediawiki_documentation), copied from a wiki where it has been posted and placed in file, to see if anyone has updated the variable help on the wiki.



141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/coderunner/fortran_namelist.rb', line 141

def self.read_mediawiki_documentation(file = ARGV[2])
  documentation = File.read(file)
  #documentation.scan(/^(?<markup>=+)(?<namelist>\w+)\k<markup>(?<vars>.+?)\s+(?=^\k<markup>|\s*\Z)/m) do
  documentation.sub!(/\A.*=Namelists=/m, '')
  documentation.sub!(/\<\/textarea.*\Z/m, '')
  #documentation.scan(/(?<markup>=+)(?<namelist>\w+)\k<markup>(?<vars>.+?)\s+(?=\k<markup>|\|\})/m) do
  eputs 'Scanning mediawiki markup...'
  documentation.scan(/(?<markup>=+)(?<namelist>\w+)\k<markup>(?<vars>.+?)\s+(?=\|\})/m) do
    p 'nmlist', namelist = $~[:namelist].downcase.to_sym
    vars = $~[:vars]
    p vars
    #vars.scan(/^\*\s*(?:\[\[)?(?<var>\w+)(?:\]\])?\s*:\s+(?<help>.+?)(?=\n\*[^*]|\s*\Z)/m) do
    vars.scan(/\|\-\s+\|'''\[\[(?<altvar>\w+)\]\]'''\s+\|\|.*?\|\|.*?\|\|\s*?
              (?<var>\w+)?
              \s*\|\s*
              \<\!\-\-\s*begin\s+help\s*\-\-\>
                           (?<help>.+?)
                           \<\!\-\-\s*end\s+help\s*\-\-\>
                           /mx) do
      if $~[:var]
        var = $~[:var].downcase.to_sym
      else
        var = $~[:altvar].downcase.to_sym
      end
      help = $~[:help].sub(/\A\s*\*\s*/, '')
      p var, help
      sync_variable_help(namelist, var, help) if help.length > 0
    end
  end
end