drpedia_lite 0.0.20 → 0.0.22

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2910f49c42c29769c98b213d473ef61cc3c327d4
4
- data.tar.gz: 8dce08526ac21b282a3f3d45e107a3dd4f963aea
3
+ metadata.gz: e1098fcbc72b315ae70e2da0c3b7d106b7383907
4
+ data.tar.gz: a9ffdf450fcc34cab92047ad8c82c05b29aa0843
5
5
  SHA512:
6
- metadata.gz: e064d36ce7f9d6b8a69eaacdd0c752731f6c1510c96ebed17e32f787ee3d8a0c4c3b856c17f91454f9ad185651c815153b0c699cf2a704dc12b99195b53f08c0
7
- data.tar.gz: 6ab250dc20c68749947b48c8f6bd7897f70b4452f88d3143ff1402704f1bbbcdc817d62c1ede3dcea374a0b4b8be168284e7c74071c5b5df016f5916fa211efc
6
+ metadata.gz: 7159a184ef700b069b5572d2ec1bbf176856f2cf717958a8987cf6ea13d1b65a522bf1db3dac2fcf88c3273bb50ea46ea964c801a3b534709b6b50b0b6359dce
7
+ data.tar.gz: 761a9988464b198b0a41dfb6412b7e75da4d21a2170db6ad418da55aea20d105104e9335a4fdc517625cc44f518a3815129cc44ca44cf9ddfcc7e56256f7c8af
data/lib/Builder.rb CHANGED
@@ -16,6 +16,8 @@ class Builder
16
16
  strain_stats: raw_reader.strain_stats,
17
17
  strain_specs: raw_reader.strain_specs,
18
18
  profession_concentrations: raw_reader.profession_concentrations,
19
+ profession_concentration_hierarchy: raw_reader.profession_concentration_hierarchy,
20
+ profession_concentration_group: raw_reader.profession_concentration_group,
19
21
  profession_advanced: raw_reader.profession_advanced,
20
22
  skill_counters: raw_reader.skill_counters,
21
23
  skill_countered: raw_reader.skill_countered
@@ -31,6 +33,8 @@ class Builder
31
33
  File.open(File.join(base_output_path, 'strain_stats.json'), 'w') { |f| f.write raw_reader.strain_stats.to_json }
32
34
  File.open(File.join(base_output_path, 'strain_specs.json'), 'w') { |f| f.write raw_reader.strain_specs.to_json }
33
35
  File.open(File.join(base_output_path, 'profession_concentrations.json'), 'w') { |f| f.write raw_reader.profession_concentrations.to_json }
36
+ File.open(File.join(base_output_path, 'profession_concentration_hierarchy.json'), 'w') { |f| f.write raw_reader.profession_concentration_hierarchy.to_json }
37
+ File.open(File.join(base_output_path, 'profession_concentration_group.json'), 'w') { |f| f.write raw_reader.profession_concentration_group.to_json }
34
38
  File.open(File.join(base_output_path, 'profession_advanced.json'), 'w') { |f| f.write raw_reader.profession_advanced.to_json }
35
39
  File.open(File.join(base_output_path, 'skill_counters.json'), 'w') { |f| f.write raw_reader.skill_counters.to_json }
36
40
  File.open(File.join(base_output_path, 'skill_countered.json'), 'w') { |f| f.write raw_reader.skill_countered.to_json }
data/lib/RawReader.rb CHANGED
@@ -4,6 +4,7 @@ class RawReader
4
4
  attr_reader :skill_list, :skill_cat, :skill_group, :advanced_cat, :concentration_cat,
5
5
  :strains, :strain_restrictions, :strain_stats, :strain_specs,
6
6
  :professions, :profession_concentrations, :profession_advanced,
7
+ :profession_concentration_hierarchy, :profession_concentration_group,
7
8
  :skill_counters, :skill_countered
8
9
 
9
10
  STATE_TRANSITION = {
@@ -11,7 +12,9 @@ class RawReader
11
12
  :innate => { pattern: /== Disadvantage Skill ==/, next: :strain_disadv },
12
13
  :strain_disadv => { pattern: /== Innate Skill Prerequisite ==/, next: :innate_preq },
13
14
  :innate_preq => { pattern: /== Profession Concentration ==/, next: :prof_concent },
14
- :prof_concent => { pattern: /== Profession Concentration Skills ==/, next: :conc_skills },
15
+ :prof_concent => { pattern: /== Concentration Hierarchy ==/, next: :prof_hierarc },
16
+ :prof_hierarc => { pattern: /== Concentration Group ==/, next: :conc_group },
17
+ :conc_group => { pattern: /== Profession Concentration Skills ==/, next: :conc_skills },
15
18
  :conc_skills => { pattern: /== Advanced Profession ==/, next: :adv_prof },
16
19
  :adv_prof => { pattern: /== Advanced Profession Skills ==/, next: :adv_skills },
17
20
  :adv_skills => { pattern: /== Strain Profession Restriction ==/, next: :strain_rtrs },
@@ -41,6 +44,8 @@ class RawReader
41
44
  @professions = Set.new
42
45
  @profession_concentrations = Hash.new
43
46
  @profession_advanced = Hash.new
47
+ @profession_concentration_hierarchy = Hash.new
48
+ @profession_concentration_group = Hash.new
44
49
 
45
50
  @mutiline_state = nil
46
51
 
@@ -61,6 +66,7 @@ class RawReader
61
66
  #ap @concentration_cat
62
67
  # ap @skill_counters
63
68
  # ap @skill_countered
69
+ # ap @profession_concentration_group
64
70
  end
65
71
 
66
72
  private
@@ -110,6 +116,8 @@ private
110
116
  when :strain_disadv then process_innate_skills line: line, disadvantage: true
111
117
  when :innate_preq then process_innate_preqs line: line
112
118
  when :prof_concent then process_profession_concentration line: line
119
+ when :prof_hierarc then process_profession_concentration_hierarchy line: line
120
+ when :conc_group then process_profession_concentration_group line: line
113
121
  when :conc_skills then process_profession_concentration_skills line: line
114
122
  when :adv_prof then process_advanced_professions line: line
115
123
  when :adv_skills then process_profession_skills line: line, profession: profession, type: :advanced
@@ -165,6 +173,22 @@ private
165
173
  end
166
174
  end
167
175
 
176
+ def process_profession_concentration_hierarchy line:
177
+ clusters = line.split(/:/)
178
+ right_cluster = clusters[1].split(/\,/)
179
+
180
+ right_cluster.each do |prof|
181
+ @profession_concentration_hierarchy[prof.strip.to_sym] = clusters[0].strip.to_sym
182
+ end
183
+ end
184
+
185
+ def process_profession_concentration_group line:
186
+ clusters = line.split(/:/)
187
+ right_cluster = clusters[1].split(/\,/)
188
+
189
+ @profession_concentration_group[clusters[0].strip.to_sym] = right_cluster.collect { |x| x.strip.to_sym }
190
+ end
191
+
168
192
  def process_profession_concentration_skills line:
169
193
  clusters = line.split(/:/)
170
194
 
data/lib/Validator.rb CHANGED
@@ -12,6 +12,8 @@ class Validator
12
12
  strain_stats:,
13
13
  strain_specs:,
14
14
  profession_concentrations:,
15
+ profession_concentration_hierarchy:,
16
+ profession_concentration_group:,
15
17
  profession_advanced:,
16
18
  skill_counters:,
17
19
  skill_countered:
@@ -25,6 +27,7 @@ class Validator
25
27
  @strain_stats = strain_stats
26
28
  @strain_specs = strain_specs
27
29
  @profession_concentrations = profession_concentrations
30
+ @profession_concentration_hierarchy = profession_concentration_hierarchy
28
31
  @profession_advanced = profession_advanced
29
32
  @skill_counters = skill_counters
30
33
  @skill_countered = skill_countered
@@ -43,6 +46,7 @@ class Validator
43
46
  validate_stats
44
47
  validate_strain_specs
45
48
  validate_profession_concentrations
49
+ validate_profession_concentration_hierarchy
46
50
  validate_profession_advanced
47
51
  validate_non_duplicate_skill_codes
48
52
  validate_skill_counters cat: @skill_counters
@@ -59,6 +63,12 @@ private
59
63
  assert(@profession_advanced.length > 0)
60
64
  end
61
65
 
66
+ def validate_profession_concentration_hierarchy
67
+ @profession_concentration_hierarchy.each do |prof, pc|
68
+ is_in_profession?(prof)
69
+ end
70
+ end
71
+
62
72
  def validate_non_empty
63
73
  assert(@skill_list.length > 0, "Empty skill list")
64
74
  assert(@skill_cat.length > 0, "Empty processed skills")
data/lib/input/input.txt CHANGED
@@ -48,6 +48,16 @@ Agility Combatant, Ranged Combatant, Short Range Combatant: Assassin, Guard, Gun
48
48
  Civil Servant, Socialite, Resource Manager: Caravan Driver, Charlatan, Doctor, Entertainer, Gambler, Hookup, Merchant, Politician, Priest, Publican, Ring Leader, Sawbones, Scoundrel, Spy, Teacher, Thief
49
49
  Consumable Producer, Quality Producer, Quantity Producer: Cook, Distiller, Engineer, Mad Scientist, Printer, Scavenger, Tinker
50
50
 
51
+ == Concentration Hierarchy ==
52
+ Combat: Assassin, Guard, Gun Slinger, Hunter, Martial Artist, Officer, Primitive, Pugilist, Sniper, Soldier, Thug
53
+ Society: Caravan Driver, Charlatan, Doctor, Entertainer, Gambler, Hook-Up, Merchant, Politician, Priest, Publican, Ring Leader, Sawbones, Scoundrel, Spy, Teacher, Thief
54
+ Production: Cook, Distiller, Engineer, Mad Scientist, Printer, Scavenger, Tinker
55
+
56
+ == Concentration Group ==
57
+ Combat: Agility Combatant, Ranged Combatant, Short Range Combatant
58
+ Civilized Society: Civil Servant, Sociality, Resource Manager
59
+ Crafting and Production: Consumable Producer, Quality Producer, Quantity Producer
60
+
51
61
  == Profession Concentration Skills ==
52
62
  Agility Combatant: Close The Distance, Disengage, Keen Eyes
53
63
  Ranged Combatant: Heavy Ordnance, Reloading is Stupid, Improvised Thrown Weapon
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: drpedia_lite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.20
4
+ version: 0.0.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gloria Budiman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-16 00:00:00.000000000 Z
11
+ date: 2017-01-24 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Extracts skills, strains, profession, and requirement trees into JSON
14
14
  email: wahyu.g@gmail.com