Class: Marta::ReadWrite::ReaderWriter

Inherits:
Object
  • Object
show all
Includes:
ElementInformation, OptionsAndPaths
Defined in:
lib/marta/read_write.rb

Overview

Note:

It is believed that no user will use it

Sometimes marta reads files. Sometimes writes

Class Method Summary collapse

Class Method Details

.file_2_hash(json) ⇒ Object

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



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 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) ⇒ Object

Marta is writing to jsons from time to time



19
20
21
22
23
24
25
# 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) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# 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