relaton-ccsds 1.19.0 → 1.20.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 +4 -4
- data/lib/relaton_ccsds/data_fetcher.rb +27 -11
- data/lib/relaton_ccsds/data_parser.rb +5 -1
- data/lib/relaton_ccsds/hit_collection.rb +9 -3
- data/lib/relaton_ccsds/version.rb +1 -1
- data/lib/relaton_ccsds.rb +1 -0
- data/relaton_ccsds.gemspec +2 -2
- metadata +18 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 5dbc82b9af321507bb207dc43ecb39b7ab7704f167f479fd3a6170cd3f5283e1
         | 
| 4 | 
            +
              data.tar.gz: 22633dcbb3b00c5082f5e1db82a7c693ba915ffafa16abead42d62d7b3209252
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 1267cd4023932a5702bcbd5c6efbaca487d74b26659de634da34f6620d42805f70d8ef6e12e484a00dff6ffeb23bb5c46c0e5f53d2d7a5df231c77f341bbe287
         | 
| 7 | 
            +
              data.tar.gz: 13d9d28ba550bf1a4da1bd62a35f0db7a3eb70d690edab271fae33bc68610995e23833ef41a7a8f2dcdf7a76c7d1eb1fb93dcbf8c4bd43b617c53ab8e7ec6836
         | 
| @@ -39,7 +39,11 @@ module RelatonCcsds | |
| 39 39 | 
             
                end
         | 
| 40 40 |  | 
| 41 41 | 
             
                def index
         | 
| 42 | 
            -
                  @index ||= Relaton::Index.find_or_create "CCSDS", file: "index- | 
| 42 | 
            +
                  @index ||= Relaton::Index.find_or_create "CCSDS", file: "index-v2.yaml", pubid_class: Pubid::Ccsds::Identifier
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                def old_index
         | 
| 46 | 
            +
                  @old_index ||= Relaton::Index.find_or_create "CCSDS", file: "index-v1.yaml"
         | 
| 43 47 | 
             
                end
         | 
| 44 48 |  | 
| 45 49 | 
             
                #
         | 
| @@ -64,6 +68,7 @@ module RelatonCcsds | |
| 64 68 | 
             
                  fetch_docs ACTIVE_PUBS_URL
         | 
| 65 69 | 
             
                  fetch_docs OBSOLETE_PUBS_URL, retired: true
         | 
| 66 70 | 
             
                  index.save
         | 
| 71 | 
            +
                  old_index.save
         | 
| 67 72 | 
             
                end
         | 
| 68 73 |  | 
| 69 74 | 
             
                #
         | 
| @@ -100,6 +105,10 @@ module RelatonCcsds | |
| 100 105 | 
             
                  save_bib bibitem
         | 
| 101 106 | 
             
                end
         | 
| 102 107 |  | 
| 108 | 
            +
                def get_output_file(id)
         | 
| 109 | 
            +
                  File.join @output, "#{id.gsub(/[.\s-]+/, '-')}.#{@ext}"
         | 
| 110 | 
            +
                end
         | 
| 111 | 
            +
             | 
| 103 112 | 
             
                #
         | 
| 104 113 | 
             
                # Save bibitem to file
         | 
| 105 114 | 
             
                #
         | 
| @@ -109,15 +118,11 @@ module RelatonCcsds | |
| 109 118 | 
             
                #
         | 
| 110 119 | 
             
                def save_bib(bib)
         | 
| 111 120 | 
             
                  search_instance_translation bib
         | 
| 112 | 
            -
                   | 
| 113 | 
            -
                   | 
| 114 | 
            -
                  if @files.include?(file)
         | 
| 115 | 
            -
                    Util.info "(#{file}) file already exists. Trying to merge links ..."
         | 
| 116 | 
            -
                    merge_links bib, file
         | 
| 117 | 
            -
                  else @files << file
         | 
| 118 | 
            -
                  end
         | 
| 121 | 
            +
                  file = get_output_file(bib.docidentifier.first.id)
         | 
| 122 | 
            +
                  merge_links bib, file
         | 
| 119 123 | 
             
                  File.write file, content(bib), encoding: "UTF-8"
         | 
| 120 | 
            -
                  index.add_or_update id, file
         | 
| 124 | 
            +
                  index.add_or_update Pubid::Ccsds::Identifier.parse(bib.docidentifier.first.id), file
         | 
| 125 | 
            +
                  old_index.add_or_update bib.docidentifier.first.id, file
         | 
| 121 126 | 
             
                end
         | 
| 122 127 |  | 
| 123 128 | 
             
                #
         | 
| @@ -146,7 +151,8 @@ module RelatonCcsds | |
| 146 151 | 
             
                #
         | 
| 147 152 | 
             
                def search_relations(bibid, bib)
         | 
| 148 153 | 
             
                  index.search do |row|
         | 
| 149 | 
            -
                    id = row[:id]. | 
| 154 | 
            +
                    id = row[:id].exclude(:language)
         | 
| 155 | 
            +
                    # TODO: smiplify this line?
         | 
| 150 156 | 
             
                    next if id != bibid || row[:id] == bib.docidentifier.first.id
         | 
| 151 157 |  | 
| 152 158 | 
             
                    create_relations bib, row[:file]
         | 
| @@ -154,8 +160,10 @@ module RelatonCcsds | |
| 154 160 | 
             
                end
         | 
| 155 161 |  | 
| 156 162 | 
             
                def search_translations(bibid, bib)
         | 
| 163 | 
            +
                  # will call create_instance_relation if
         | 
| 164 | 
            +
                  # there are same identifiers in index but with word "Translated"
         | 
| 157 165 | 
             
                  index.search do |row|
         | 
| 158 | 
            -
                    next unless row[:id]. | 
| 166 | 
            +
                    next unless row[:id].language && row[:id].exclude(:language) == bibid
         | 
| 159 167 |  | 
| 160 168 | 
             
                    create_instance_relation bib, row[:file]
         | 
| 161 169 | 
             
                  end
         | 
| @@ -232,6 +240,14 @@ module RelatonCcsds | |
| 232 240 | 
             
                # @return [void]
         | 
| 233 241 | 
             
                #
         | 
| 234 242 | 
             
                def merge_links(bib, file) # rubocop:disable Metrics/AbcSize
         | 
| 243 | 
            +
                  # skip merging when new file
         | 
| 244 | 
            +
                  unless @files.include?(file)
         | 
| 245 | 
            +
                    @files << file
         | 
| 246 | 
            +
                    return
         | 
| 247 | 
            +
                  end
         | 
| 248 | 
            +
             | 
| 249 | 
            +
                  puts "(#{file}) file already exists. Trying to merge links ..."
         | 
| 250 | 
            +
             | 
| 235 251 | 
             
                  hash = YAML.load_file file
         | 
| 236 252 | 
             
                  bib2 = BibliographicItem.from_hash hash
         | 
| 237 253 | 
             
                  if bib.link[0].type == bib2.link[0].type
         | 
| @@ -38,7 +38,10 @@ module RelatonCcsds | |
| 38 38 | 
             
                end
         | 
| 39 39 |  | 
| 40 40 | 
             
                def parse_docid
         | 
| 41 | 
            -
                  [RelatonBib::DocumentIdentifier.new( | 
| 41 | 
            +
                  [RelatonBib::DocumentIdentifier.new(
         | 
| 42 | 
            +
                    id: docidentifier,
         | 
| 43 | 
            +
                    type: "CCSDS", primary: true
         | 
| 44 | 
            +
                  )]
         | 
| 42 45 | 
             
                end
         | 
| 43 46 |  | 
| 44 47 | 
             
                def docidentifier(id = nil)
         | 
| @@ -104,6 +107,7 @@ module RelatonCcsds | |
| 104 107 | 
             
                  [create_relation("hasSuccessor", @successor.docidentifier[0].id)]
         | 
| 105 108 | 
             
                end
         | 
| 106 109 |  | 
| 110 | 
            +
                # TODO: cover this
         | 
| 107 111 | 
             
                def relation_type(rel_id)
         | 
| 108 112 | 
             
                  return if rel_id == docidentifier ||
         | 
| 109 113 | 
             
                    rel_id.match(DataFetcher::TRRGX).to_s != docidentifier.match(DataFetcher::TRRGX).to_s
         | 
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            module RelatonCcsds
         | 
| 2 2 | 
             
              class HitCollection < RelatonBib::HitCollection
         | 
| 3 3 | 
             
                GHURL = "https://raw.githubusercontent.com/relaton/relaton-data-ccsds/main/".freeze
         | 
| 4 | 
            -
                INDEX_FILE = "index- | 
| 4 | 
            +
                INDEX_FILE = "index-v2.yaml".freeze
         | 
| 5 5 |  | 
| 6 6 | 
             
                #
         | 
| 7 7 | 
             
                # Search his in index.
         | 
| @@ -9,7 +9,13 @@ module RelatonCcsds | |
| 9 9 | 
             
                # @return [<Type>] <description>
         | 
| 10 10 | 
             
                #
         | 
| 11 11 | 
             
                def fetch
         | 
| 12 | 
            -
                   | 
| 12 | 
            +
                  pubid = Pubid::Ccsds::Identifier.parse(text)
         | 
| 13 | 
            +
                  rows = if pubid.edition
         | 
| 14 | 
            +
                           index.search(pubid)
         | 
| 15 | 
            +
                           # index.search { |r| Pubid::Ccsds::Identifier.create(**r[:id]) == pubid }
         | 
| 16 | 
            +
                         else
         | 
| 17 | 
            +
                           index.search { |r| r[:id].exclude(:edition) == pubid }
         | 
| 18 | 
            +
                         end
         | 
| 13 19 | 
             
                  @array = rows.map { |row| Hit.new code: row[:id], url: "#{GHURL}#{row[:file]}" }
         | 
| 14 20 | 
             
                  self
         | 
| 15 21 | 
             
                rescue SocketError, OpenURI::HTTPError, OpenSSL::SSL::SSLError, Errno::ECONNRESET => e
         | 
| @@ -17,7 +23,7 @@ module RelatonCcsds | |
| 17 23 | 
             
                end
         | 
| 18 24 |  | 
| 19 25 | 
             
                def index
         | 
| 20 | 
            -
                  @index ||= Relaton::Index.find_or_create :ccsds, url: "#{GHURL}index- | 
| 26 | 
            +
                  @index ||= Relaton::Index.find_or_create :ccsds, url: "#{GHURL}index-v2.zip", file: INDEX_FILE
         | 
| 21 27 | 
             
                end
         | 
| 22 28 | 
             
              end
         | 
| 23 29 | 
             
            end
         | 
    
        data/lib/relaton_ccsds.rb
    CHANGED
    
    
    
        data/relaton_ccsds.gemspec
    CHANGED
    
    | @@ -26,8 +26,8 @@ Gem::Specification.new do |spec| | |
| 26 26 | 
             
              # Uncomment to register a new dependency of your gem
         | 
| 27 27 | 
             
              spec.add_dependency "mechanize", "~> 2.10"
         | 
| 28 28 | 
             
              spec.add_dependency "relaton-bib", "~> 1.19.0"
         | 
| 29 | 
            -
              spec.add_dependency "relaton-index", "~> 0.2. | 
| 30 | 
            -
             | 
| 29 | 
            +
              spec.add_dependency "relaton-index", "~> 0.2.13"
         | 
| 30 | 
            +
              spec.add_dependency "pubid-ccsds", "~> 0.1.6"
         | 
| 31 31 | 
             
              # For more information and examples about making a new gem, check out our
         | 
| 32 32 | 
             
              # guide at: https://bundler.io/guides/creating_gem.html
         | 
| 33 33 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: relaton-ccsds
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.20.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ribose Inc.
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2024- | 
| 11 | 
            +
            date: 2024-08-13 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: mechanize
         | 
| @@ -44,14 +44,28 @@ dependencies: | |
| 44 44 | 
             
                requirements:
         | 
| 45 45 | 
             
                - - "~>"
         | 
| 46 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: 0.2. | 
| 47 | 
            +
                    version: 0.2.13
         | 
| 48 48 | 
             
              type: :runtime
         | 
| 49 49 | 
             
              prerelease: false
         | 
| 50 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 52 | 
             
                - - "~>"
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: 0.2. | 
| 54 | 
            +
                    version: 0.2.13
         | 
| 55 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            +
              name: pubid-ccsds
         | 
| 57 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                requirements:
         | 
| 59 | 
            +
                - - "~>"
         | 
| 60 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                    version: 0.1.6
         | 
| 62 | 
            +
              type: :runtime
         | 
| 63 | 
            +
              prerelease: false
         | 
| 64 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - "~>"
         | 
| 67 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            +
                    version: 0.1.6
         | 
| 55 69 | 
             
            description: 'RelatonCcsds: retrive www.ccsds.org Standards'
         | 
| 56 70 | 
             
            email:
         | 
| 57 71 | 
             
            - open.source@ribose.com
         |