relaton 3.0.0.pre.alpha.9 → 3.0.0.pre.alpha.11

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: 2c1a04ce086b4f13d9ec8c448b4254cd3f4bc0399d0d1b4892e2201f45717f4c
4
- data.tar.gz: f5a8286c7313b4f47a131290923ad2d23082cd51fb492f20555d859f38375cfd
3
+ metadata.gz: 7364dc37a276ca9af4698a8c2dfccca8a38c4b8fe02718d0a48938ae0c50e68e
4
+ data.tar.gz: 5129ad6ec6692247d87022f7774edc9b8f0bac4cc2668309ffc87302e75af3eb
5
5
  SHA512:
6
- metadata.gz: 63355667dfc69e951fd03842f8b3769dae41ffce420b4deb21349dac2a035db489b17c808d9c6b8c478f324c15715c1d6cbc7d00422f47f46d649443ea9f3a63
7
- data.tar.gz: bbe9885dd3811d1004a2048dd0dd88846ded2075ca21f26fe7b32f5286d63f5a014b83f0fd681bd9db61400f54bc3fabc9ec4998d791bcac578be07cfe290645
6
+ metadata.gz: 7ac0f564a402d64872ac1261ae71c733e3bffc6b5f0755e846358df24c27ec6cbc1b9b2a7fe4090d7d57d65f384a85d5fffd7a07865307a3bcbb6905070df778
7
+ data.tar.gz: f2c3876e14d876d5b172e7ecd1b65d3b1a100c2716fce4ee5628984f23ce5c4b5203b847f3a56cc6b222bd0866dca2f87483c92ad2538488781c48fed778d1f6
@@ -3,6 +3,7 @@ require "digest"
3
3
  require "json"
4
4
  require "date"
5
5
  require "lutaml/store"
6
+ require "nokogiri"
6
7
  require_relative "cache_entry"
7
8
 
8
9
  module Relaton
@@ -52,6 +53,7 @@ module Relaton
52
53
  archive_old_layout
53
54
  open_stores
54
55
  check_versions
56
+ import_old_layout
55
57
  end
56
58
 
57
59
  # Move the cache to another directory.
@@ -308,6 +310,41 @@ module Relaton
308
310
  Util.info "cache #{dir}: the old cache is moved to #{bak}"
309
311
  end
310
312
 
313
+ # Entries the file-per-key layout cached are imported into the v2
314
+ # stores once, so upgrading does not silently refetch them (relaton#240).
315
+ # A key the v2 cache already holds keeps its fresher entry; not-found
316
+ # and redirection entries are not imported (a negative lookup costs one
317
+ # fetch, and redirects were dropped from the v2 model).
318
+ def import_old_layout
319
+ bak = "#{dir}-v1.bak"
320
+ marker = File.join(dir, LAYOUT, ".v1-imported")
321
+ return if File.exist?(marker) || !Dir.exist?(bak)
322
+
323
+ imported = 0
324
+ Dir.glob("#{bak}/**/*.xml").each do |f|
325
+ value = File.read(f, encoding: "utf-8")
326
+ key = old_layout_key(f.delete_prefix("#{bak}/"), value) or next
327
+ next if lookup(key)
328
+
329
+ self[key] = value
330
+ imported += 1
331
+ end
332
+ FileUtils.touch marker
333
+ Util.info "cache #{dir}: imported #{imported} entries from #{bak}"
334
+ end
335
+
336
+ # The wrapped string key of an old-layout document: its own primary
337
+ # docidentifier under its flavor prefix, resolved through the same
338
+ # `wrapped_key` path a string cache read takes.
339
+ def old_layout_key(path, value)
340
+ flavor = path.split("/").first or return
341
+ doc = Nokogiri::XML(value)
342
+ id = doc.root&.at("./docidentifier[@primary = 'true']") ||
343
+ doc.root&.at("./docidentifier") or return
344
+
345
+ "#{flavor.upcase}(#{id.text.strip})"
346
+ end
347
+
311
348
  # Drop the rows and documents of a flavor whose grammar changed since
312
349
  # they were written.
313
350
  def check_versions
@@ -1,3 +1,3 @@
1
1
  module Relaton
2
- VERSION = "3.0.0.pre.alpha.9".freeze
2
+ VERSION = "3.0.0.pre.alpha.11".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.pre.alpha.9
4
+ version: 3.0.0.pre.alpha.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-10-03 00:00:00.000000000 Z
11
+ date: 2026-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -468,16 +468,22 @@ dependencies:
468
468
  name: relaton-render
469
469
  requirement: !ruby/object:Gem::Requirement
470
470
  requirements:
471
- - - "~>"
471
+ - - ">="
472
+ - !ruby/object:Gem::Version
473
+ version: 3.0.0.pre.alpha.1
474
+ - - "<"
472
475
  - !ruby/object:Gem::Version
473
- version: 1.4.0.pre.alpha.1
476
+ version: '4'
474
477
  type: :runtime
475
478
  prerelease: false
476
479
  version_requirements: !ruby/object:Gem::Requirement
477
480
  requirements:
478
- - - "~>"
481
+ - - ">="
482
+ - !ruby/object:Gem::Version
483
+ version: 3.0.0.pre.alpha.1
484
+ - - "<"
479
485
  - !ruby/object:Gem::Version
480
- version: 1.4.0.pre.alpha.1
486
+ version: '4'
481
487
  - !ruby/object:Gem::Dependency
482
488
  name: rfcxml
483
489
  requirement: !ruby/object:Gem::Requirement