wowlog 0.1.2 → 0.2.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.
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