pfrpg_import 0.0.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.
- checksums.yaml +7 -0
- data/Rakefile +7 -0
- data/lib/pfrpg_import/case_helpers.rb +31 -0
- data/lib/pfrpg_import/feature_writer.rb +62 -0
- data/lib/pfrpg_import/heroclass_facts.rb +176 -0
- data/lib/pfrpg_import/heroclass_importer.rb +43 -0
- data/lib/pfrpg_import/heroclass_levels.rb +26 -0
- data/lib/pfrpg_import/heroclass_parser.rb +28 -0
- data/lib/pfrpg_import/heroclass_spells.rb +32 -0
- data/lib/pfrpg_import/heroclass_writer.rb +35 -0
- data/lib/pfrpg_import/level.rb +52 -0
- data/lib/pfrpg_import/level_base.rb +9 -0
- data/lib/pfrpg_import/level_writer.rb +39 -0
- data/lib/pfrpg_import/spell_writer.rb +32 -0
- data/lib/pfrpg_import/version.rb +3 -0
- data/lib/pfrpg_import.rb +17 -0
- data/test/helper.rb +4 -0
- data/test/import_test.rb +32 -0
- metadata +90 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: eef901a38955ad00b063ca4dfe85f2dca0cd539e
|
4
|
+
data.tar.gz: 04bf2cae3c528ff3025694a9c4a4c8270543d989
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 431f0c764701275b2f5cbb8cf128f47c0142c062c17ef1b68c85c8810673ed52f07599562639e3593cdb2efd982a7244c62c50136477046e843d8adefd7e01ee
|
7
|
+
data.tar.gz: 92de8d39a0f66e8fc1a0c77f0191ca3f057d978c791847b62833c70f5b50ecabcfb3647d10f5ca037f75334adc41586e7fedb0840d75e36a1dda3cda9ba2d2f1
|
data/Rakefile
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'active_support/inflector'
|
2
|
+
|
3
|
+
module PfrpgImport::CaseHelpers
|
4
|
+
|
5
|
+
class String
|
6
|
+
def underscore
|
7
|
+
self.gsub(/::/, '/').
|
8
|
+
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
9
|
+
gsub(/([a-z\d])([A-Z])/,'\1_\2').
|
10
|
+
tr("-", "_").
|
11
|
+
tr(" ", "_").
|
12
|
+
downcase
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def camelized_title(title)
|
17
|
+
title.camelize.gsub(' ','')
|
18
|
+
end
|
19
|
+
|
20
|
+
def underscored_title(title)
|
21
|
+
title.underscore
|
22
|
+
end
|
23
|
+
|
24
|
+
def arrayify(string_list)
|
25
|
+
str = "["
|
26
|
+
string_list.each do |b|
|
27
|
+
str = str + "#{b},"
|
28
|
+
end
|
29
|
+
return str + ']'
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module PfrpgImport
|
2
|
+
class FeatureWriter
|
3
|
+
include CaseHelpers
|
4
|
+
def initialize(features, filename, path='./imported/')
|
5
|
+
@features = features
|
6
|
+
@filename = filename
|
7
|
+
@path = path
|
8
|
+
end
|
9
|
+
|
10
|
+
def print_features
|
11
|
+
filename = "#{@path}#{underscored_title(@filename)}_feature.rb"
|
12
|
+
feature_name = "#{camelized_title(@filename)}Feature"
|
13
|
+
table = File.new(filename, "w")
|
14
|
+
str = <<-eos
|
15
|
+
class #{feature_name} < ClassFeature
|
16
|
+
def feature
|
17
|
+
#{feature_name}Info.by_name(self.ability_name)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.from_feature_info(feature_info)
|
21
|
+
c = #{feature_name}.new
|
22
|
+
c.ability_name = feature_info.name
|
23
|
+
c
|
24
|
+
end
|
25
|
+
end
|
26
|
+
eos
|
27
|
+
table.puts str
|
28
|
+
table.close
|
29
|
+
puts "Wrote #{filename}"
|
30
|
+
|
31
|
+
filename = "#{@path}#{underscored_title(@filename)}_feature_info.rb"
|
32
|
+
table = File.new(filename, "w")
|
33
|
+
str = <<-eos
|
34
|
+
class #{feature_name}InfoInfo
|
35
|
+
|
36
|
+
def self.by_name(name)
|
37
|
+
self.all.find { |x| x.name == name }
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.all
|
41
|
+
[ ]
|
42
|
+
end
|
43
|
+
|
44
|
+
def feature_type
|
45
|
+
"#{feature_name}"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
eos
|
49
|
+
table.puts str
|
50
|
+
table.close
|
51
|
+
puts "Wrote #{filename}"
|
52
|
+
end
|
53
|
+
|
54
|
+
def print_level_bonus
|
55
|
+
<<-eos
|
56
|
+
spells =
|
57
|
+
#{@spells}
|
58
|
+
spells[level-1]
|
59
|
+
eos
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,176 @@
|
|
1
|
+
module PfrpgImport
|
2
|
+
class HeroclassFacts
|
3
|
+
include CaseHelpers
|
4
|
+
attr_reader :friendly_name, :hit_die, :start_wealth, :starting_wealth_avg,
|
5
|
+
:alignment, :skills_per_level, :spells_bonus_attr, :description,
|
6
|
+
:class_skills, :starting_feats, :feature_type
|
7
|
+
|
8
|
+
def initialize(bundle)
|
9
|
+
@friendly_name = bundle[:heroclass_name]
|
10
|
+
@hit_die = bundle[:hit_die].gsub("d","")
|
11
|
+
@start_wealth = bundle[:starting_wealth]
|
12
|
+
@starting_wealth_average = bundle[:starting_wealth_avg]
|
13
|
+
@alignment = bundle[:alignment]
|
14
|
+
@skills_per_level = bundle[:skills_per]
|
15
|
+
@spells_bonus_attr = bundle[:spell_mod]
|
16
|
+
@description = bundle[:description]
|
17
|
+
@class_skills = bundle[:class_skills]
|
18
|
+
@starting_feats= bundle[:starting_feats]
|
19
|
+
@feature_type = get_feature_type(@friendly_name)
|
20
|
+
end
|
21
|
+
|
22
|
+
def title
|
23
|
+
@friendly_name.underscore
|
24
|
+
end
|
25
|
+
|
26
|
+
def get_feature_type(friendly_name)
|
27
|
+
"#{camelized_title(friendly_name)}Feature"
|
28
|
+
end
|
29
|
+
|
30
|
+
def print_name
|
31
|
+
<<-eos
|
32
|
+
def name
|
33
|
+
"#{@friendly_name}"
|
34
|
+
end
|
35
|
+
|
36
|
+
eos
|
37
|
+
end
|
38
|
+
|
39
|
+
def print_hit_die
|
40
|
+
<<-eos
|
41
|
+
def hit_die
|
42
|
+
Dice.new(1,#{@hit_die})
|
43
|
+
end
|
44
|
+
|
45
|
+
eos
|
46
|
+
end
|
47
|
+
|
48
|
+
def print_starting_wealth
|
49
|
+
<<-eos
|
50
|
+
def starting_wealth
|
51
|
+
Dice.new(5,6, multiplier = 10)
|
52
|
+
end
|
53
|
+
|
54
|
+
eos
|
55
|
+
end
|
56
|
+
|
57
|
+
def print_bonuses_for_level
|
58
|
+
<<-eos
|
59
|
+
def bonuses_for_level(level)
|
60
|
+
PfrpgTables::Heroclasses::#{@friendly_name}.level_bonus(level)
|
61
|
+
end
|
62
|
+
|
63
|
+
eos
|
64
|
+
end
|
65
|
+
|
66
|
+
def print_spells_per_day
|
67
|
+
<<-eos
|
68
|
+
def get_spells_table(level)
|
69
|
+
PfrpgTables::Spells::SpellsPerDay.#{@friendly_name}(level)
|
70
|
+
end
|
71
|
+
|
72
|
+
eos
|
73
|
+
end
|
74
|
+
|
75
|
+
def print_create_feature
|
76
|
+
<<-eos
|
77
|
+
def create_feature(f)
|
78
|
+
#{@feature_type}.new(:ability_name => f)
|
79
|
+
end
|
80
|
+
|
81
|
+
eos
|
82
|
+
end
|
83
|
+
|
84
|
+
def print_alignment
|
85
|
+
<<-eos
|
86
|
+
def alignment
|
87
|
+
#{alignment_string}
|
88
|
+
end
|
89
|
+
|
90
|
+
eos
|
91
|
+
end
|
92
|
+
|
93
|
+
def alignment_string
|
94
|
+
case @alignment
|
95
|
+
when 'any'
|
96
|
+
return 'Alignment.any'
|
97
|
+
else
|
98
|
+
return 'Alignment.any'
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def print_skills_per_level
|
103
|
+
<<-eos
|
104
|
+
def skills_per_level
|
105
|
+
#{@skills_per_level}
|
106
|
+
end
|
107
|
+
|
108
|
+
eos
|
109
|
+
end
|
110
|
+
|
111
|
+
def print_spells_bonus_attr
|
112
|
+
<<-eos
|
113
|
+
def spells_bonus_attr
|
114
|
+
"#{@spells_bonus_attr}"
|
115
|
+
end
|
116
|
+
|
117
|
+
eos
|
118
|
+
end
|
119
|
+
|
120
|
+
def print_description
|
121
|
+
<<-eos
|
122
|
+
def description
|
123
|
+
"#{@description}"
|
124
|
+
end
|
125
|
+
|
126
|
+
eos
|
127
|
+
end
|
128
|
+
|
129
|
+
def print_skills
|
130
|
+
<<-eos
|
131
|
+
def skills
|
132
|
+
[ #{skills_string} ]
|
133
|
+
end
|
134
|
+
|
135
|
+
eos
|
136
|
+
end
|
137
|
+
|
138
|
+
def skills_string
|
139
|
+
str = ""
|
140
|
+
@class_skills.split(',').each do |s|
|
141
|
+
str = str + "Skill::#{get_skill_class(s)}.new, "
|
142
|
+
end
|
143
|
+
str
|
144
|
+
end
|
145
|
+
|
146
|
+
def get_skill_class(skill)
|
147
|
+
camelized_title(skill)
|
148
|
+
end
|
149
|
+
|
150
|
+
def print_feature_type
|
151
|
+
<<-eos
|
152
|
+
def feature_type
|
153
|
+
"#{feature_type}"
|
154
|
+
end
|
155
|
+
|
156
|
+
eos
|
157
|
+
end
|
158
|
+
|
159
|
+
def print_starting_feats
|
160
|
+
<<-eos
|
161
|
+
def starting_feats
|
162
|
+
[ #{feats_string} ]
|
163
|
+
end
|
164
|
+
|
165
|
+
eos
|
166
|
+
end
|
167
|
+
|
168
|
+
def feats_string
|
169
|
+
str = ""
|
170
|
+
@starting_feats.split(",").each do |feat|
|
171
|
+
str += "\'#{feat}',"
|
172
|
+
end
|
173
|
+
return str
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'csv'
|
2
|
+
|
3
|
+
module PfrpgImport
|
4
|
+
class HeroclassImporter
|
5
|
+
|
6
|
+
attr_reader :levels, :facts, :spells
|
7
|
+
def initialize(filename, path=nil)
|
8
|
+
@csv = CSV.read(filename)
|
9
|
+
@path = path
|
10
|
+
parser = HeroclassParser.new(@csv)
|
11
|
+
@levels = parser.levels
|
12
|
+
@facts = parser.facts
|
13
|
+
@spells = parser.spells
|
14
|
+
end
|
15
|
+
|
16
|
+
def import_heroclass
|
17
|
+
write_level_table
|
18
|
+
write_heroclass_file
|
19
|
+
write_feature_file
|
20
|
+
write_spell_file
|
21
|
+
end
|
22
|
+
|
23
|
+
def write_level_table
|
24
|
+
table = LevelWriter.new(@levels, @facts.title, @path)
|
25
|
+
table.print_class
|
26
|
+
end
|
27
|
+
|
28
|
+
def write_heroclass_file
|
29
|
+
heroclass = HeroclassWriter.new(@facts, @facts.title, @path)
|
30
|
+
heroclass.print_class
|
31
|
+
end
|
32
|
+
|
33
|
+
def write_feature_file
|
34
|
+
feature = FeatureWriter.new(@facts, @facts.title, @path)
|
35
|
+
feature.print_features
|
36
|
+
end
|
37
|
+
|
38
|
+
def write_spell_file
|
39
|
+
spell = SpellWriter.new(@spells, @facts.title, @path)
|
40
|
+
spell.print_spells
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module PfrpgImport
|
2
|
+
class HeroclassLevels
|
3
|
+
|
4
|
+
attr_reader :levels
|
5
|
+
def initialize(csv_rows)
|
6
|
+
@levels = parse_levels(csv_rows)
|
7
|
+
end
|
8
|
+
|
9
|
+
def parse_levels(rows)
|
10
|
+
rows.map { |row| to_level(row) }
|
11
|
+
end
|
12
|
+
|
13
|
+
def to_level(row)
|
14
|
+
params = {
|
15
|
+
level: row[0],
|
16
|
+
bab: row[1],
|
17
|
+
fort_save: row[2],
|
18
|
+
ref_save: row[3],
|
19
|
+
will_save: row[4],
|
20
|
+
granted_features: row[5],
|
21
|
+
choices: nil
|
22
|
+
}
|
23
|
+
return Level.new(params)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module PfrpgImport
|
2
|
+
class HeroclassParser
|
3
|
+
include CaseHelpers
|
4
|
+
attr_reader :facts, :levels, :spells, :filename_prefix
|
5
|
+
def initialize(csv)
|
6
|
+
factbundle = {
|
7
|
+
heroclass_name: csv[0][1],
|
8
|
+
description: csv[1][1],
|
9
|
+
class_skills: csv[2][1],
|
10
|
+
alignment: csv[3][1],
|
11
|
+
starting_wealth:csv[4][1],
|
12
|
+
hit_die: csv[5][1],
|
13
|
+
skills_per: csv[6][1],
|
14
|
+
spell_mod: csv[7][1],
|
15
|
+
starting_feats: csv[8][1]
|
16
|
+
}
|
17
|
+
|
18
|
+
@facts = HeroclassFacts.new(factbundle)
|
19
|
+
@levels = HeroclassLevels.new(csv[11..30]).levels
|
20
|
+
@spells = HeroclassSpells.new(csv[11..30]).spells
|
21
|
+
@filename_prefix = parse_filename
|
22
|
+
end
|
23
|
+
|
24
|
+
def parse_filename
|
25
|
+
underscored_title(@facts.friendly_name)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module PfrpgImport
|
2
|
+
class HeroclassSpells
|
3
|
+
|
4
|
+
attr_reader :spells
|
5
|
+
def initialize(csv_rows)
|
6
|
+
@spells = pretty_print(parse_spells(csv_rows))
|
7
|
+
end
|
8
|
+
|
9
|
+
def parse_spells(rows)
|
10
|
+
rows.map { |row| to_spell_row(row[6..15]) }
|
11
|
+
end
|
12
|
+
|
13
|
+
def to_spell_row(row)
|
14
|
+
spells = []
|
15
|
+
for i in 0..9
|
16
|
+
f = row[i] || "0"
|
17
|
+
f = f.gsub("—","0")
|
18
|
+
spells[i] = Integer(f)
|
19
|
+
end
|
20
|
+
return spells
|
21
|
+
end
|
22
|
+
|
23
|
+
def pretty_print(rows)
|
24
|
+
str = "[\n"
|
25
|
+
rows.each do |row|
|
26
|
+
str += "\t\t\t\t#{row},\n"
|
27
|
+
end
|
28
|
+
str += "\t\t\t]\n"
|
29
|
+
str
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module PfrpgImport
|
2
|
+
class HeroclassWriter
|
3
|
+
include CaseHelpers
|
4
|
+
|
5
|
+
def initialize(facts, filename, path='./imported/')
|
6
|
+
@facts = facts
|
7
|
+
@filename = filename
|
8
|
+
@path = path
|
9
|
+
end
|
10
|
+
|
11
|
+
def print_class
|
12
|
+
filename = "#{@path}#{underscored_title(@filename)}.rb"
|
13
|
+
table = File.new(filename, "w")
|
14
|
+
str = "class PfrpgClasses::#{camelized_title(@filename)} < PfrpgClasses::Heroclass\n"
|
15
|
+
str += @facts.print_name
|
16
|
+
str += @facts.print_hit_die
|
17
|
+
str += @facts.print_starting_wealth
|
18
|
+
str += @facts.print_bonuses_for_level
|
19
|
+
str += @facts.print_create_feature
|
20
|
+
str += @facts.print_alignment
|
21
|
+
str += @facts.print_skills_per_level
|
22
|
+
str += @facts.print_spells_bonus_attr
|
23
|
+
str += @facts.print_spells_per_day
|
24
|
+
str += @facts.print_description
|
25
|
+
str += @facts.print_skills
|
26
|
+
str += @facts.print_feature_type
|
27
|
+
str += @facts.print_starting_feats
|
28
|
+
str += "end"
|
29
|
+
table.puts str
|
30
|
+
table.close
|
31
|
+
puts "Wrote #{filename}"
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module PfrpgImport
|
2
|
+
class Level
|
3
|
+
include CaseHelpers
|
4
|
+
attr_reader :level, :bab, :fort_save, :ref_save, :will_save,
|
5
|
+
:granted_features, :choices
|
6
|
+
def initialize(params)
|
7
|
+
@level = parse_level(params[:level])
|
8
|
+
@bab = parse_bab(params[:bab])
|
9
|
+
@fort_save = parse_save(params[:fort_save])
|
10
|
+
@ref_save = parse_save(params[:ref_save])
|
11
|
+
@will_save = parse_save(params[:will_save])
|
12
|
+
@granted_features = parse_features(params[:granted_features])
|
13
|
+
@choices = parse_choices(params[:choices])
|
14
|
+
end
|
15
|
+
|
16
|
+
def parse_level(level)
|
17
|
+
return Integer(level.gsub("nd","").gsub("th","").gsub("st","").gsub("rd",""))
|
18
|
+
end
|
19
|
+
|
20
|
+
def parse_bab(bab_string)
|
21
|
+
return arrayify(bab_string.gsub("+", "").split('/'))
|
22
|
+
end
|
23
|
+
|
24
|
+
def parse_save(save)
|
25
|
+
return save.gsub("+", "")
|
26
|
+
end
|
27
|
+
|
28
|
+
def parse_features(features)
|
29
|
+
return 'nil' if (!features || features.empty?)
|
30
|
+
return arrayify(features.split(',').map { |x| "\'#{x.underscore.downcase}\'" })
|
31
|
+
end
|
32
|
+
|
33
|
+
def parse_choices(choices)
|
34
|
+
return 'nil' if (!choices || choices.empty?)
|
35
|
+
return arrayify(choices)
|
36
|
+
end
|
37
|
+
|
38
|
+
def to_s(title)
|
39
|
+
<<-eos
|
40
|
+
when #{level}
|
41
|
+
bonus = { :base_attack_bonus => #{bab},
|
42
|
+
:fort_save => #{fort_save},
|
43
|
+
:ref_save => #{ref_save},
|
44
|
+
:will_save => #{will_save},
|
45
|
+
:granted_features => #{granted_features},
|
46
|
+
:choices => #{choices},
|
47
|
+
:spells_per_day => Tables::Spells::SpellsPerDay.#{title}(#{level})
|
48
|
+
}
|
49
|
+
eos
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module PfrpgImport
|
2
|
+
class LevelWriter
|
3
|
+
include PfrpgImport::CaseHelpers
|
4
|
+
|
5
|
+
def initialize(levels, filename, path='./imported/')
|
6
|
+
@levels = levels
|
7
|
+
@filename = filename
|
8
|
+
@path = path
|
9
|
+
end
|
10
|
+
|
11
|
+
def print_class
|
12
|
+
filename = "#{@path}#{underscored_title(@filename)}_table.rb"
|
13
|
+
table = File.new(filename, "w")
|
14
|
+
str = "class PfrpgTables::Tables::Heroclasses::#{camelized_title(@filename)}\n"
|
15
|
+
str += print_level_bonus
|
16
|
+
str += "end"
|
17
|
+
table.puts str
|
18
|
+
table.close
|
19
|
+
puts "Wrote #{filename}"
|
20
|
+
end
|
21
|
+
|
22
|
+
def print_level_bonus
|
23
|
+
level_string = ""
|
24
|
+
@levels.each do |level|
|
25
|
+
level_string += level.to_s(camelized_title(@filename))
|
26
|
+
end
|
27
|
+
return <<-eos
|
28
|
+
def self.level_bonus(level)
|
29
|
+
bonus = nil
|
30
|
+
case level
|
31
|
+
#{level_string}
|
32
|
+
end
|
33
|
+
return bonus
|
34
|
+
end
|
35
|
+
eos
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module PfrpgImport
|
2
|
+
class SpellWriter
|
3
|
+
include CaseHelpers
|
4
|
+
def initialize(spells, filename, path='./imported/')
|
5
|
+
@spells = spells
|
6
|
+
@filename = filename
|
7
|
+
@path = path
|
8
|
+
end
|
9
|
+
|
10
|
+
def print_spells
|
11
|
+
filename = "#{@path}#{underscored_title(@filename)}_spells.rb"
|
12
|
+
table = File.new(filename, "w")
|
13
|
+
str = "class PfrpgTables::Tables::Spells::SpellsPerDay\n"
|
14
|
+
str += " def self.#{camelized_title(@filename)}(level)\n"
|
15
|
+
str += print_level_bonus
|
16
|
+
str += " end\n"
|
17
|
+
str += "end\n"
|
18
|
+
table.puts str
|
19
|
+
table.close
|
20
|
+
puts "Wrote #{filename}"
|
21
|
+
end
|
22
|
+
|
23
|
+
def print_level_bonus
|
24
|
+
<<-eos
|
25
|
+
spells =
|
26
|
+
#{@spells}
|
27
|
+
spells[level-1]
|
28
|
+
eos
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
data/lib/pfrpg_import.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'pfrpg_import/case_helpers'
|
2
|
+
require 'pfrpg_import/level_writer'
|
3
|
+
require 'pfrpg_import/feature_writer'
|
4
|
+
require 'pfrpg_import/heroclass_writer'
|
5
|
+
require 'pfrpg_import/level_base'
|
6
|
+
require 'pfrpg_import/heroclass_importer'
|
7
|
+
require 'pfrpg_import/heroclass_levels'
|
8
|
+
require 'pfrpg_import/heroclass_facts'
|
9
|
+
require 'pfrpg_import/heroclass_spells'
|
10
|
+
|
11
|
+
|
12
|
+
Dir[File.expand_path(File.join(File.dirname(File.absolute_path(__FILE__)), 'pfrpg_import/')) + "/**/*.rb"].each do |file|
|
13
|
+
require file
|
14
|
+
end
|
15
|
+
|
16
|
+
module PfrpgImport
|
17
|
+
end
|
data/test/helper.rb
ADDED
data/test/import_test.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'pfrpg_import'
|
3
|
+
require 'pfrpg_classes'
|
4
|
+
require 'pfrpg_tables'
|
5
|
+
|
6
|
+
class ImportTest < Minitest::Test
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@path = './imported/test/'
|
10
|
+
if Dir.exists?("#{@path}")
|
11
|
+
FileUtils.rm_rf("#{@path}")
|
12
|
+
end
|
13
|
+
# Dir.mkdir("#{@path}") unless Dir.exists?("#{@path}")
|
14
|
+
Dir.mkdir("#{@path}")
|
15
|
+
end
|
16
|
+
|
17
|
+
def teardown
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_import_adept_ruby
|
22
|
+
f = PfrpgImport::HeroclassImporter.new('adept.csv', @path)
|
23
|
+
f.import_heroclass
|
24
|
+
puts "Files present: #{Dir.glob(@path + "/*")}"
|
25
|
+
# ensure the files are valid ruby
|
26
|
+
assert load './imported/test/adept_table.rb'
|
27
|
+
assert load './imported/test/adept_spells.rb'
|
28
|
+
assert load './imported/test/adept_feature_info.rb'
|
29
|
+
assert load './imported/test/adept.rb'
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pfrpg_import
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jordan OMara
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-11-11 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.1.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.1.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: sqlite3
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: Import pfrpg modules suitable for herosheets
|
42
|
+
email:
|
43
|
+
- jordan@herosheets.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- Rakefile
|
49
|
+
- lib/pfrpg_import.rb
|
50
|
+
- lib/pfrpg_import/case_helpers.rb
|
51
|
+
- lib/pfrpg_import/feature_writer.rb
|
52
|
+
- lib/pfrpg_import/heroclass_facts.rb
|
53
|
+
- lib/pfrpg_import/heroclass_importer.rb
|
54
|
+
- lib/pfrpg_import/heroclass_levels.rb
|
55
|
+
- lib/pfrpg_import/heroclass_parser.rb
|
56
|
+
- lib/pfrpg_import/heroclass_spells.rb
|
57
|
+
- lib/pfrpg_import/heroclass_writer.rb
|
58
|
+
- lib/pfrpg_import/level.rb
|
59
|
+
- lib/pfrpg_import/level_base.rb
|
60
|
+
- lib/pfrpg_import/level_writer.rb
|
61
|
+
- lib/pfrpg_import/spell_writer.rb
|
62
|
+
- lib/pfrpg_import/version.rb
|
63
|
+
- test/helper.rb
|
64
|
+
- test/import_test.rb
|
65
|
+
homepage: http://herosheets.com
|
66
|
+
licenses: []
|
67
|
+
metadata: {}
|
68
|
+
post_install_message:
|
69
|
+
rdoc_options: []
|
70
|
+
require_paths:
|
71
|
+
- lib
|
72
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
requirements: []
|
83
|
+
rubyforge_project:
|
84
|
+
rubygems_version: 2.2.2
|
85
|
+
signing_key:
|
86
|
+
specification_version: 4
|
87
|
+
summary: PFRPG Importer
|
88
|
+
test_files:
|
89
|
+
- test/helper.rb
|
90
|
+
- test/import_test.rb
|