wowlog 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 74586fc9615b447c898db824ac81cf0ad1a76057
4
- data.tar.gz: e28e236d49b273fef2536ae38aba233b642e43ee
3
+ metadata.gz: e7dab1672cfbe4a0a6da2116c1915bf7bc0cb3cf
4
+ data.tar.gz: 0cb21dccd07d8c24f6b66dc538c40b86af4347e8
5
5
  SHA512:
6
- metadata.gz: 8c46f7077f4e540585fd8871d3b70ac77a07cebafd4c24ec2d713150cb8aa15cd88d82054b3b6bea48c9b3bf78b13b6aed3a2b6c25ccb0b3759758f25682c420
7
- data.tar.gz: 3fd6d1735b83edb8f0163839390e9d11e787e0081bf256bfb64620da927cfa4f506a5dafe236006990970ab8f3ce5fe600e9907d14d0e765cb8e27c1e4e0cd5c
6
+ metadata.gz: 6af583d926a497ce38534948b0185e6950b15e6c4951d210dbbf18bc9951d5a6b9898758b07f927e32d077e2bf4aac0e99aa16d12cdb78ab19923874be12c47a
7
+ data.tar.gz: c17b025e15de54ff7dd4b4f3bfc8b72135d24719ae7690aa60cff04d84c973aaafed0f0b2ee8f578c052078dcfa1dd290750607efb0ce81935e6647a9411c100
@@ -0,0 +1,12 @@
1
+ 2014-09-14 Masayoshi Mizutani <muret@haeena.net>
2
+ * v0.2.0 Release
3
+ * wl_extract_encount: Changed output message format
4
+ * wl_extract_encount: Added "-o" option to specify output directory
5
+ * wl_extract_encount: Added "-m" option to output as Msgpack encode
6
+ * wowlog.rb: Fixed to parse a log line that has double quatation
7
+
8
+ 2014-07-26 Masayoshi Mizutani <muret@haeena.net>
9
+ * v0.1.2 Release
10
+
11
+ 2014-07-13 Masayoshi Mizutani <muret@haeena.net>
12
+ * v0.1.1 Release
@@ -26,35 +26,76 @@
26
26
  # POSSIBILITY OF SUCH DAMAGE.
27
27
  #
28
28
 
29
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
30
29
  require 'wowlog'
31
30
  require 'pp'
31
+ require 'time'
32
+ require 'optparse'
33
+ require 'msgpack'
32
34
 
35
+ out_encode = false
36
+ out_dir = './'
33
37
  psr = Wowlog::Parser.new
34
38
 
35
- File.open(ARGV[0], 'r') { |fd|
36
- out_fd = nil
37
- fname = nil
38
- fd.each { |line|
39
- ev = psr.parse_line(line)
40
-
41
- if ev['event'] == 'ENCOUNTER_START'
42
- enc_name = ev['encounterName'].gsub(/\s/, '_')
43
- ts = ev['timestamp'].to_i
44
- fname = "WowCombatLog_#{ts}_#{enc_name}_#{ev['groupSize']}man.txt"
45
- out_fd = File.open(fname, "w")
46
- puts "Open: #{fname}"
47
- end
48
-
49
- if !(out_fd.nil?)
50
- out_fd.write(line)
51
- end
52
-
53
- if ev['event'] == 'ENCOUNTER_END'
54
- puts "Close: #{fname}"
55
- out_fd.close
56
- out_fd = nil
57
- end
58
- }
59
- }
39
+ optpsr = OptionParser.new
40
+ optpsr.on('-m', 'output as msgpack encode') { |v| out_encode = v }
41
+ optpsr.on('-o VAL', 'output directory') { |val| out_dir = val }
42
+ argv = optpsr.parse(ARGV)
43
+
44
+ argv.each do |log_file|
45
+ File.open(log_file, 'r') { |fd|
46
+ out_fd = nil
47
+ fname = nil
48
+ STDOUT.sync = true
49
+ ev_count = nil
50
+ base_ts = nil
51
+
52
+ fd.each { |line|
53
+ ev = psr.parse_line(line)
54
+
55
+ if ev['event'] == 'ENCOUNTER_START'
56
+ # Set counting paramters.
57
+ ev_count = 0
58
+ base_ts = ev['timestamp']
59
+
60
+ # Covert timestamp to YYYYMMDD_HHMMSS format.
61
+ enc_name = ev['encounterName'].gsub(/\s/, '_')
62
+ dt = Time.at(ev['timestamp']).to_s.split(/\s/)
63
+ dt_s = [dt[0].split('-').join(''), dt[1].split(':').join('')].join('_')
60
64
 
65
+ # Open file, selecting extension by encoding.
66
+ ext = (out_encode) ? 'msg' : 'txt'
67
+ fname = "WoWCombatLog_#{dt_s}_#{enc_name}_#{ev['groupSize']}man.#{ext}"
68
+ fpath = File.join(out_dir, fname)
69
+ out_fd = File.open(fpath, (out_encode ? 'wb' : 'w'))
70
+ print "Extracting #{fpath}... "
71
+ end
72
+
73
+ # Count up.
74
+ ev_count += 1 unless ev_count.nil?
75
+
76
+ unless out_fd.nil?
77
+ if out_encode
78
+ out_fd.write(ev.to_msgpack)
79
+ else
80
+ out_fd.write(line)
81
+ end
82
+ end
83
+
84
+ # Closing combat file with ENCOUNTER_END event.
85
+ if ev['event'] == 'ENCOUNTER_END'
86
+ unless ev_count.nil?
87
+ duration = ev['timestamp'] - base_ts
88
+ puts "done (%d events, %d seconds)" % [ev_count, duration]
89
+ else
90
+ puts "done (no ENCOUNTER_START event)"
91
+ end
92
+
93
+ # Reset counter and file parameters.
94
+ ev_count = nil
95
+ base_ts = nil
96
+ out_fd.close
97
+ out_fd = nil
98
+ end
99
+ }
100
+ }
101
+ end
@@ -468,6 +468,7 @@ module Wowlog
468
468
 
469
469
  # rebuild CSV part
470
470
  csv_txt = terms[2..-1].join(' ')
471
+ csv_txt.gsub!('\\"', '""')
471
472
  cols = CSV.parse(csv_txt)[0]
472
473
 
473
474
  # parse CSV part
@@ -1,3 +1,3 @@
1
1
  module Wowlog
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wowlog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masayoshi Mizutani
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-26 00:00:00.000000000 Z
11
+ date: 2014-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -64,6 +64,7 @@ extensions: []
64
64
  extra_rdoc_files: []
65
65
  files:
66
66
  - ".gitignore"
67
+ - ChangeLog
67
68
  - Gemfile
68
69
  - LICENSE.txt
69
70
  - README.md