cogger 0.25.0 → 0.27.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
  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