class Marta::ReadWrite::ReaderWriter

Sometimes marta reads files. Sometimes writes

@note It is believed that no user will use it

Public Class Methods

file_2_hash(json) click to toggle source

Marta reads file to hash if it is a valid json If it is not a json file Marta will treat it like nothing

# File lib/marta/read_write.rb, line 29
def self.file_2_hash(json)
  begin
    file = File.read(json)
    data = JSON.parse(file)
    # If there are methods
    if data['meths'] != {}
      # If there are old methods
      if !data['meths'].first[1]['options']['self'].nil? or !data['meths'].first[1]['options']['not_self'].nil?
        data = treat_old_version(data)
        File.open(json,"w") do |f|
          f.write(JSON.pretty_generate(data))
        end
      end
    end
    return data
  rescue
    nil
  end
end
file_write(name, data) click to toggle source

Marta is writing to jsons from time to time

# File lib/marta/read_write.rb, line 19
def self.file_write(name, data)
  file_name = File.join(SettingMaster.pageobjects_folder, name + '.json')
  File.open(file_name,"w") do |f|
    f.write(JSON.pretty_generate(data))
  end
  file_name
end
treat_old_version(data) click to toggle source
# File lib/marta/read_write.rb, line 49
def self.treat_old_version(data)
  result, result['meths'] = Hash.new, Hash.new
  result['vars'] = data['vars']
  # Taking all methods one by one
  data['meths'].each_pair do |method, method_content|
    result['meths'][method] = ElementHelper.method_structure
    result['meths'][method]['options']['collection'] = method_content['options'].to_h['collection']
    ['self','pappy','granny'].each do |level|
      if !method_content['options'].to_h[level].nil?
        result['meths'][method]['positive'][level]['tag'] = [method_content['options'][level]] - ['*']
      end
      if !method_content[level].to_h['retrieved_by_marta_text'].nil?
        result['meths'][method]['positive'][level]['text'] = [method_content[level]['retrieved_by_marta_text']]
      end
      method_content[level].to_h.each_pair do |name, value|
        if name != "retrieved_by_marta_text"
          result['meths'][method]['positive'][level]['attributes'][name] = value.class == String ? value.split(' ').uniq : value
        end
      end
      if !method_content['options'].to_h["not_#{level}"].nil?
        result['meths'][method]['negative'][level]['tag'] = [method_content['options']["not_#{level}"]] - ['*']
      end
      if !method_content["not_#{level}"].to_h['retrieved_by_marta_text'].nil?
        result['meths'][method]['negative'][level]['text'] = [method_content["not_#{level}"]['retrieved_by_marta_text']]
      end
      method_content["not_#{level}"].to_h.each_pair do |name, value|
        if name != "retrieved_by_marta_text"
          result['meths'][method]['negative'][level]['attributes'][name] = value.class == String ? value.split(' ').uniq : value
        end
      end
    end
  end
  result
end