dst-mods 1.0.0.alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3d34b42f26a8807645cb16d6b0d3e41ee6f6e5be
4
+ data.tar.gz: 2d1b5b78c983f8e9dcd5c50a7d98385288060b8d
5
+ SHA512:
6
+ metadata.gz: 5e89e7510ab41c59a5ce862ffc5c1070296848689cb2662b167057a0dd5f0308394c5a22e37e90c2c83f4724c094b0cfb8ea398ffefc3f3783650cff3aa4aefe
7
+ data.tar.gz: 89008400c6b81d8ffd15b6311a5eafe0a7daa076c433cd1333926a5818507b6e0e37ff354a156fcf076719fe07a5f038d4f6a546c5c92abace83b22d3bfae192
@@ -0,0 +1,37 @@
1
+
2
+ require 'dst-mods/mod_info'
3
+ require 'dst-mods/mod'
4
+
5
+ module DST
6
+
7
+ module Mods
8
+
9
+
10
+ class << self
11
+
12
+ def each_in_directory(d)
13
+ return enum_for(__callee__, d) unless block_given?
14
+
15
+ Dir[File.join(d, "*")].each do |path|
16
+ begin
17
+ m = Mod.load!(path)
18
+ rescue
19
+ # Not a valid module. Move on.
20
+ else
21
+ yield m
22
+ end
23
+ end
24
+ end
25
+ alias_method :each_in_folder, :each_in_directory
26
+
27
+
28
+ def in_directory(d)
29
+ each_in_directory(d).to_a
30
+ end
31
+ alias_method :in_folder, :in_directory
32
+
33
+ end
34
+
35
+ end
36
+
37
+ end
@@ -0,0 +1,5 @@
1
+
2
+ module DST
3
+ module Mods
4
+ end
5
+ end
@@ -0,0 +1,35 @@
1
+ require_relative '__module__'
2
+
3
+ require_relative 'mod_info'
4
+
5
+ module DST::Mods
6
+
7
+ class Mod
8
+
9
+ attr_reader :path, :info
10
+
11
+ def initialize(path:, info:)
12
+ @path = path
13
+ @info = info
14
+ end
15
+
16
+ def self.load!(path)
17
+ info_path = File.join(path, "modinfo.lua")
18
+ self.new(
19
+ path: File.absolute_path(path),
20
+ info: ModInfo.load!(info_path)
21
+ )
22
+ end
23
+
24
+
25
+ # For convenience, we'll define a shortcut method for
26
+ # each of the ModInfo::Keys.
27
+ ModInfo::Keys.each do |k|
28
+ define_method k do
29
+ info[k]
30
+ end
31
+ end
32
+
33
+ end
34
+
35
+ end
@@ -0,0 +1,39 @@
1
+ require_relative '__module__'
2
+
3
+ require 'recsym'
4
+ require 'ruby-lua'
5
+
6
+ module DST::Mods
7
+
8
+ module ModInfo
9
+
10
+ # The variables have a special meaning when used inside
11
+ # of a modinfo.lua file. So, let's grab them!
12
+ Keys = [
13
+ :name, :description, :author, :version,
14
+ :forumthread, :api_version, :priority,
15
+ :dst_compatible, :all_clients_require_mod,
16
+ :client_only_mod, :icon_atlas, :icon,
17
+ :configuration_options
18
+ ]
19
+
20
+
21
+ # Loads the specified modinfo.lua file and returns
22
+ # the keys that we care about.
23
+ def self.load!(path)
24
+ lua = Language::Lua.new
25
+ lua.load(path)
26
+
27
+ retval = {}
28
+ Keys.each do |k|
29
+ retval[k] = lua.var(true, k.to_s)
30
+ end
31
+
32
+ RecSym.this(retval)
33
+ end
34
+
35
+
36
+ end
37
+
38
+ end
39
+
metadata ADDED
@@ -0,0 +1,61 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dst-mods
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.alpha.1
5
+ platform: ruby
6
+ authors:
7
+ - Brian Lauber
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-07-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: recsym
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ description: Extract data from Don't Starve Together mods
28
+ email: constructible.truth@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/dst-mods.rb
34
+ - lib/dst-mods/__module__.rb
35
+ - lib/dst-mods/mod.rb
36
+ - lib/dst-mods/mod_info.rb
37
+ homepage: https://github.com/briandamaged/dst-mods
38
+ licenses:
39
+ - MIT
40
+ metadata: {}
41
+ post_install_message:
42
+ rdoc_options: []
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">"
53
+ - !ruby/object:Gem::Version
54
+ version: 1.3.1
55
+ requirements: []
56
+ rubyforge_project:
57
+ rubygems_version: 2.4.6
58
+ signing_key:
59
+ specification_version: 4
60
+ summary: Extract data from Don't Starve Together mods
61
+ test_files: []