rslog 0.0.18 → 0.0.19
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 +4 -4
- data/lib/rslog.rb +4 -3
- data/lib/rslog/data_processing.rb +50 -0
- data/lib/rslog/decorator.rb +22 -0
- data/lib/rslog/decorators.yml +21 -0
- data/lib/rslog/presenter.rb +6 -2
- metadata +4 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 565f890daf1b4081d160be0695bdb10c6522d4477f293e629fd960de9dd6e6eb
|
|
4
|
+
data.tar.gz: b30cfe363b91deea197373d561e09529594062e659cf319230cc9f3c76e3b0dd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e2eae3d47dc76857e1dcd3cfc3541b9d9fed3b10ab1340783b744761b61436f550efb67adb6d01ba06ff1c478805b7754bcf08e5a0ee7cf860ce8b5fcb96bfaf
|
|
7
|
+
data.tar.gz: f2f5a2a8396d3a2b529c8684c77b015d9196ee2f278b18a5c0ebed510141b5b93cd2dd1889a001a9f67c0f480ac259dbfd99e5f737c6b8e1367f617c2d0f5b7e
|
data/lib/rslog.rb
CHANGED
|
@@ -10,7 +10,7 @@ require_relative 'rslog/presenter'
|
|
|
10
10
|
require 'set'
|
|
11
11
|
|
|
12
12
|
module RSlog
|
|
13
|
-
VERSION = '0.0.
|
|
13
|
+
VERSION = '0.0.19'
|
|
14
14
|
|
|
15
15
|
# Module to hold main process
|
|
16
16
|
#
|
|
@@ -31,10 +31,11 @@ module RSlog
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
def self._process(lines)
|
|
34
|
+
decorator = RSlog::Decorator.new(:utf)
|
|
34
35
|
_config_sets.each do |conf|
|
|
35
36
|
data_processing = RSlog::DataProcessing.new(lines, conf)
|
|
36
37
|
parsed_data = RSlog::Parser.new(data_processing).parse
|
|
37
|
-
RSlog::Presenter.new(parsed_data, conf).present
|
|
38
|
+
RSlog::Presenter.new(parsed_data, conf, decorator).present
|
|
38
39
|
end
|
|
39
40
|
end
|
|
40
41
|
|
|
@@ -46,7 +47,7 @@ module RSlog
|
|
|
46
47
|
{ title: 'List of webpages with most unique page views also ordered:',
|
|
47
48
|
# head_titles: %w[Url Unique\ views Average],
|
|
48
49
|
head_titles: %w[Url Unique\ views],
|
|
49
|
-
calc: proc { |visits| Set.new(visits).size } }]
|
|
50
|
+
calc: proc { |visits| Set.new(visits).size } } ]
|
|
50
51
|
end
|
|
51
52
|
end
|
|
52
53
|
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module RSlog
|
|
4
|
+
# Class to hold data_processing methods
|
|
5
|
+
#
|
|
6
|
+
class DataProcessing
|
|
7
|
+
attr_reader :result
|
|
8
|
+
|
|
9
|
+
def initialize(source, conf)
|
|
10
|
+
@calc = conf.fetch(:calc) { proc }
|
|
11
|
+
@separator = conf.fetch(:separator, ' ')
|
|
12
|
+
@result = Array(source)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# extract
|
|
16
|
+
def extract
|
|
17
|
+
@result = @result.map { |item| item.split(@separator) }
|
|
18
|
+
self
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# group
|
|
22
|
+
def group
|
|
23
|
+
@result = @result.group_by { |url, _visits| url }.to_a
|
|
24
|
+
self
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# calculate
|
|
28
|
+
def calculate
|
|
29
|
+
# calculate visits
|
|
30
|
+
@result = @result.map { |url, visits| [url, @calc.call(visits)] }
|
|
31
|
+
# calculate average
|
|
32
|
+
# @result = @result.map { |url, visits_qty| [url, visits_qty, (visits_qty.to_f / _total)] }
|
|
33
|
+
self
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# sort
|
|
37
|
+
def order
|
|
38
|
+
@result = @result.sort_by { |_url, visits_by_page| visits_by_page }
|
|
39
|
+
@result.reverse!
|
|
40
|
+
self
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
# calculate total
|
|
46
|
+
def _total
|
|
47
|
+
@result.sum { |_url, visits_qty| visits_qty }
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'yaml'
|
|
4
|
+
|
|
5
|
+
module RSlog
|
|
6
|
+
# Class for load borders for table
|
|
7
|
+
#
|
|
8
|
+
class Decorator
|
|
9
|
+
FILE_PATH = 'lib/rslog/decorators.yml'
|
|
10
|
+
|
|
11
|
+
attr_reader :decorators
|
|
12
|
+
|
|
13
|
+
def initialize(coding = :utf)
|
|
14
|
+
@coding = String(coding)
|
|
15
|
+
@decorators = YAML.load_file(FILE_PATH)[@coding]
|
|
16
|
+
@decorators.each do |name, value|
|
|
17
|
+
instance_variable_set("@#{name}", value)
|
|
18
|
+
Decorator.attr_reader name.to_sym
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
utf:
|
|
3
|
+
left_up_corner: "\u250c"
|
|
4
|
+
right_up_corner: "\u2510"
|
|
5
|
+
left_down_corner: "\u2514"
|
|
6
|
+
right_down_corner: "\u2518"
|
|
7
|
+
vertical_border: "\u2502"
|
|
8
|
+
horizontal_border: "\u2500"
|
|
9
|
+
vertical_left_border: "\u251c"
|
|
10
|
+
vertical_right_border: "\u2524"
|
|
11
|
+
|
|
12
|
+
str:
|
|
13
|
+
left_up_corner: "+"
|
|
14
|
+
right_up_corner: "+"
|
|
15
|
+
left_down_corner: "+"
|
|
16
|
+
right_down_corner: "+"
|
|
17
|
+
vertical_border: "|"
|
|
18
|
+
horizontal_border: "-"
|
|
19
|
+
vertical_left_border: "+"
|
|
20
|
+
vertical_right_border: "+"
|
|
21
|
+
|
data/lib/rslog/presenter.rb
CHANGED
|
@@ -12,14 +12,14 @@ module RSlog
|
|
|
12
12
|
# "/help_page/1 1 visits" ]
|
|
13
13
|
#
|
|
14
14
|
class Presenter
|
|
15
|
-
def initialize(source, conf)
|
|
15
|
+
def initialize(source, conf, decorator)
|
|
16
16
|
@source = source
|
|
17
17
|
@col_size = conf.fetch(:col_size, 20)
|
|
18
18
|
@title = conf.fetch(:title, 'Stat Pages')
|
|
19
19
|
@formatter = conf.fetch(:formatter, "%-#{@col_size}s")
|
|
20
20
|
@columns = conf.fetch(:columns, @source&.first&.size || 1)
|
|
21
21
|
@head_titles = conf.fetch(:head_titles, Array.new(@columns, 'title'))
|
|
22
|
-
@decorator =
|
|
22
|
+
@decorator = decorator || _default_decorator
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def present
|
|
@@ -33,6 +33,10 @@ module RSlog
|
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
private
|
|
36
|
+
|
|
37
|
+
def _default_decorator
|
|
38
|
+
RSlog::Decorator.new(:utf)
|
|
39
|
+
end
|
|
36
40
|
|
|
37
41
|
def _top_border
|
|
38
42
|
@decorator.left_up_corner + _horisontal_line + @decorator.right_up_corner
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rslog
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.19
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrey Eremeev
|
|
@@ -20,6 +20,9 @@ files:
|
|
|
20
20
|
- bin/rslog
|
|
21
21
|
- lib/rslog.rb
|
|
22
22
|
- lib/rslog/args_handler.rb
|
|
23
|
+
- lib/rslog/data_processing.rb
|
|
24
|
+
- lib/rslog/decorator.rb
|
|
25
|
+
- lib/rslog/decorators.yml
|
|
23
26
|
- lib/rslog/parser.rb
|
|
24
27
|
- lib/rslog/presenter.rb
|
|
25
28
|
- lib/rslog/validator.rb
|