wayfinder 0.0.5 → 0.1.0

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/wayfinder +28 -255
  3. data/lib/wayfinder.rb +80 -80
  4. metadata +13 -27
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7f4ae19a061f6b7caa1502c21c1a03bc914116ef
4
- data.tar.gz: c68e89030487cecd9cd16f8be4ebe8c8c9bb2521
3
+ metadata.gz: f5928745fb8895cbf267a468610e78cf86208d2c
4
+ data.tar.gz: a20f258d36cb0bc2810a203fad0c86dcd61e8c4b
5
5
  SHA512:
6
- metadata.gz: 0b372f56c23fb34e78019eb2d63d3e1188a1f32aaf139eb06c0c03cafb066aa12ea31610948d24c6d8730e0ada426357d8c12f0038fc94ebf024a2c8f7329883
7
- data.tar.gz: e0166635e52514241f0b11643ea1e930e0d26d243a7232de248d055e55476ce698aac11e7875a5419a10f1d28dffaad379deb66e9b85738a78d11ab0e1223e96
6
+ metadata.gz: f5f8a3715558b10c15886b443d3969c1b44acdb77138730d3751e2a9b558d6381ffa50fc5d8e745107eb27169c46136b1c113a30bfae1bab146571fff5f8f909
7
+ data.tar.gz: 11c17a5a0252228b97201afa687913ce72d24e3dd29ab9cf9096164ce0474bcce9083e47727bacec683d9f0e928022dc397781707234710ef1f15221b089c289
@@ -1,270 +1,43 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'box'
4
3
  require 'clap'
5
4
  require 'yaml'
6
- require 'mote'
7
- require 'wayfinder'
8
- require 'debugger'
5
+ require File.expand_path("../lib/wayfinder", File.dirname(__FILE__))
9
6
 
10
- source_dir = 'source'
11
- output_file = 'README.md'
12
- template_file = 'source/template.md'
7
+ $source_dir = 'source'
8
+ $template_file = 'source/template.mote'
9
+ $output_file = 'README.md'
13
10
 
14
11
  Clap.run ARGV,
15
- '-s' => lambda { |param| source_dir = param },
16
- '-o' => lambda { |param| output_file = param },
17
- '-t' => lambda { |param| template_file = param }
12
+ '-s' => lambda { |param| $source_dir = param },
13
+ '--source' => lambda { |param| $source_dir = param },
14
+ '-o' => lambda { |param| $output_file = param },
15
+ '--output' => lambda { |param| $output_file = param },
16
+ '-t' => lambda { |param| $template_file = param },
17
+ '--template' => lambda { |param| $template_file = param }
18
+
19
+
20
+ def load_character
21
+ source_data = {}
22
+ %i(main modifiers skills).each do |source_file|
23
+ source_data[source_file] = YAML.load_file(
24
+ File.join($source_dir, "#{ source_file.to_s }.yml")
25
+ )
26
+ end
18
27
 
19
- source_data = {}
20
- %i(meta stats gear feats buffs skills).each do |source_file|
21
- source_data[source_file] = YAML.load_file(File.join(source_dir, "#{ source_file.to_s }.yml"))
28
+ Wayfinder::Character.new(source_data)
22
29
  end
23
30
 
24
- character = Wayfinder::Character.new(source_data)
31
+ $character = load_character
25
32
 
26
33
  case ARGV[0]
27
34
  when 'console'
28
- debugger; 1
35
+ require 'irb'
36
+ require 'irb/completion'
37
+ ARGV.clear
38
+ IRB.start
29
39
  when 'generate'
30
- template = if File.exists?(template_file)
31
- Mote.parse(File.read(template_file), self, [:character])
32
- else
33
- output_file = 'character_sheet.htm'
34
- Mote.parse(Box::FILES['character_sheet.htm'], self, [:character])
35
- end
36
-
37
- File.open(output_file, 'w') { |f| f.write(template.call(character: character)) }
40
+ require 'mote'
41
+ template = Mote.parse(File.read($template_file), self, [:c])
42
+ File.open($output_file, 'w') { |f| f.write(template.call(c: $character)) }
38
43
  end
39
-
40
- __END__
41
- @@ character_sheet.htm
42
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
43
- <html>
44
- <head>
45
- <meta http-equiv="content-type" content="text-html; charset=utf-8" />
46
- <title>Unnamed 1 [0 Points]</title>
47
- <style type="text/css">
48
- .font4 { font-family: Arial; font-size:4pt; }
49
- .font5 { font-family: Arial; font-size:5pt; }
50
- .font6 { font-family: Arial; font-size:6pt; }
51
- .font7 { font-family: Arial; font-size:7pt; }
52
- .font8 { font-family: Arial; font-size:8pt; }
53
- .font9 { font-family: Arial; font-size:9pt; }
54
- .h { font-family: Arial; font-size:8pt; vertical-align: bottom; }
55
- .hs { font-family: Arial; font-size:6pt; border-top-width:1px; border-top: 1pt solid black; vertical-align:top; background: #CCCCCC; }
56
- .ah { font-family: Arial; font-size:4pt; text-align:center; }
57
- .ab { font-family: Arial; font-size:10pt; text-align:center; color:white; background:black; }
58
- .sc { font-family: Arial; font-size: 5pt }
59
- .scr { font-family: Arial; font-size: 5pt; text-align:right }
60
- .scbr { font-family: Arial; font-size: 5pt; border-right-width:1px; border-right: 1pt solid black; text-align:right}
61
- .hph { font-family: Arial; font-size: 7pt; text-align:center; vertical-align:bottom;}
62
- .ach { font-family: Arial; font-size: 7pt; text-align:center; vertical-align:middle;}
63
- .acb { font-family: Arial; font-size: 9pt; font-weight:bold; text-align:center; vertical-align:middle; border: 1px solid black;}
64
- .hphs { font-family: Arial; font-size: 5pt; text-align:center; vertical-align:bottom;}
65
- .hpb { font-family: Arial; font-size: 9pt; font-weight:bold; text-align:center; vertical-align:middle; border: 1px solid black;}
66
- .hpbb { font-family: Arial; font-size: 9pt; font-weight:bold; color:white; background:black; text-align:center; vertical-align:middle; border: 1px solid black;}
67
- .abb { font-family: Arial; font-size:10pt; text-align:center; font-weight:bold; border: 1px solid black;}
68
- .abt { font-family: Arial; font-size:10pt; text-align:center; font-weight:bold; border: 5px solid lightgray;}
69
- .sptab { font-family: Arial; vertical-align:top;border: 1px solid black; text-align:center;font-size:8pt;}
70
- .spname { font-family: Arial; vertical-align:top;border: 1px solid black; text-align:left;font-size:8pt;}
71
- .sptop { font-family: Arial; vertical-align:top;border: 1px solid black; text-align:center;font-size:8pt; color:white;}
72
- .splevel { font-family: Arial; background:black; text-align:center;font-size:9pt; color:white;}
73
- .sphead { font-family: Arial; background:black; text-align:center;font-size:12pt; color:white;}
74
- .spcomp { font-family: Arial; vertical-align:top; text-align:left;font-size:6pt;}
75
- .spcomp2 { font-family: Arial; vertical-align:top; text-align:left;font-size:5pt;}
76
- .spcomp3 { font-family: Arial; vertical-align:top; text-align:left;font-size:9pt;}
77
- .topline {
78
- border-top-width:1px;
79
- border-top: 1pt solid black;
80
- font-family: Arial;
81
- font-size:6pt;
82
- }
83
- .border {
84
- border: 1px solid black;
85
- }
86
- .border7 {
87
- border: 1px solid black;
88
- font-size:7pt;
89
- }
90
- .border8 {
91
- border: 1px solid black;
92
- font-size:8pt;
93
- }
94
- .border9 {
95
- border: 1px solid black;
96
- font-size:9pt;
97
- }
98
- .border10 {
99
- border: 1px solid black;
100
- }
101
- .tempborder {
102
- font-size:10pt; border: 5px solid lightgray;
103
- }
104
- .borderbottom {
105
- border-bottom-width:1px;
106
- border-bottom: 1pt solid black;
107
- }
108
- .borderright {
109
- border-right-width:1px;
110
- border-right: 1pt solid black;
111
- }
112
- .c, .wbc {
113
- text-align: center;
114
- }
115
- TD {
116
- font-family: Arial
117
- }
118
- span.notes p {margin-top:0; margin-bottom:0;}
119
- </style>
120
- </head>
121
- <body bgcolor="white">
122
- <table border="0" cellpadding="0" cellspacing="0" width="100%" summary="Master Page Table">
123
- <tr>
124
- <td rowspan="2" valign="top">
125
- <!-- START Abilities Table -->
126
- <table summary="Ability Table">
127
- <tr>
128
- <td align="center" width="20%" class="font4">ABILITY<br />NAME</td>
129
- <td align="center" width="20%" class="font4">ABILITY<br />SCORE</td>
130
- <td align="center" width="20%" class="font4">ABILITY<br />MODIFIER</td>
131
- </tr>
132
- <tr>
133
- <td class="ab"><b>STR</b></td>
134
- <td class="abb">{{ character.strength }}</td>
135
- <td class="abb">{{ character.strength_modifier }}</td>
136
- </tr>
137
- <tr>
138
- <td class="ab"><b>DEX</b></td>
139
- <td class="abb">{{ character.dexterity }}</td>
140
- <td class="abb">{{ character.dexterity_modifier }}</td>
141
- </tr>
142
- <tr>
143
- <td class="ab"><b>CON</b></td>
144
- <td class="abb">{{ character.constitution }}</td>
145
- <td class="abb">{{ character.constitution_modifier }}</td>
146
- </tr>
147
- <tr>
148
- <td class="ab"><b>INT</b></td>
149
- <td class="abb">{{ character.intelligence }}</td>
150
- <td class="abb">{{ character.intelligence_modifier }}</td>
151
- </tr>
152
- <tr>
153
- <td class="ab"><b>WIS</b></td>
154
- <td class="abb">{{ character.wisdom }}</td>
155
- <td class="abb">{{ character.wisdom_modifier }}</td>
156
- </tr>
157
- <tr>
158
- <td class="ab"><b>CHA</b></td>
159
- <td class="abb">{{ character.charisma }}</td>
160
- <td class="abb">{{ character.charisma_modifier }}</td>
161
- </tr>
162
- </table>
163
- <!-- STOP Abilities Table -->
164
-
165
- </td>
166
- <td colspan="2" valign="top">
167
-
168
- <!-- START Hit point Table -->
169
- <table summary="HP Table">
170
- <tr>
171
- <td align="center" width="50"></td>
172
- <td align="center" width="25" valign="bottom"></td>
173
- <td align="center"></td>
174
- <td align="center" width="119" class="font5"><br />WOUNDS/CURRENT HP</td>
175
- <td align="center"></td>
176
- <td align="center" width="60" class="font5"><br />DAMAGE<br />REDUCTION</td>
177
- <td align="center"></td>
178
- <td align="center" width="60" class="font5"><br />SPEED</td>
179
- </tr>
180
- <tr>
181
- <td align="center" bgcolor="black"><font style="font-size:9pt" color="white"><b>HP</b></font></td>
182
- <td align="center" class="border9"><b>{{ character.hp }}</b></td>
183
- <td align="center" class="font7"><br /></td>
184
- <td align="center" class="border9">{{ character.received_damage }}/{{ character.current_hp }}<br /></td>
185
- <td align="center" class="font7"><br /></td>
186
- <td align="center" class="border9"><b>&nbsp;&nbsp;</b></td>
187
- <td align="center" class="font7"><br /></td>
188
- <td align="center" class="border9"><b><br /></b></td>
189
- </tr>
190
- </table>
191
- <!-- STOP Hit point Table -->
192
- <!-- START AC Table -->
193
- <table summary="AC Table">
194
- <tr>
195
- <td align="center" bgcolor="black"><font style="font-size:9pt" color="white"><b>AC</b></font></td>
196
- <!-- Thomas Behr 13-02-02: replaced old tokens with new ones -->
197
- <td align="center" class="border9"><b>{{ character.ac }}</b></td>
198
- </tr>
199
- <tr>
200
- <td align="center" width="50"></td>
201
- </tr>
202
- </table>
203
- <!-- STOP AC Table -->
204
- </td>
205
- </tr>
206
- <tr>
207
- <td valign="top">
208
- <!-- START Initiative Table -->
209
- <table width="35%" summary="Initiative Table">
210
- <tr>
211
- <td align="center" bgcolor="black"><font style="font-size:9pt" color="white"><b>INITIATIVE</b></font></td>
212
- <td align="center" class="border9"><b>{{ character.initiative }}</b></td>
213
- </tr>
214
- <tr>
215
- </tr>
216
- </table>
217
- <!-- STOP Initiative Table -->
218
- <!-- START Base Attack Table -->
219
- <table width="100%" summary="Base Attack Table">
220
- <tr>
221
- <td align="center" bgcolor="black"><font style="font-size:9pt" color="white"><b>BAB</b></font></td>
222
- <td align="center" width="94" class="border10"><b>{{ character.bab }} <br /></b></td>
223
- <td align="center" width="50%"><br /></td>
224
- </tr>
225
- </table>
226
- <!-- STOP Base Attack Table -->
227
- </td>
228
- <td rowspan="2" valign="top" width="50%">
229
- </td>
230
- </tr>
231
- <tr>
232
- <td colspan="2" valign="top">
233
- <!-- START Saving Throws Table -->
234
- <table width="25%" summary="Saving Throws">
235
- <tr>
236
- <td align="center" bgcolor="black"><font style="font-size:10pt" color="white"><b>Fortitude</b></font>
237
- </td>
238
- <td align="center" class="border9"><b>{{ character.fortitude }}</b></td>
239
- </tr>
240
- <tr>
241
- <td align="center" bgcolor="black"><font style="font-size:10pt" color="white"><b>Reflex</b></font>
242
- </td>
243
- <td align="center" class="border9"><b>{{ character.reflex }}</b></td>
244
- </tr>
245
- <tr>
246
- <td align="center" bgcolor="black"><font style="font-size:10pt" color="white"><b>Will</b></font>
247
- </td>
248
- <td align="center" class="border9"><b>{{ character.will }}</b></td>
249
- </tr>
250
- </table>
251
- <!-- STOP Saving Throws Table -->
252
- <!-- START Unarmed Attack Table -->
253
- <table cellpadding="0" cellspacing="0" border="0" width="100%" summary="Unarmed Attack Table">
254
- <tr>
255
- <td align="center" height="25" bgcolor="black" rowspan="2" width="125"><font style="font-size:10pt" color="white"><b>Attack</b></font></td>
256
- <td align="center" bgcolor="black" width="110" height="15"><font style="font-size:6pt" color="white"><b>TOTAL ATTACK BONUS</b></font></td>
257
- <td align="center" bgcolor="black" width="60" height="15"><font style="font-size:6pt" color="white"><b>DAMAGE</b></font></td>
258
- <td align="center" bgcolor="black" width="60" height="15"><font style="font-size:6pt" color="white"><b>CRITICAL</b></font></td>
259
- </tr>
260
- <tr><td align="center" bgcolor="white" class="border8"><b>{{ character.full_attack.join('/') }}<br /></b></td>
261
- <td align="center" bgcolor="white" class="border8"><b>{{ character.damage }}<br /></b></td>
262
- <td align="center" bgcolor="white" class="border8"><b>--<br /></b></td>
263
- </tr>
264
- </table>
265
- <!-- STOP Saving Throws Table -->
266
- </td>
267
- </tr>
268
- </table>
269
- </body>
270
- </html>
@@ -1,76 +1,93 @@
1
- module Wayfinder
1
+ require 'hashdot'
2
2
 
3
+ module Wayfinder
3
4
  BASE_STATS = %w(strength dexterity constitution wisdom charisma intelligence)
4
5
 
5
6
  class Character
6
7
 
7
- ## :source must be a hash with the following keys, each containing the data of
8
- ## its appropriate yaml file.
8
+ ## :source_data must be a hash with the following keys, each containing the data of
9
+ ## its corresponding yaml file.
10
+ #
11
+ # * main - contains hp, base attack bonus, saving throws, xp, name,
12
+ # basic stats, str, dex, con, wis, int and cha.
13
+ #
14
+ # * modifiers - contains descriptions of items, feats, magical effects, or
15
+ # any other thing that modifies character attributes.
9
16
  #
10
- # * meta - contains hp, base attack bonus, saving throws, xp, name,
11
- # and other metadata.
12
- # * stats - contains basic stats, str, dex, con, wis, int and cha.
13
- # * gear - contains descriptions of items that modify the final
14
- # computed stats for the character.
15
- # * feats - character feats, similar to gear in that it contributes
16
- # to the final stack.
17
- # * buffs - buffs are temporary modifiers that are expected to change
18
- # often, but act much like feats and gear.
19
17
  # * skills - skills contain data on the ranks and associated stats for
20
18
  # each given skill.
21
- #
22
- ## :modifier_stack is an array of gear, feats and buffs and is what will be
23
- ## iterated while computing final modifiers for all character stats.
24
19
 
25
- attr_accessor :source, :modifier_stack
20
+ attr_accessor :source_data
26
21
 
27
22
  def initialize(source_data = {})
28
- self.source = source_data
29
- self.modifier_stack = [
30
- self.source[:gear],
31
- self.source[:feats],
32
- self.source[:buffs]
33
- ]
23
+ self.source_data = source_data
34
24
  end
35
25
 
36
26
  BASE_STATS.each do |base_stat|
37
27
  define_method(base_stat) do
38
- self.source[:stats][base_stat] + modifier_for(base_stat)
28
+ base_ability_scores[base_stat] + modifier_for(base_stat)
39
29
  end
40
30
 
41
31
  define_method("#{ base_stat }_modifier") do
42
- stat = self.source[:stats][base_stat] + modifier_for(base_stat)
32
+ stat = base_ability_scores[base_stat] + modifier_for(base_stat)
43
33
  (stat - 10) / 2
44
34
  end
45
35
  end
46
36
 
37
+ def base_ability_scores
38
+ source_data.main.ability_scores
39
+ end
40
+
41
+ def base_saving_throws
42
+ source_data.main.saving_throws
43
+ end
44
+
45
+ def fortitude
46
+ base_saving_throws.fortitude + constitution_modifier + modifier_for('fortitude')
47
+ end
48
+
49
+ def reflex
50
+ base_saving_throws.reflex + dexterity_modifier + modifier_for('reflex')
51
+ end
52
+
53
+ def will
54
+ base_saving_throws.will + wisdom_modifier + modifier_for('will')
55
+ end
56
+
57
+ def saving_throws
58
+ {
59
+ fortitude: fortitude,
60
+ reflex: reflex,
61
+ will: will
62
+ }
63
+ end
64
+
47
65
  ## Returns an array of items in the modifier stack marked with 'active: true'
48
66
  def active_stack
49
- self.modifier_stack.map(&:values).flatten.keep_if { |item| item['active'] }
67
+ source_data.modifiers.select { |item| item.active }
50
68
  end
51
69
 
52
70
  ## Returns an array of object who affect the specified attribute
53
71
  def stack_for(attribute)
54
- # Bonuses of the same type do not stack, we need to pick the biggest one and use that one.
55
- applicable_stack = []
56
-
57
- self.active_stack.keep_if { |item|
58
- # We care about the attributes each modifier affects.
72
+ related_stack = active_stack.select { |item|
59
73
  item.fetch('modifiers', {}).keys.include?(attribute)
60
- }.group_by { |mod| mod['type'] }.each do |type, mods|
61
- if type
62
- # We take the highest modifier of each type
63
- applicable_stack << mods.sort_by { |mod| mod.fetch('modifiers', {}).fetch(attribute, 0) }.reverse.first
64
- else
65
- # Modifiers without a type are simply added to the stack.
66
- applicable_stack += mods
67
- end
68
- end
74
+ }.group_by { |item| item['type'] }
75
+
76
+ # Start by adding all modifiers with no type, or initializing at []
77
+ applicable_stack = related_stack.delete(nil) || []
78
+
79
+ # Then for each of the remaining modifiers by group, pick only the
80
+ # biggest one.
81
+ related_stack.each { |_, mods|
82
+ applicable_stack << mods.sort_by { |m|
83
+ m.modifiers[attribute]
84
+ }.last
85
+ }
69
86
 
70
87
  applicable_stack
71
88
  end
72
89
 
73
- ## Outputs the final modifier for the specified attribute.
90
+ ## Outputs the final numeric modifier for the specified attribute.
74
91
  def modifier_for(attribute)
75
92
  modifier = 0
76
93
 
@@ -82,25 +99,27 @@ module Wayfinder
82
99
  end
83
100
 
84
101
  def name
85
- self.source[:meta]['name']
102
+ source_data.main.name
86
103
  end
87
104
 
88
- def xp
89
- self.source[:meta]['xp']
105
+ def alignment
106
+ source_data.main.alignment
90
107
  end
91
108
 
92
- ## Combat
109
+ def xp
110
+ source_data.main.xp
111
+ end
93
112
 
94
113
  def hp
95
- self.source[:meta]['hp'] + modifier_for('hp')
114
+ source_data.main.hp + modifier_for('hp')
96
115
  end
97
116
 
98
117
  def received_damage
99
- self.source[:meta]['received_damage']
118
+ source_data.main.received_damage
100
119
  end
101
120
 
102
121
  def current_hp
103
- self.hp - self.received_damage
122
+ hp - received_damage
104
123
  end
105
124
 
106
125
  def speed
@@ -112,7 +131,7 @@ module Wayfinder
112
131
  end
113
132
 
114
133
  def bab
115
- self.source[:meta]['bab']
134
+ source_data.main.bab
116
135
  end
117
136
 
118
137
  def to_hit(base_attack = self.bab)
@@ -124,7 +143,7 @@ module Wayfinder
124
143
  end
125
144
 
126
145
  def full_attack
127
- attack_babs = [self.bab]
146
+ attack_babs = [bab]
128
147
 
129
148
  ## Fuck yeah I used a while in ruby, fuck you, fuck everything, EVERYTHING.
130
149
  while attack_babs.last - 5 >= 1
@@ -139,53 +158,34 @@ module Wayfinder
139
158
  end
140
159
 
141
160
  def cmd
142
- 10 + self.bab + strength_modifier + dexterity_modifier + modifier_for('cmd')
161
+ 10 + bab + strength_modifier + dexterity_modifier + modifier_for('cmd')
143
162
  end
144
163
 
145
164
  def cmb
146
- 10 + self.bab + strength_modifier + modifier_for('cmd')
165
+ 10 + bab + strength_modifier + modifier_for('cmd')
147
166
  end
148
167
 
149
168
  def damage_reduction
150
169
  0 + modifier_for('damage_reduction')
151
170
  end
152
171
 
153
- ## Saving Throws
154
- def saving_throws
155
- {
156
- fortitude: self.fortitude,
157
- reflex: self.reflex,
158
- will: self.will
159
- }
160
- end
161
-
162
- def fortitude
163
- self.source[:meta]['fortitude'] + constitution_modifier + modifier_for('fortitude')
164
- end
165
-
166
- def reflex
167
- self.source[:meta]['reflex'] + dexterity_modifier + modifier_for('reflex')
168
- end
169
-
170
- def will
171
- self.source[:meta]['will'] + wisdom_modifier + modifier_for('will')
172
- end
173
-
174
172
  def skill(skill_name)
175
- skill = self.source[:skills].fetch(skill_name, {})
176
- computed_score = skill.fetch('ranks', 0) + self.send("#{ skill['stat'] }_modifier") + modifier_for(skill_name) + modifier_for('all_skills')
173
+ skill = source_data.skills.fetch(skill_name, {})
177
174
 
178
- if skill['class']
179
- computed_score += 3
180
- end
175
+ computed_score = skill.fetch('ranks', 0) +
176
+ self.send("#{ skill.stat }_modifier") +
177
+ modifier_for(skill_name) +
178
+ modifier_for('all_skills')
179
+
180
+ computed_score += 3 if skill['class']
181
181
 
182
182
  computed_score
183
183
  end
184
184
 
185
185
  def skills
186
- all_skills = {}
187
- self.source[:skills].keys.each { |s| all_skills[s] = self.skill(s) }
188
- all_skills
186
+ source_data.skills.map do |name, _|
187
+ [name, skill(name)]
188
+ end.to_h
189
189
  end
190
190
  end
191
191
  end
metadata CHANGED
@@ -1,69 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wayfinder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
- - PoTe
7
+ - pote
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-23 00:00:00.000000000 Z
11
+ date: 2015-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: box
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '>='
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - '>='
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: mote
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
- - - '>='
17
+ - - ">="
32
18
  - !ruby/object:Gem::Version
33
19
  version: '0'
34
20
  type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
- - - '>='
24
+ - - ">="
39
25
  - !ruby/object:Gem::Version
40
26
  version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: clap
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
- - - '>='
31
+ - - ">="
46
32
  - !ruby/object:Gem::Version
47
33
  version: '0'
48
34
  type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
- - - '>='
38
+ - - ">="
53
39
  - !ruby/object:Gem::Version
54
40
  version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
- name: debugger
42
+ name: hashdot
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
- - - '>='
45
+ - - ">="
60
46
  - !ruby/object:Gem::Version
61
47
  version: '0'
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - '>='
52
+ - - ">="
67
53
  - !ruby/object:Gem::Version
68
54
  version: '0'
69
55
  description: |-
@@ -88,17 +74,17 @@ require_paths:
88
74
  - lib
89
75
  required_ruby_version: !ruby/object:Gem::Requirement
90
76
  requirements:
91
- - - '>='
77
+ - - ">="
92
78
  - !ruby/object:Gem::Version
93
79
  version: '0'
94
80
  required_rubygems_version: !ruby/object:Gem::Requirement
95
81
  requirements:
96
- - - '>='
82
+ - - ">="
97
83
  - !ruby/object:Gem::Version
98
84
  version: '0'
99
85
  requirements: []
100
86
  rubyforge_project:
101
- rubygems_version: 2.0.3
87
+ rubygems_version: 2.2.2
102
88
  signing_key:
103
89
  specification_version: 4
104
90
  summary: Pathfinder RPG character bookkeeping made easy.