ssc.nob 0.1.0-java → 0.1.1-java

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,27 +1,15 @@
1
- #!/usr/bin/env ruby
2
1
  # encoding: UTF-8
3
2
  # frozen_string_literal: true
4
3
 
5
4
  #--
6
5
  # This file is part of SSC.Nob.
7
- # Copyright (c) 2020 Jonathan Bradley Whited (@esotericpig)
8
- #
9
- # SSC.Nob is free software: you can redistribute it and/or modify
10
- # it under the terms of the GNU General Public License as published by
11
- # the Free Software Foundation, either version 3 of the License, or
12
- # (at your option) any later version.
13
- #
14
- # SSC.Nob is distributed in the hope that it will be useful,
15
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
- # GNU General Public License for more details.
18
- #
19
- # You should have received a copy of the GNU General Public License
20
- # along with SSC.Nob. If not, see <https://www.gnu.org/licenses/>.
6
+ # Copyright (c) 2020-2021 Jonathan Bradley Whited
7
+ #
8
+ # SPDX-License-Identifier: GPL-3.0-or-later
21
9
  #++
22
10
 
23
11
 
24
- require 'attr_bool'
12
+ require 'attr_bool/core_ext'
25
13
 
26
14
  require 'ssc.nob/ssc_chat_log/message'
27
15
  require 'ssc.nob/ssc_chat_log/message_parser'
@@ -29,7 +17,7 @@ require 'ssc.nob/ssc_chat_log/message_parser'
29
17
 
30
18
  module SSCNob
31
19
  ###
32
- # @author Jonathan Bradley Whited (@esotericpig)
20
+ # @author Jonathan Bradley Whited
33
21
  # @since 0.1.0
34
22
  ###
35
23
  class SSCChatLog
@@ -41,74 +29,74 @@ module SSCNob
41
29
  attr_reader? :running
42
30
  attr_accessor :sleep_time
43
31
  attr_reader :thread
44
-
32
+
45
33
  def initialize(config,logname: 'nob.log',sleep_time: 0.2)
46
34
  @config = config
47
35
  @listeners = []
48
- @log_file = File.join(config.build_ssc_log_dir(),logname)
36
+ @log_file = File.join(config.build_ssc_log_dir,logname)
49
37
  @logname = logname
50
38
  @messages = []
51
39
  @running = false
52
40
  @sleep_time = sleep_time
53
41
  @thread = nil
54
42
  end
55
-
43
+
56
44
  def add_listener(proc=nil,&block)
57
45
  @listeners.push(block) if block
58
46
  @listeners.push(proc) if proc
59
-
47
+
60
48
  return self
61
49
  end
62
-
63
- def run()
50
+
51
+ def run
64
52
  return if @running # Already running
65
-
66
- stop() # Justin Case
67
-
53
+
54
+ stop # Justin Case
55
+
68
56
  if !File.exist?(@log_file)
69
57
  # Create the file.
70
58
  File.open(@log_file,'at') do |fout|
71
59
  end
72
60
  end
73
-
74
- @thread = Thread.new() do
75
- File.open(@log_file,'rt') do |fin|
61
+
62
+ @thread = Thread.new do
63
+ File.open(@log_file,'rt',encoding: 'Windows-1252:UTF-8') do |fin|
76
64
  fin.seek(0,:END)
77
- fin.gets() # Ignore most recent line
78
-
65
+ fin.gets # Ignore most recent line
66
+
79
67
  parser = MessageParser.new(config: @config,fin: fin)
80
-
68
+
81
69
  @running = true
82
-
70
+
83
71
  while @running
84
- while !(line = fin.gets()).nil?()
72
+ while !(line = fin.gets).nil?
85
73
  msg = parser.parse(line)
86
-
74
+
87
75
  @messages.push(msg)
88
-
89
- @listeners.each() do |l|
76
+
77
+ @listeners.each do |l|
90
78
  l.call(self,msg)
91
79
  end
92
80
  end
93
-
81
+
94
82
  sleep(@sleep_time)
95
83
  end
96
84
  end
97
85
  end
98
86
  end
99
-
100
- def stop()
87
+
88
+ def stop
101
89
  @running = false
102
-
103
- if !@thread.nil?()
104
- if @thread.alive?()
90
+
91
+ if !@thread.nil?
92
+ if @thread.alive?
105
93
  @thread.join(5)
106
- @thread.kill() if @thread.alive?()
94
+ @thread.kill if @thread.alive?
107
95
  end
108
-
96
+
109
97
  @thread = nil
110
98
  end
111
-
99
+
112
100
  @messages = []
113
101
  end
114
102
  end
@@ -1,57 +1,45 @@
1
- #!/usr/bin/env ruby
2
1
  # encoding: UTF-8
3
2
  # frozen_string_literal: true
4
3
 
5
4
  #--
6
5
  # This file is part of SSC.Nob.
7
- # Copyright (c) 2020 Jonathan Bradley Whited (@esotericpig)
8
- #
9
- # SSC.Nob is free software: you can redistribute it and/or modify
10
- # it under the terms of the GNU General Public License as published by
11
- # the Free Software Foundation, either version 3 of the License, or
12
- # (at your option) any later version.
13
- #
14
- # SSC.Nob is distributed in the hope that it will be useful,
15
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
- # GNU General Public License for more details.
18
- #
19
- # You should have received a copy of the GNU General Public License
20
- # along with SSC.Nob. If not, see <https://www.gnu.org/licenses/>.
6
+ # Copyright (c) 2020-2021 Jonathan Bradley Whited
7
+ #
8
+ # SPDX-License-Identifier: GPL-3.0-or-later
21
9
  #++
22
10
 
23
11
 
24
12
  module SSCNob
25
13
  class SSCChatLog
26
14
  ###
27
- # @author Jonathan Bradley Whited (@esotericpig)
15
+ # @author Jonathan Bradley Whited
28
16
  # @since 0.1.0
29
17
  ###
30
18
  class Message
31
- TYPES = [
32
- :unknown,
33
- :chat,:freq,:kill,:private,:pub,:team,
34
- :q_chat,:q_kill,:q_namelen,:q_log,
35
- ]
36
-
19
+ TYPES = %i[
20
+ unknown
21
+ chat freq kill private pub team
22
+ q_chat q_kill q_namelen q_log
23
+ ].freeze
24
+
37
25
  attr_reader :lines
38
26
  attr_reader :meta
39
27
  attr_reader :type
40
-
41
- TYPES.each() do |type|
28
+
29
+ TYPES.each do |type|
42
30
  define_method(:"#{type}?") do
43
31
  return @type == type
44
32
  end
45
33
  end
46
-
34
+
47
35
  def initialize(lines,meta: {},type: :unknown)
48
36
  super()
49
-
37
+
50
38
  @lines = Array(lines)
51
39
  @meta = meta
52
40
  @type = type
53
41
  end
54
-
42
+
55
43
  def [](key)
56
44
  return @meta[key]
57
45
  end
@@ -1,23 +1,11 @@
1
- #!/usr/bin/env ruby
2
1
  # encoding: UTF-8
3
2
  # frozen_string_literal: true
4
3
 
5
4
  #--
6
5
  # This file is part of SSC.Nob.
7
- # Copyright (c) 2020 Jonathan Bradley Whited (@esotericpig)
8
- #
9
- # SSC.Nob is free software: you can redistribute it and/or modify
10
- # it under the terms of the GNU General Public License as published by
11
- # the Free Software Foundation, either version 3 of the License, or
12
- # (at your option) any later version.
13
- #
14
- # SSC.Nob is distributed in the hope that it will be useful,
15
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
- # GNU General Public License for more details.
18
- #
19
- # You should have received a copy of the GNU General Public License
20
- # along with SSC.Nob. If not, see <https://www.gnu.org/licenses/>.
6
+ # Copyright (c) 2020-2021 Jonathan Bradley Whited
7
+ #
8
+ # SPDX-License-Identifier: GPL-3.0-or-later
21
9
  #++
22
10
 
23
11
 
@@ -29,25 +17,25 @@ require 'ssc.nob/ssc_chat_log/message'
29
17
  module SSCNob
30
18
  class SSCChatLog
31
19
  ###
32
- # @author Jonathan Bradley Whited (@esotericpig)
20
+ # @author Jonathan Bradley Whited
33
21
  # @since 0.1.0
34
22
  ###
35
23
  class MessageParser
36
24
  attr_reader :config
37
25
  attr_reader :fin
38
26
  attr_accessor :namelen
39
-
27
+
40
28
  def initialize(config: nil,fin: nil,namelen: nil)
41
29
  @config = config
42
30
  @fin = fin
43
31
  @namelen = namelen
44
32
  end
45
-
33
+
46
34
  def parse(line)
47
- line = Util.rstrip(line)
48
-
35
+ line = line.sub(/[\r\n]+\z/,'')
36
+
49
37
  msg = nil
50
-
38
+
51
39
  case line[0]
52
40
  when 'C'
53
41
  msg = parse_chat(line)
@@ -67,93 +55,93 @@ class SSCChatLog
67
55
  msg = parse_q_namelen(line)
68
56
  end
69
57
  end
70
-
71
- msg = Message.new(line) if msg.nil?()
72
-
58
+
59
+ msg = Message.new(line) if msg.nil?
60
+
73
61
  return msg
74
62
  end
75
-
63
+
76
64
  # 'T Name> Msg'
77
65
  def parse_basic(line,type:)
78
- i = @namelen.nil?() ? line.index('> ',2) : (@namelen + 2)
79
-
66
+ i = @namelen.nil? ? line.index('> ',2) : (@namelen + 2)
67
+
80
68
  username = line[2...i]
81
- username = Util.strip(username.to_s())
69
+ username = Util.strip(username.to_s)
82
70
  message = line[i + 1..-1]
83
- message = Util.strip(message.to_s())
84
-
71
+ message = Util.strip(message.to_s)
72
+
85
73
  return Message.new(line,type: type,meta: {
86
74
  username: username,
87
75
  message: message,
88
76
  })
89
77
  end
90
-
78
+
91
79
  # 'C 1:Name> Msg'
92
80
  # - Not affected by namelen, always full name.
93
81
  def parse_chat(line)
94
82
  i = line.index(':',2)
95
83
  j = line.index('> ',i)
96
-
84
+
97
85
  channel = line[2...i]
98
- channel = Util.strip(channel.to_s()).to_i()
86
+ channel = Util.strip(channel.to_s).to_i
99
87
  username = line[i + 1...j]
100
- username = Util.strip(username.to_s())
88
+ username = Util.strip(username.to_s)
101
89
  message = line[j + 1..-1]
102
- message = Util.strip(message.to_s())
103
-
90
+ message = Util.strip(message.to_s)
91
+
104
92
  return Message.new(line,type: :chat,meta: {
105
93
  channel: channel,
106
94
  username: username,
107
95
  message: message,
108
96
  })
109
97
  end
110
-
98
+
111
99
  def parse_freq(line)
112
100
  return parse_basic(line,type: :freq)
113
101
  end
114
-
102
+
115
103
  # ' Name(100) killed by: Name'
116
104
  def parse_kill(line)
117
105
  i = line.index(/\(\d+\)/,2)
118
106
  j = line.index(')',i)
119
107
  k = line.index(':',j)
120
-
108
+
121
109
  killed = line[2...i]
122
- killed = Util.strip(killed.to_s())
110
+ killed = Util.strip(killed.to_s)
123
111
  bounty = line[i + 1...j]
124
- bounty = Util.strip(bounty.to_s()).to_i()
112
+ bounty = Util.strip(bounty.to_s).to_i
125
113
  killer = line[k + 1..-1]
126
- killer = Util.strip(killer.to_s())
127
-
114
+ killer = Util.strip(killer.to_s)
115
+
128
116
  return Message.new(line,type: :kill,meta: {
129
117
  killed: killed,
130
118
  bounty: bounty,
131
119
  killer: killer,
132
120
  })
133
121
  end
134
-
122
+
135
123
  def parse_private(line)
136
124
  return parse_basic(line,type: :private)
137
125
  end
138
-
126
+
139
127
  def parse_pub(line)
140
128
  return parse_basic(line,type: :pub)
141
129
  end
142
-
130
+
143
131
  # ' Message Name Length: 24'
144
132
  def parse_q_namelen(line)
145
133
  i = line.index(':')
146
-
134
+
147
135
  namelen = line[i + 1..-1]
148
- namelen = Util.strip(namelen.to_s()).to_i()
149
-
136
+ namelen = Util.strip(namelen.to_s).to_i
137
+
150
138
  @namelen = namelen
151
-
139
+
152
140
  return Message.new(line,type: :q_namelen,meta: {
153
141
  namelen: namelen,
154
142
  })
155
143
  end
156
-
144
+
157
145
  def parse_team(line)
158
146
  return parse_basic(line,type: :team)
159
147
  end
@@ -1,23 +1,11 @@
1
- #!/usr/bin/env ruby
2
1
  # encoding: UTF-8
3
2
  # frozen_string_literal: true
4
3
 
5
4
  #--
6
5
  # This file is part of SSC.Nob.
7
- # Copyright (c) 2020 Jonathan Bradley Whited (@esotericpig)
8
- #
9
- # SSC.Nob is free software: you can redistribute it and/or modify
10
- # it under the terms of the GNU General Public License as published by
11
- # the Free Software Foundation, either version 3 of the License, or
12
- # (at your option) any later version.
13
- #
14
- # SSC.Nob is distributed in the hope that it will be useful,
15
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
- # GNU General Public License for more details.
18
- #
19
- # You should have received a copy of the GNU General Public License
20
- # along with SSC.Nob. If not, see <https://www.gnu.org/licenses/>.
6
+ # Copyright (c) 2020-2021 Jonathan Bradley Whited
7
+ #
8
+ # SPDX-License-Identifier: GPL-3.0-or-later
21
9
  #++
22
10
 
23
11
 
@@ -30,94 +18,94 @@ require 'tty-spinner'
30
18
 
31
19
  module SSCNob
32
20
  ###
33
- # @author Jonathan Bradley Whited (@esotericpig)
21
+ # @author Jonathan Bradley Whited
34
22
  # @since 0.1.0
35
23
  ###
36
24
  class Userface
37
25
  extend Forwardable
38
26
  include Singleton
39
-
27
+
40
28
  attr_reader :line
41
29
  attr_reader :rain
42
-
30
+
43
31
  def_delegators :@line,:agree,:ask,:choose,:indent,:say
44
32
  def_delegator :@rain,:wrap,:color
45
-
46
- def initialize()
33
+
34
+ def initialize
47
35
  super()
48
-
49
- @line = HighLine.new()
50
- @rain = Rainbow.new()
51
-
36
+
37
+ @line = HighLine.new
38
+ @rain = Rainbow.new
39
+
52
40
  @line.use_color = true
53
41
  @rain.enabled = true
54
42
  end
55
-
43
+
56
44
  def cmd(cmd)
57
45
  return color(cmd).yellow.bold
58
46
  end
59
-
60
- def coffee()
47
+
48
+ def coffee
61
49
  return color('C\_/').saddlebrown.bold
62
50
  end
63
-
51
+
64
52
  def error(msg)
65
53
  return "#{color('Error:').red.bold} #{msg}"
66
54
  end
67
-
55
+
68
56
  def gt(msg=nil)
69
57
  return "#{color('>').yellow.bold} #{msg}"
70
58
  end
71
-
59
+
72
60
  def love(msg)
73
61
  return color(msg).red.bold
74
62
  end
75
-
63
+
76
64
  def spin(msg,&block)
77
65
  spinner = TTY::Spinner.new("[:spinner] #{msg}...",
78
66
  interval: 4,frames: ['o_O','O_o']
79
67
  )
80
-
81
- if block_given?()
68
+
69
+ if block_given?
82
70
  spinner.run(&block)
83
71
  else
84
- spinner.auto_spin()
72
+ spinner.auto_spin
85
73
  end
86
-
74
+
87
75
  return spinner
88
76
  end
89
-
90
- def ssc()
77
+
78
+ def ssc
91
79
  return color('Subspace Continuum').purple.bold
92
80
  end
93
-
81
+
94
82
  def title(title)
95
83
  return color(title).blue.bold
96
84
  end
97
-
85
+
98
86
  def type(msg)
99
- msg.each_char() do |c|
87
+ msg.each_char do |c|
100
88
  print c
101
89
  sleep(0.05)
102
90
  end
103
91
  end
104
-
92
+
105
93
  def types(msg)
106
94
  type(msg)
107
95
  puts
108
96
  end
109
-
97
+
110
98
  def user(user)
111
99
  return color(user).limegreen.bold
112
100
  end
113
101
  end
114
-
102
+
115
103
  ###
116
- # @author Jonathan Bradley Whited (@esotericpig)
104
+ # @author Jonathan Bradley Whited
117
105
  # @since 0.1.0
118
106
  ###
119
107
  module Uface
120
- def uface()
108
+ def uface
121
109
  return Userface.instance
122
110
  end
123
111
  end