email_reply_trimmer 0.2.0 → 0.3.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: 9914eb793e4bbfa4f291097707acb2af27f491507b0e52b0e1433df3c1fb1f0d
4
- data.tar.gz: 2c519cd4b6fe2db1dc3b12201c8a5bd540fbf274537610069b73d34bb3e0566f
3
+ metadata.gz: 599c45c00b2a4848c83f6290b8690b81fdbfc44a6bf878ca268cfa7bc7375712
4
+ data.tar.gz: c5197cdf9e8243e817456a02ae2e9e6884e80e76329a47f471b7881473ebf37b
5
5
  SHA512:
6
- metadata.gz: b0687f10183b5472c816d433c3f654dd085b8d615ef223c54e97e61e893c47752ed20eb5b1354c7d184ab84075de3c3fa492c76191b1fc0cfdcfc48a1d661b34
7
- data.tar.gz: 3d740b872f6116bd0c59d2d1b19e405191f1c25c619e5564a602eebed3691323761292d7a063f7f224bacd668f2ede622eac085f7a5b7bad3b90570ac3b018b9
6
+ metadata.gz: b4f5ff546a1952cc8aa545f228f3312194f5220ff26599c9a75e43c39742851b7055a401d0e89cc0d1398781f833723cd6022815f4fa19ede430944aaa37a6b2
7
+ data.tar.gz: d63d04e31018467ce73fc6254bd325e66241ede1c0c0d12ac2b33db5ad268315b06dfcacf31ee9f57fc4ed5bca5c0290713a068c28525d69aa919c6cfbe8111e
data/Rakefile CHANGED
@@ -1,8 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- name = Dir["*.gemspec"].first.split(".").first
4
- version = File.read("lib/#{name}.rb")[/^\s*VERSION\s*=\s*['"](?'version'\d+\.\d+\.\d+)['"]/, "version"]
5
-
6
3
  task default: :test
7
4
 
8
5
  require "rake/testtask"
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.files = Dir["**/*"].reject { |path| File.directory?(path) || path =~ /.*\.gem$/ }
20
20
  s.test_files = s.files.select { |path| path =~ /^test\/.+_test\.rb$/ }
21
21
 
22
- s.add_development_dependency 'rake', '~> 12'
22
+ s.add_development_dependency 'rake', '~> 13'
23
23
  s.add_development_dependency 'minitest', '~> 5'
24
24
  s.add_development_dependency 'rubocop'
25
25
  s.add_development_dependency 'rubocop-discourse'
@@ -87,7 +87,7 @@ class EmbeddedEmailMatcher
87
87
  # 2013/10/2 camilohollanda <info@discourse.org>
88
88
  # вт, 5 янв. 2016 г. в 23:39, Erlend Sogge Heggen <info@discourse.org>:
89
89
  # ср, 1 апр. 2015, 18:29, Denis Didkovsky <info@discourse.org>:
90
- DATE_SOMEONE_EMAIL_REGEX = /\d{4}.{1,80}\s?<[^@<>]+@[^@<>.]+\.[^@<>]+>:?$/
90
+ DATE_SOMEONE_EMAIL_REGEX = /(?!.*<img\b)\d{4}.{1,80}\s?<[^@<>]+@[^@<>.]+\.[^@<>]+>:?$/i
91
91
 
92
92
  # codinghorror via Discourse Meta wrote:
93
93
  # codinghorror via Discourse Meta <info@discourse.org> schrieb:
@@ -8,7 +8,7 @@ require_relative "email_reply_trimmer/quote_matcher"
8
8
  require 'securerandom'
9
9
 
10
10
  class EmailReplyTrimmer
11
- VERSION = "0.2.0"
11
+ VERSION = "0.3.0"
12
12
 
13
13
  DELIMITER = "d"
14
14
  EMBEDDED = "b"
@@ -47,8 +47,13 @@ class EmailReplyTrimmer
47
47
  # remove everything after the first delimiter
48
48
  if pattern =~ /d/
49
49
  index = pattern =~ /d/
50
- pattern = pattern[0...index]
51
- lines = lines[0...index]
50
+ underscore_separator_before_embedded_email =
51
+ lines[index] =~ /\A_+\z/ && pattern[(index + 1)..-1] =~ /b/
52
+
53
+ unless underscore_separator_before_embedded_email
54
+ pattern = pattern[0...index]
55
+ lines = lines[0...index]
56
+ end
52
57
  end
53
58
 
54
59
  # remove all mobile signatures
@@ -75,7 +80,7 @@ class EmailReplyTrimmer
75
80
 
76
81
  # if there is an embedded email marker, followed by a huge quote
77
82
  # then take everything up to that marker
78
- if pattern =~ /te*b[eqbh]*([te]*)$/ && $1.count("t") < 7
83
+ if pattern =~ /te*b[eqbh]*([te]*)$/ && $1.count("t") < 7 && pattern !~ /bq[eqbh]*t/
79
84
  index = pattern =~ /te*b[eqbh]*[te]*$/
80
85
  pattern = pattern[0..index]
81
86
  lines = lines[0..index]
@@ -0,0 +1,3 @@
1
+ Am 13.05.2026 um 09:05 schrieb Vorname Nachname:
2
+ > Hier steht der alte Nachrichtentext.
3
+ > Dieser Text gehört vollständig zur alten Nachricht.
@@ -0,0 +1,6 @@
1
+ ----- Original Message -----
2
+ From: Firstname Lastname <name@example.test>
3
+ Date: July 28, 2026
4
+ Subject: Example
5
+
6
+ This is the previous message.
@@ -0,0 +1,2 @@
1
+ On July 28, 2026, Firstname Lastname wrote:
2
+ > This is the previous quoted message.
@@ -0,0 +1,2 @@
1
+ On July 28, 2026, Firstname Lastname wrote:
2
+ > This is the previous quoted message.
@@ -0,0 +1 @@
1
+ Am 13.05.2026 um 09:05 schrieb Vorname Nachname:
@@ -0,0 +1,2 @@
1
+ On July 28, 2026, Firstname Lastname wrote:
2
+ > This is the previous quoted message.
@@ -0,0 +1,10 @@
1
+ Hallo Vorname,
2
+
3
+ hier ist meine neue Antwort.
4
+
5
+ Viele Grüße
6
+ Vorname Nachname
7
+
8
+ Am 13.05.2026 um 09:05 schrieb Vorname Nachname:
9
+ > Hier steht der alte Nachrichtentext.
10
+ > Dieser Text gehört vollständig zur alten Nachricht.
@@ -0,0 +1,8 @@
1
+ This is my new reply.
2
+
3
+ ----- Original Message -----
4
+ From: Firstname Lastname <name@example.test>
5
+ Date: July 28, 2026
6
+ Subject: Example
7
+
8
+ This is the previous message.
@@ -0,0 +1,13 @@
1
+ Hello Firstname,
2
+
3
+ This is the first part of the new reply.
4
+
5
+ ________________________________________________________________________________
6
+
7
+ This is the second part of the new reply.
8
+
9
+ Best regards,
10
+ Firstname Lastname
11
+
12
+ On July 28, 2026, Firstname Lastname wrote:
13
+ > This is the previous quoted message.
@@ -0,0 +1,15 @@
1
+ Hello Firstname,
2
+
3
+ This is text before the inline image.
4
+
5
+ **Screenshot**
6
+
7
+ Image reference 2064 <img apple-inline="yes" id="A34F880A-3D2D-41B4-A4EE-22EA00C25DB3" src="cid:EBAE619D-7B1D-47E7-A652-BDB94969843A@example.test" class="">
8
+
9
+ This is text after the inline image.
10
+
11
+ Best regards,
12
+ Firstname Lastname
13
+
14
+ On July 28, 2026, Firstname Lastname wrote:
15
+ > This is the previous quoted message.
@@ -0,0 +1,9 @@
1
+ Hallo Vorname,
2
+
3
+ Am 13.05.2026 um 09:05 schrieb Vorname Nachname:
4
+ > Hier steht der zitierte Text.
5
+
6
+ Hier ist der Antworttext. Dieser wurde bisher abgeschnitten.
7
+
8
+ Viele Grüße
9
+ Vorname Nachname
@@ -0,0 +1,12 @@
1
+ Hello Firstname,
2
+
3
+ This is text before the inline images.
4
+
5
+ <img src="cid:first-image@example.test">
6
+ <img src="cid:second-image@example.test">
7
+ <img src="cid:third-image@example.test">
8
+
9
+ This is text after the inline images.
10
+
11
+ On July 28, 2026, Firstname Lastname wrote:
12
+ > This is the previous quoted message.
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  require "minitest/autorun"
3
+ require "timeout"
3
4
  require "email_reply_trimmer"
4
5
 
5
6
  class TestEmailReplyTrimmer < Minitest::Test
@@ -0,0 +1,6 @@
1
+ Hallo Vorname,
2
+
3
+ hier ist meine neue Antwort.
4
+
5
+ Viele Grüße
6
+ Vorname Nachname
@@ -0,0 +1 @@
1
+ This is my new reply.
@@ -0,0 +1,10 @@
1
+ Hello Firstname,
2
+
3
+ This is the first part of the new reply.
4
+
5
+ ________________________________________________________________________________
6
+
7
+ This is the second part of the new reply.
8
+
9
+ Best regards,
10
+ Firstname Lastname
@@ -0,0 +1,12 @@
1
+ Hello Firstname,
2
+
3
+ This is text before the inline image.
4
+
5
+ **Screenshot**
6
+
7
+ Image reference 2064 <img apple-inline="yes" id="A34F880A-3D2D-41B4-A4EE-22EA00C25DB3" src="cid:EBAE619D-7B1D-47E7-A652-BDB94969843A@example.test" class="">
8
+
9
+ This is text after the inline image.
10
+
11
+ Best regards,
12
+ Firstname Lastname
@@ -0,0 +1,8 @@
1
+ Hallo Vorname,
2
+
3
+ > Hier steht der zitierte Text.
4
+
5
+ Hier ist der Antworttext. Dieser wurde bisher abgeschnitten.
6
+
7
+ Viele Grüße
8
+ Vorname Nachname
@@ -0,0 +1,9 @@
1
+ Hello Firstname,
2
+
3
+ This is text before the inline images.
4
+
5
+ <img src="cid:first-image@example.test">
6
+ <img src="cid:second-image@example.test">
7
+ <img src="cid:third-image@example.test">
8
+
9
+ This is text after the inline images.
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: email_reply_trimmer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Régis Hanol
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-11-29 00:00:00.000000000 Z
10
+ date: 2026-07-31 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rake
@@ -16,14 +15,14 @@ dependencies:
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: '12'
18
+ version: '13'
20
19
  type: :development
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - "~>"
25
24
  - !ruby/object:Gem::Version
26
- version: '12'
25
+ version: '13'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: minitest
29
28
  requirement: !ruby/object:Gem::Requirement
@@ -75,13 +74,9 @@ extensions: []
75
74
  extra_rdoc_files: []
76
75
  files:
77
76
  - Gemfile
78
- - Gemfile.lock
79
77
  - LICENSE
80
78
  - README.md
81
79
  - Rakefile
82
- - devenv.lock
83
- - devenv.nix
84
- - devenv.yaml
85
80
  - email_reply_trimmer.gemspec
86
81
  - lib/email_reply_trimmer.rb
87
82
  - lib/email_reply_trimmer/delimiter_matcher.rb
@@ -101,6 +96,9 @@ files:
101
96
  - test/before/forwarded_gmail.txt
102
97
  - test/before/forwarded_message.txt
103
98
  - test/elided/block_code_spacers.txt
99
+ - test/elided/complete_german_quote_at_end.txt
100
+ - test/elided/delimiter_before_forwarded_message.txt
101
+ - test/elided/delimiter_inside_new_reply.txt
104
102
  - test/elided/delimiters.txt
105
103
  - test/elided/dual_embedded.txt
106
104
  - test/elided/email_headers_1.txt
@@ -154,10 +152,13 @@ files:
154
152
  - test/elided/forwarded_apple.txt
155
153
  - test/elided/forwarded_gmail.txt
156
154
  - test/elided/forwarded_message.txt
155
+ - test/elided/inline_images_before_reply_text.txt
157
156
  - test/elided/normalize_line_endings.txt
158
157
  - test/elided/quote_and_text.txt
159
158
  - test/elided/quote_only.txt
159
+ - test/elided/reply_after_selected_german_quote.txt
160
160
  - test/elided/retains_spaces_and_formatting.txt
161
+ - test/elided/separate_inline_images_before_reply_text.txt
161
162
  - test/elided/signatures.txt
162
163
  - test/elided/spam_1.txt
163
164
  - test/elided/spam_2.txt
@@ -165,6 +166,9 @@ files:
165
166
  - test/elided/text_only.txt
166
167
  - test/elided/usenet.txt
167
168
  - test/emails/block_code_spacers.txt
169
+ - test/emails/complete_german_quote_at_end.txt
170
+ - test/emails/delimiter_before_forwarded_message.txt
171
+ - test/emails/delimiter_inside_new_reply.txt
168
172
  - test/emails/delimiters.txt
169
173
  - test/emails/dual_embedded.txt
170
174
  - test/emails/email_headers_1.txt
@@ -218,10 +222,13 @@ files:
218
222
  - test/emails/forwarded_apple.txt
219
223
  - test/emails/forwarded_gmail.txt
220
224
  - test/emails/forwarded_message.txt
225
+ - test/emails/inline_images_before_reply_text.txt
221
226
  - test/emails/normalize_line_endings.txt
222
227
  - test/emails/quote_and_text.txt
223
228
  - test/emails/quote_only.txt
229
+ - test/emails/reply_after_selected_german_quote.txt
224
230
  - test/emails/retains_spaces_and_formatting.txt
231
+ - test/emails/separate_inline_images_before_reply_text.txt
225
232
  - test/emails/signatures.txt
226
233
  - test/emails/spam_1.txt
227
234
  - test/emails/spam_2.txt
@@ -242,6 +249,9 @@ files:
242
249
  - test/test_email_matcher.rb
243
250
  - test/test_email_reply_trimmer.rb
244
251
  - test/trimmed/block_code_spacers.txt
252
+ - test/trimmed/complete_german_quote_at_end.txt
253
+ - test/trimmed/delimiter_before_forwarded_message.txt
254
+ - test/trimmed/delimiter_inside_new_reply.txt
245
255
  - test/trimmed/delimiters.txt
246
256
  - test/trimmed/dual_embedded.txt
247
257
  - test/trimmed/email_headers_1.txt
@@ -295,10 +305,13 @@ files:
295
305
  - test/trimmed/forwarded_apple.txt
296
306
  - test/trimmed/forwarded_gmail.txt
297
307
  - test/trimmed/forwarded_message.txt
308
+ - test/trimmed/inline_images_before_reply_text.txt
298
309
  - test/trimmed/normalize_line_endings.txt
299
310
  - test/trimmed/quote_and_text.txt
300
311
  - test/trimmed/quote_only.txt
312
+ - test/trimmed/reply_after_selected_german_quote.txt
301
313
  - test/trimmed/retains_spaces_and_formatting.txt
314
+ - test/trimmed/separate_inline_images_before_reply_text.txt
302
315
  - test/trimmed/signatures.txt
303
316
  - test/trimmed/spam_1.txt
304
317
  - test/trimmed/spam_2.txt
@@ -309,7 +322,6 @@ homepage: https://github.com/discourse/email_reply_trimmer
309
322
  licenses:
310
323
  - MIT
311
324
  metadata: {}
312
- post_install_message:
313
325
  rdoc_options: []
314
326
  require_paths:
315
327
  - lib
@@ -324,8 +336,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
324
336
  - !ruby/object:Gem::Version
325
337
  version: '0'
326
338
  requirements: []
327
- rubygems_version: 3.4.19
328
- signing_key:
339
+ rubygems_version: 4.0.10
329
340
  specification_version: 4
330
341
  summary: Library to trim replies from plain text email.
331
342
  test_files: []
data/Gemfile.lock DELETED
@@ -1,98 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- email_reply_trimmer (0.2.0)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- activesupport (8.0.0)
10
- base64
11
- benchmark (>= 0.3)
12
- bigdecimal
13
- concurrent-ruby (~> 1.0, >= 1.3.1)
14
- connection_pool (>= 2.2.5)
15
- drb
16
- i18n (>= 1.6, < 2)
17
- logger (>= 1.4.2)
18
- minitest (>= 5.1)
19
- securerandom (>= 0.3)
20
- tzinfo (~> 2.0, >= 2.0.5)
21
- uri (>= 0.13.1)
22
- ast (2.4.2)
23
- base64 (0.2.0)
24
- benchmark (0.4.0)
25
- bigdecimal (3.1.8)
26
- concurrent-ruby (1.3.4)
27
- connection_pool (2.4.1)
28
- drb (2.2.1)
29
- i18n (1.14.6)
30
- concurrent-ruby (~> 1.0)
31
- json (2.8.2)
32
- language_server-protocol (3.17.0.3)
33
- logger (1.6.1)
34
- minitest (5.25.2)
35
- parallel (1.26.3)
36
- parser (3.3.6.0)
37
- ast (~> 2.4.1)
38
- racc
39
- racc (1.8.1)
40
- rack (3.1.8)
41
- rainbow (3.1.1)
42
- rake (12.3.3)
43
- regexp_parser (2.9.2)
44
- rubocop (1.69.0)
45
- json (~> 2.3)
46
- language_server-protocol (>= 3.17.0)
47
- parallel (~> 1.10)
48
- parser (>= 3.3.0.2)
49
- rainbow (>= 2.2.2, < 4.0)
50
- regexp_parser (>= 2.4, < 3.0)
51
- rubocop-ast (>= 1.36.1, < 2.0)
52
- ruby-progressbar (~> 1.7)
53
- unicode-display_width (>= 2.4.0, < 4.0)
54
- rubocop-ast (1.36.2)
55
- parser (>= 3.3.1.0)
56
- rubocop-capybara (2.21.0)
57
- rubocop (~> 1.41)
58
- rubocop-discourse (3.8.6)
59
- activesupport (>= 6.1)
60
- rubocop (>= 1.59.0)
61
- rubocop-capybara (>= 2.0.0)
62
- rubocop-factory_bot (>= 2.0.0)
63
- rubocop-rails (>= 2.25.0)
64
- rubocop-rspec (>= 3.0.1)
65
- rubocop-rspec_rails (>= 2.30.0)
66
- rubocop-factory_bot (2.26.1)
67
- rubocop (~> 1.61)
68
- rubocop-rails (2.27.0)
69
- activesupport (>= 4.2.0)
70
- rack (>= 1.1)
71
- rubocop (>= 1.52.0, < 2.0)
72
- rubocop-ast (>= 1.31.1, < 2.0)
73
- rubocop-rspec (3.2.0)
74
- rubocop (~> 1.61)
75
- rubocop-rspec_rails (2.30.0)
76
- rubocop (~> 1.61)
77
- rubocop-rspec (~> 3, >= 3.0.1)
78
- ruby-progressbar (1.13.0)
79
- securerandom (0.3.2)
80
- tzinfo (2.0.6)
81
- concurrent-ruby (~> 1.0)
82
- unicode-display_width (3.1.2)
83
- unicode-emoji (~> 4.0, >= 4.0.4)
84
- unicode-emoji (4.0.4)
85
- uri (1.0.2)
86
-
87
- PLATFORMS
88
- ruby
89
-
90
- DEPENDENCIES
91
- email_reply_trimmer!
92
- minitest (~> 5)
93
- rake (~> 12)
94
- rubocop
95
- rubocop-discourse
96
-
97
- BUNDLED WITH
98
- 2.5.22
data/devenv.lock DELETED
@@ -1,184 +0,0 @@
1
- {
2
- "nodes": {
3
- "devenv": {
4
- "locked": {
5
- "dir": "src/modules",
6
- "lastModified": 1732830318,
7
- "owner": "cachix",
8
- "repo": "devenv",
9
- "rev": "51abcb75d471a215c800937d4e30dc765d305c6d",
10
- "type": "github"
11
- },
12
- "original": {
13
- "dir": "src/modules",
14
- "owner": "cachix",
15
- "repo": "devenv",
16
- "type": "github"
17
- }
18
- },
19
- "flake-compat": {
20
- "flake": false,
21
- "locked": {
22
- "lastModified": 1732722421,
23
- "owner": "edolstra",
24
- "repo": "flake-compat",
25
- "rev": "9ed2ac151eada2306ca8c418ebd97807bb08f6ac",
26
- "type": "github"
27
- },
28
- "original": {
29
- "owner": "edolstra",
30
- "repo": "flake-compat",
31
- "type": "github"
32
- }
33
- },
34
- "flake-compat_2": {
35
- "flake": false,
36
- "locked": {
37
- "lastModified": 1732722421,
38
- "owner": "edolstra",
39
- "repo": "flake-compat",
40
- "rev": "9ed2ac151eada2306ca8c418ebd97807bb08f6ac",
41
- "type": "github"
42
- },
43
- "original": {
44
- "owner": "edolstra",
45
- "repo": "flake-compat",
46
- "type": "github"
47
- }
48
- },
49
- "flake-utils": {
50
- "inputs": {
51
- "systems": "systems"
52
- },
53
- "locked": {
54
- "lastModified": 1731533236,
55
- "owner": "numtide",
56
- "repo": "flake-utils",
57
- "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
58
- "type": "github"
59
- },
60
- "original": {
61
- "owner": "numtide",
62
- "repo": "flake-utils",
63
- "type": "github"
64
- }
65
- },
66
- "gitignore": {
67
- "inputs": {
68
- "nixpkgs": [
69
- "pre-commit-hooks",
70
- "nixpkgs"
71
- ]
72
- },
73
- "locked": {
74
- "lastModified": 1709087332,
75
- "owner": "hercules-ci",
76
- "repo": "gitignore.nix",
77
- "rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
78
- "type": "github"
79
- },
80
- "original": {
81
- "owner": "hercules-ci",
82
- "repo": "gitignore.nix",
83
- "type": "github"
84
- }
85
- },
86
- "nixpkgs": {
87
- "locked": {
88
- "lastModified": 1732617236,
89
- "owner": "nixos",
90
- "repo": "nixpkgs",
91
- "rev": "af51545ec9a44eadf3fe3547610a5cdd882bc34e",
92
- "type": "github"
93
- },
94
- "original": {
95
- "owner": "nixos",
96
- "ref": "nixpkgs-unstable",
97
- "repo": "nixpkgs",
98
- "type": "github"
99
- }
100
- },
101
- "nixpkgs-ruby": {
102
- "inputs": {
103
- "flake-compat": "flake-compat",
104
- "flake-utils": "flake-utils",
105
- "nixpkgs": [
106
- "nixpkgs"
107
- ]
108
- },
109
- "locked": {
110
- "lastModified": 1730958464,
111
- "owner": "bobvanderlinden",
112
- "repo": "nixpkgs-ruby",
113
- "rev": "93bd040be2856ba0e44a33db6360e8c9c0c09aa1",
114
- "type": "github"
115
- },
116
- "original": {
117
- "owner": "bobvanderlinden",
118
- "repo": "nixpkgs-ruby",
119
- "type": "github"
120
- }
121
- },
122
- "nixpkgs-stable": {
123
- "locked": {
124
- "lastModified": 1732749044,
125
- "owner": "NixOS",
126
- "repo": "nixpkgs",
127
- "rev": "0c5b4ecbed5b155b705336aa96d878e55acd8685",
128
- "type": "github"
129
- },
130
- "original": {
131
- "owner": "NixOS",
132
- "ref": "nixos-24.05",
133
- "repo": "nixpkgs",
134
- "type": "github"
135
- }
136
- },
137
- "pre-commit-hooks": {
138
- "inputs": {
139
- "flake-compat": "flake-compat_2",
140
- "gitignore": "gitignore",
141
- "nixpkgs": [
142
- "nixpkgs"
143
- ],
144
- "nixpkgs-stable": "nixpkgs-stable"
145
- },
146
- "locked": {
147
- "lastModified": 1732021966,
148
- "owner": "cachix",
149
- "repo": "pre-commit-hooks.nix",
150
- "rev": "3308484d1a443fc5bc92012435d79e80458fe43c",
151
- "type": "github"
152
- },
153
- "original": {
154
- "owner": "cachix",
155
- "repo": "pre-commit-hooks.nix",
156
- "type": "github"
157
- }
158
- },
159
- "root": {
160
- "inputs": {
161
- "devenv": "devenv",
162
- "nixpkgs": "nixpkgs",
163
- "nixpkgs-ruby": "nixpkgs-ruby",
164
- "pre-commit-hooks": "pre-commit-hooks"
165
- }
166
- },
167
- "systems": {
168
- "locked": {
169
- "lastModified": 1681028828,
170
- "owner": "nix-systems",
171
- "repo": "default",
172
- "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
173
- "type": "github"
174
- },
175
- "original": {
176
- "owner": "nix-systems",
177
- "repo": "default",
178
- "type": "github"
179
- }
180
- }
181
- },
182
- "root": "root",
183
- "version": 7
184
- }
data/devenv.nix DELETED
@@ -1,4 +0,0 @@
1
- {
2
- languages.ruby.enable = true;
3
- languages.ruby.version = "3.2";
4
- }
data/devenv.yaml DELETED
@@ -1,8 +0,0 @@
1
- inputs:
2
- nixpkgs-ruby:
3
- url: github:bobvanderlinden/nixpkgs-ruby
4
- inputs:
5
- nixpkgs:
6
- follows: nixpkgs
7
- nixpkgs:
8
- url: github:nixos/nixpkgs/nixpkgs-unstable