cogger 0.25.0 → 0.27.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
  SHA256:
3
- metadata.gz: 82eadd70b70fc632efb641adf780c4f68fa76786ec1f170343e2e0dcb909182c
4
- data.tar.gz: 1b9f9159eb2e21950aec9a369a0272f68f4ae5111e104093ba491181f6c8edf3
3
+ metadata.gz: 70f6a9da3a0ab293bb7909571afaf8af33e2c42dd36f1bb0845ac38442d13557
4
+ data.tar.gz: f8dca81f5e93e6ba4c59a6af2bb57cf89cb79ff3a9885b1e390b61549a3dcf41
5
5
  SHA512:
6
- metadata.gz: b7d78ff5e80252151ab31e919d46a56bce0fc64a118b3f6d961953bd8a4c8d53c2ecd2f670ccb058129a3f91817ed5ed45cead216461e1a66f6ece33210d10ad
7
- data.tar.gz: 45da02e73d70296f684f1de615f55a9ff37ca4df5ed0e31946af0951350a652f9936cd5d60032d0ab70dedd5093cd519f55feae961f830b9ef1dfbb31ff9603b
6
+ metadata.gz: 14ae3c273c6da93bed7c4c2e01d55ac010525f2342806a3bd63eef9a12920fe92797391a3d1d450ed2d90e3d56ca15dcbb50ad9046f1d0bdcad087df437f9fcd
7
+ data.tar.gz: c5215a8a89e139ba6087d70dfe10575fe4bb1b3d251b3aa333f9400406e4dd05255529578be09e537052e534c3d890db614b8fcac52ff260626ba92c018504c3
checksums.yaml.gz.sig CHANGED
Binary file
data/cogger.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "cogger"
5
- spec.version = "0.25.0"
5
+ spec.version = "0.27.0"
6
6
  spec.authors = ["Brooke Kuhlmann"]
7
7
  spec.email = ["brooke@alchemists.io"]
8
8
  spec.homepage = "https://alchemists.io/projects/cogger"
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.metadata = {
13
13
  "bug_tracker_uri" => "https://github.com/bkuhlmann/cogger/issues",
14
14
  "changelog_uri" => "https://alchemists.io/projects/cogger/versions",
15
- "documentation_uri" => "https://alchemists.io/projects/cogger",
15
+ "homepage_uri" => "https://alchemists.io/projects/cogger",
16
16
  "funding_uri" => "https://github.com/sponsors/bkuhlmann",
17
17
  "label" => "Cogger",
18
18
  "rubygems_mfa_required" => "true",
@@ -22,9 +22,9 @@ Gem::Specification.new do |spec|
22
22
  spec.signing_key = Gem.default_key_path
23
23
  spec.cert_chain = [Gem.default_cert_path]
24
24
 
25
- spec.required_ruby_version = "~> 3.3"
26
- spec.add_dependency "core", "~> 1.0"
27
- spec.add_dependency "refinements", "~> 12.7"
25
+ spec.required_ruby_version = ">= 3.3", "<= 3.4"
26
+ spec.add_dependency "core", "~> 1.7"
27
+ spec.add_dependency "refinements", "~> 12.8"
28
28
  spec.add_dependency "tone", "~> 1.0"
29
29
  spec.add_dependency "zeitwerk", "~> 2.6"
30
30
 
data/lib/cogger/entry.rb CHANGED
@@ -15,10 +15,9 @@ module Cogger
15
15
  payload:
16
16
  end
17
17
 
18
- def self.for_crash message, error, id:, at: ::Time.now
18
+ def self.for_crash message, error, id:
19
19
  new id:,
20
20
  level: "FATAL",
21
- at:,
22
21
  message:,
23
22
  payload: {
24
23
  error_message: error.message,
@@ -4,10 +4,12 @@ module Cogger
4
4
  module Formatters
5
5
  # An abstract class with common/shared functionality.
6
6
  class Abstract
7
+ NEW_LINE = "\n"
8
+
7
9
  SANITIZERS = {
8
- datetime: Sanitizers::DateTime,
9
10
  escape: Sanitizers::Escape.new,
10
- filter: Sanitizers::Filter
11
+ filter: Sanitizers::Filter,
12
+ format_time: Sanitizers::FormatTime
11
13
  }.freeze
12
14
 
13
15
  def initialize sanitizers: SANITIZERS
@@ -23,10 +25,8 @@ module Cogger
23
25
 
24
26
  def sanitize entry, message
25
27
  entry.public_send(message).tap do |attributes|
26
- function = -> value { sanitize_datetime value, format: entry.datetime_format }
27
-
28
28
  filter attributes
29
- attributes.transform_values!(&function)
29
+ attributes.transform_values! { |value| format_time value, format: entry.datetime_format }
30
30
  end
31
31
  end
32
32
 
@@ -34,7 +34,7 @@ module Cogger
34
34
 
35
35
  def filter(...) = sanitizers.fetch(__method__).call(...)
36
36
 
37
- def sanitize_datetime(...) = sanitizers.fetch(:datetime).call(...)
37
+ def format_time(...) = sanitizers.fetch(__method__).call(...)
38
38
 
39
39
  private
40
40
 
@@ -16,7 +16,7 @@ module Cogger
16
16
  *, entry = input
17
17
  attributes = sanitize entry, :tagged
18
18
 
19
- "#{format(parse(attributes[:level]), attributes).tap(&:strip!)}\n"
19
+ format(parse(attributes[:level]), attributes).tap(&:strip!) << NEW_LINE
20
20
  end
21
21
 
22
22
  private
@@ -22,7 +22,7 @@ module Cogger
22
22
  attributes = sanitize entry, :tagged
23
23
  attributes[:backtrace] = %( #{attributes[:backtrace].join "\n "})
24
24
 
25
- "#{format(parse(attributes[:level]), attributes)}\n"
25
+ format(parse(attributes[:level]), attributes) << NEW_LINE
26
26
  end
27
27
 
28
28
  private
@@ -9,7 +9,7 @@ module Cogger
9
9
  class JSON < Abstract
10
10
  TEMPLATE = nil
11
11
 
12
- def initialize template = TEMPLATE, parser: Parsers::KeyExtractor.new
12
+ def initialize template = TEMPLATE, parser: Parsers::Position.new
13
13
  super()
14
14
  @template = template
15
15
  @parser = parser
@@ -19,22 +19,12 @@ module Cogger
19
19
  *, entry = input
20
20
  attributes = sanitize(entry, :tagged_attributes).tap(&:compact!)
21
21
 
22
- %(#{reorder(attributes).to_json}\n)
22
+ parser.call(template, attributes).to_json << NEW_LINE
23
23
  end
24
24
 
25
25
  private
26
26
 
27
27
  attr_reader :template, :parser
28
-
29
- def reorder attributes
30
- positions = positions_for template
31
-
32
- return attributes if positions.empty?
33
-
34
- attributes.slice(*positions).merge!(attributes.except(*positions))
35
- end
36
-
37
- def positions_for(template) = template ? parser.call(template) : Core::EMPTY_ARRAY
38
28
  end
39
29
  end
40
30
  end
@@ -10,9 +10,8 @@ module Cogger
10
10
  PATTERN = /
11
11
  % # Start.
12
12
  (?<flag>[\s#+-0*])? # Optional flag.
13
+ \.? # Optional precision.
13
14
  (?<width>\d+)? # Optional width.
14
- \.? # Optional precision delimiter.
15
- (?<precision>\d+)? # Optional precision value.
16
15
  < # Reference start.
17
16
  (?<key>\w+) # Key.
18
17
  : # Delimiter.
@@ -3,8 +3,8 @@
3
3
  module Cogger
4
4
  module Formatters
5
5
  module Parsers
6
- # Parses template and extracts keys.
7
- class KeyExtractor
6
+ # Parses template and reorders attributes based on template key positions.
7
+ class Position
8
8
  PATTERN = /
9
9
  % # Start.
10
10
  ? # Flag, width, or precision.
@@ -19,11 +19,20 @@ module Cogger
19
19
  @pattern = pattern
20
20
  end
21
21
 
22
- def call(template) = template.scan(pattern).map { |match| match.first.to_sym }
22
+ # :reek:FeatureEnvy
23
+ def call template, attributes
24
+ return attributes if !template || template.empty?
25
+ return attributes unless template.match? pattern
26
+
27
+ keys = scan template
28
+ attributes.slice(*keys).merge!(attributes.except(*keys))
29
+ end
23
30
 
24
31
  private
25
32
 
26
33
  attr_reader :pattern
34
+
35
+ def scan(template) = template.scan(pattern).map { |match| match.first.to_sym }
27
36
  end
28
37
  end
29
38
  end
@@ -8,7 +8,7 @@ module Cogger
8
8
  class Property < Abstract
9
9
  TEMPLATE = nil
10
10
 
11
- def initialize template = TEMPLATE, parser: Parsers::KeyExtractor.new
11
+ def initialize template = TEMPLATE, parser: Parsers::Position.new
12
12
  super()
13
13
  @template = template
14
14
  @parser = parser
@@ -18,7 +18,7 @@ module Cogger
18
18
  *, entry = input
19
19
  attributes = sanitize(entry, :tagged_attributes).tap(&:compact!)
20
20
 
21
- concat(attributes).chop! << "\n"
21
+ concat(attributes).chop! << NEW_LINE
22
22
  end
23
23
 
24
24
  private
@@ -26,20 +26,10 @@ module Cogger
26
26
  attr_reader :template, :parser
27
27
 
28
28
  def concat attributes
29
- reorder(attributes).each.with_object(+"") do |(key, value), line|
29
+ parser.call(template, attributes).each.with_object(+"") do |(key, value), line|
30
30
  line << key.to_s << "=" << escape(value) << " "
31
31
  end
32
32
  end
33
-
34
- def reorder attributes
35
- positions = positions_for template
36
-
37
- return attributes if positions.empty?
38
-
39
- attributes.slice(*positions).merge!(attributes.except(*positions))
40
- end
41
-
42
- def positions_for(template) = template ? parser.call(template) : Core::EMPTY_ARRAY
43
33
  end
44
34
  end
45
35
  end
@@ -6,8 +6,8 @@ module Cogger
6
6
  module Formatters
7
7
  module Sanitizers
8
8
  # Sanitizes/formats date/time value.
9
- DateTime = lambda do |value, format: Cogger::DATETIME_FORMAT|
10
- return value unless value.is_a?(::Time) || value.is_a?(Date) || value.is_a?(::DateTime)
9
+ FormatTime = lambda do |value, format: Cogger::DATETIME_FORMAT|
10
+ return value unless value.is_a?(::Time) || value.is_a?(Date) || value.is_a?(DateTime)
11
11
 
12
12
  value.strftime format
13
13
  end
@@ -15,7 +15,7 @@ module Cogger
15
15
  *, entry = input
16
16
  attributes = sanitize entry, :tagged
17
17
 
18
- "#{format(template, attributes).tap(&:strip!)}\n"
18
+ format(template, attributes).tap(&:strip!) << NEW_LINE
19
19
  end
20
20
 
21
21
  private
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cogger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.25.0
4
+ version: 0.27.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -35,7 +35,7 @@ cert_chain:
35
35
  3n5C8/6Zh9DYTkpcwPSuIfAga6wf4nXc9m6JAw8AuMLaiWN/r/2s4zJsUHYERJEu
36
36
  gZGm4JqtuSg8pYjPeIJxS960owq+SfuC+jxqmRA54BisFCv/0VOJi7tiJVY=
37
37
  -----END CERTIFICATE-----
38
- date: 2024-08-28 00:00:00.000000000 Z
38
+ date: 2024-09-01 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: core
@@ -43,28 +43,28 @@ dependencies:
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '1.0'
46
+ version: '1.7'
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '1.0'
53
+ version: '1.7'
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: refinements
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '12.7'
60
+ version: '12.8'
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '12.7'
67
+ version: '12.8'
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: tone
70
70
  requirement: !ruby/object:Gem::Requirement
@@ -118,11 +118,11 @@ files:
118
118
  - lib/cogger/formatters/parsers/element.rb
119
119
  - lib/cogger/formatters/parsers/emoji.rb
120
120
  - lib/cogger/formatters/parsers/key.rb
121
- - lib/cogger/formatters/parsers/key_extractor.rb
121
+ - lib/cogger/formatters/parsers/position.rb
122
122
  - lib/cogger/formatters/property.rb
123
- - lib/cogger/formatters/sanitizers/date_time.rb
124
123
  - lib/cogger/formatters/sanitizers/escape.rb
125
124
  - lib/cogger/formatters/sanitizers/filter.rb
125
+ - lib/cogger/formatters/sanitizers/format_time.rb
126
126
  - lib/cogger/formatters/simple.rb
127
127
  - lib/cogger/formatters/transformers/color.rb
128
128
  - lib/cogger/formatters/transformers/emoji.rb
@@ -143,7 +143,7 @@ licenses:
143
143
  metadata:
144
144
  bug_tracker_uri: https://github.com/bkuhlmann/cogger/issues
145
145
  changelog_uri: https://alchemists.io/projects/cogger/versions
146
- documentation_uri: https://alchemists.io/projects/cogger
146
+ homepage_uri: https://alchemists.io/projects/cogger
147
147
  funding_uri: https://github.com/sponsors/bkuhlmann
148
148
  label: Cogger
149
149
  rubygems_mfa_required: 'true'
@@ -154,9 +154,12 @@ require_paths:
154
154
  - lib
155
155
  required_ruby_version: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - "~>"
157
+ - - ">="
158
158
  - !ruby/object:Gem::Version
159
159
  version: '3.3'
160
+ - - "<="
161
+ - !ruby/object:Gem::Version
162
+ version: '3.4'
160
163
  required_rubygems_version: !ruby/object:Gem::Requirement
161
164
  requirements:
162
165
  - - ">="
metadata.gz.sig CHANGED
Binary file