Skip to content

Commit

Permalink
Invalid file detection added.
Browse files Browse the repository at this point in the history
  • Loading branch information
OwlManAtt committed Sep 11, 2011
1 parent dc41ada commit 8b8f6e7
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 2 deletions.
5 changes: 5 additions & 0 deletions HISTORY
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
== 1.0.0 ==
* Incorrect files (incorrect is defined by the lack of the
'TradeSkillMaster_AccountingDB = {' line) are now detected and an exception
is raised.

== 0.9.0 ==
* I am the worst QA engineer in the entire world. Buyer and seller columns
are now correct for purchase transactions.
Expand Down
14 changes: 12 additions & 2 deletions lib/tsm-accounting.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,12 @@
require 'csv'

module TSMAccounting
VERSION = '0.9.0'
VERSION = '1.0.0'

class Database
class InvalidDatabaseFileException < RuntimeError
end

attr_reader :data
# Expects the whole TradeSkillMaster_Accounting.lua file
# as a string.
Expand Down Expand Up @@ -101,11 +104,14 @@ def extract_data(db)
# my file since the only two lines of consequence are the ones I'm
# going to be saving anyway but it may be a good idea if there's a
# goblin operating on both factions for six realms...


header_seen = false
depth = 0
realm, faction = nil
data = {}
db.split("\n").each do |line|
header_seen = true if line =~ /^\s*TradeSkillMaster_AccountingDB\s*=\s*\{/

if line =~ /^\s*\["factionrealm"\]/
depth = 1
next
Expand Down Expand Up @@ -160,6 +166,10 @@ def extract_data(db)
end
end # line depth0

if !header_seen
raise InvalidDatabaseFileException 'Bad file detected.'
end

return data
end # extract_data

Expand Down
9 changes: 9 additions & 0 deletions test/data/junk.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eu erat dui. Donec quis sem nec quam dictum tincidunt. Vivamus varius enim in leo tempus egestas. Aliquam ut mi sed nibh vulputate posuere at a felis. In tincidunt, purus sed pretium convallis, tellus libero dignissim magna, in fringilla diam elit sed tellus. Donec vitae metus mi, id blandit leo. Aliquam mauris erat, rutrum vel laoreet vitae, mollis vel ante. Aliquam vehicula, quam a condimentum viverra, libero neque volutpat felis, in porta arcu magna vitae purus. Donec nibh urna, rutrum at tincidunt sit amet, aliquam vel orci. Ut dapibus lacinia nisl, at fermentum orci tempor in. Nam ut quam vitae magna semper egestas. Nullam mollis tincidunt cursus. Maecenas porta, nibh at suscipit porttitor, nulla erat imperdiet ipsum, semper ultricies quam augue sed tellus. Donec vel quam vehicula nunc dictum congue quis imperdiet velit. Duis ornare nibh eu felis bibendum ac sollicitudin nulla feugiat. Aliquam nulla felis, scelerisque vel auctor eu, dignissim eget enim.

Cras a neque urna. Cras gravida libero sodales elit bibendum vulputate. In a dui ipsum, malesuada tempor nunc. Maecenas venenatis, nisl vitae porttitor lacinia, neque tellus fermentum ligula, at euismod sem nisl a diam. Aliquam erat volutpat. Nulla facilisis mi luctus ipsum blandit tempor malesuada ligula porttitor. Vestibulum commodo elit sed augue lacinia in luctus leo volutpat. Aliquam nulla mauris, venenatis sit amet porta ac, euismod eu odio. Etiam sed leo ante. Vestibulum id metus elit, eu rutrum est. Nunc iaculis ornare mi, at hendrerit leo viverra vel. Aenean lorem magna, laoreet vitae sodales ac, aliquam eget felis. Integer diam ligula, dignissim eu consequat ut, adipiscing eu orci.

Phasellus placerat suscipit augue, ultrices sodales massa vehicula vel. Morbi facilisis massa ac est bibendum non tristique purus aliquet. Integer congue mattis felis, non viverra magna congue vitae. Nullam porttitor sollicitudin nisl, non ultrices quam semper ut. Etiam diam risus, rhoncus quis pulvinar eget, vestibulum in leo. In fermentum, orci ac semper aliquet, nisi nunc vulputate libero, non tincidunt eros dui quis turpis. In id turpis eu orci cursus mattis. Proin id dolor quam, vel auctor felis. Nullam et erat elit. Donec vel accumsan risus. Etiam nisl magna, sollicitudin non placerat ut, tristique a nisi. Nam gravida accumsan mauris, id ultricies velit interdum eu. Proin rutrum ornare tincidunt. Integer eu lectus mauris. Praesent ullamcorper felis nec elit hendrerit ultrices sed vel elit.

Nulla facilisi. Curabitur placerat, ligula eu pellentesque semper, mi arcu tincidunt nunc, et luctus est justo eu nibh. Fusce faucibus, dui eget rutrum laoreet, turpis nunc facilisis sapien, aliquet convallis lorem magna vel lorem. Ut mauris orci, venenatis a suscipit sed, varius non risus. Pellentesque sagittis rutrum tellus eu ultricies. Quisque metus justo, tincidunt ac lacinia ac, facilisis iaculis tortor. Aenean mauris lorem, porttitor vel mattis id, auctor vel turpis. Proin odio tortor, cursus at rutrum non, mollis non nibh. Integer imperdiet tincidunt lorem id dapibus. Nullam mauris augue, aliquam vel malesuada at, mattis vestibulum justo. Nam suscipit aliquet congue. Integer gravida convallis orci eu pellentesque. Suspendisse volutpat, orci nec eleifend venenatis, nibh dui sagittis velit, eget tempor neque libero sed elit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Morbi fermentum porta ante, in feugiat purus ultrices et.

Etiam faucibus, augue in convallis mattis, est urna imperdiet leo, id iaculis est sapien quis dolor. Mauris eleifend accumsan metus, vel tincidunt magna egestas eget. Curabitur sed tristique eros. Praesent mauris enim, consectetur eu ultrices ut, rutrum ut purus. Curabitur commodo scelerisque eros in tristique. Integer consectetur rutrum luctus. Nunc adipiscing erat vel ante volutpat id facilisis metus blandit.
1 change: 1 addition & 0 deletions test/test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@
require 'tsm-accounting'

tsm = TSMAccounting::Database.new(File.new('data/TradeSkillMaster_Accounting.lua').read)
#tsm = TSMAccounting::Database.new(File.new('data/junk.lua').read)
tsm.to_csv('/tmp/accounting.csv')

0 comments on commit 8b8f6e7

Please sign in to comment.