Module: Reader

Included in:
RW
Defined in:
lib/wonko_the_sane/new_format.rb

Instance Method Summary collapse

Instance Method Details

#read_download(data, key) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/wonko_the_sane/new_format.rb', line 19

def read_download(data, key)
  if data[key.to_sym]
    data[key.to_sym].map { |dl| Download.from_json key, dl }
  else
    []
  end
end

#read_index(data) ⇒ Object



75
76
77
# File 'lib/wonko_the_sane/new_format.rb', line 75

def read_index(data)
  data.with_indifferent_access
end

#read_resource(data) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/wonko_the_sane/new_format.rb', line 27

def read_resource(data)
  return if !data || !data.is_a?(Object)
  res = WonkoVersion::Resources.new
  res.traits = data[:'general.traits'] if data[:'general.traits']
  res.folders = data[:'general.folders'] if data[:'general.folders']
  res.launchMethod = data[:'general.launcher'] if data[:'general.launcher']
  res.downloads = []
  res.downloads << read_download(data, 'general.downloads')
  res.downloads << read_download(data, 'java.libraries')
  res.downloads << read_download(data, 'java.natives')
  res.downloads << read_download(data, 'mc.jarmods')
  res.downloads.flatten!

  res.mainClass = data[:'java.mainClass']
  res.appletClass = data[:'mc.appletClass']
  res.assets = data[:'mc.assets']
  res.minecraftArguments = data[:'mc.arguments']
  res.tweakers = data[:'mc.tweakers']
  res.jarModTarget = data[:'mc.jarModTarget'] if data[:'mc.jarModTarget']
  res
end

#read_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
# File 'lib/wonko_the_sane/new_format.rb', line 49

def read_version(data)
  data = data.with_indifferent_access

  file = WonkoVersion.new
  file.is_complete = true

  file.uid = data[:uid]
  file.version = data[:version]
  file.time = data[:time]
  file.type = data[:type]
  file.requires = data[:requires].map { |req| Referenced.new(req[:uid], req[:version]) } if data[:requires]

  data[:data].each do |group|
    rules = group[:rules] ? group[:rules] : [ImplicitRule.new(:allow)]
    if Rule.allowed_on_side(rules, :client) && Rule.allowed_on_side(rules, :server)
      file.common = read_resource group
    elsif Rule.allowed_on_side rules, :server
      file.server = read_resource group
    else
      file.client = read_resource group
    end
  end if data[:data]

  file
end

#read_version_index(data) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/wonko_the_sane/new_format.rb', line 2

def read_version_index(data)
  data = data.with_indifferent_access
  index = VersionIndex.new data[:uid]
  index.name = data[:name]
  data[:versions].each do |ver|
    v = WonkoVersion.new
    v.is_complete = false
    v.uid = data[:uid]
    v.version = ver[:version]
    v.type = ver[:type]
    v.time = ver[:time]
    index.versions << v
  end

  index
end