relaton-core 0.0.6 → 0.0.7

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: '029541c567e8114687cb5ab9a34e59e7a89c565e93cd02a8c4448ccd96d03a5e'
4
- data.tar.gz: 8835cc8d8e6f8870b76fe4b030a72eb67e1e6b91bbeeb72f852adbfdcd0a1c58
3
+ metadata.gz: f5e577ce6b7bd03695e1d1b0a30206582dcfbd95577280e10fd30dfc182788cf
4
+ data.tar.gz: 76f118cf584b6b490beca90edc36be8f042e7f873a755fc33f4d9d502b2957ef
5
5
  SHA512:
6
- metadata.gz: 0a2b3deb9ddbc34ac6f258717b8e82380e742011a04b2df03fd837dc35ed7f4e297795a36e7758d165006f39e78a07d3a662ea43e3e554954bd86eb2b88943c7
7
- data.tar.gz: 883d00118152aa02db01bfc506db8d7de8a5e51fbe609ffe29d4b496d6eaf377c9825ae3c6cc10a7d8951b4cde0a13cbcbf6485021f0d1a6abb41f8d35fcd535
6
+ metadata.gz: 44a0a810b3cbbf1132e870ae9a771c83430453b66fa9bc7d82b4afe24dbd47b812a8e928c3ced3a619b09de82d21c77d7a20ca9c1c659469639af38fdb248516
7
+ data.tar.gz: f79cb7c702bd5c3e9d25fae67cadd7c7ec22d016aef9eefef480278330bcaa789c41be1530998cec235b0deffaeddb2c5a6c8d48fb66117e7662f4de83b232f3
@@ -0,0 +1,20 @@
1
+ module Relaton
2
+ module Core
3
+ module ArrayWrapper
4
+ #
5
+ # Wrap into Array if not Array
6
+ #
7
+ # @param [Object] content
8
+ #
9
+ # @return [Array<Object>]
10
+ #
11
+ def array(content)
12
+ case content
13
+ when Array then content
14
+ when nil then []
15
+ else [content]
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,42 @@
1
+ module Relaton
2
+ module Core
3
+ module DateParser
4
+ # @param date [String, Integer, Date] date
5
+ # @param str [Boolean] return string or Date
6
+ # @return [Date, String, nil] date
7
+ def parse_date(date, str: true) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/MethodLength
8
+ return date if date.is_a?(Date)
9
+
10
+ case date.to_s
11
+ when /(?<date>\w+\s\d{4})/ # February 2012
12
+ format_date $~[:date], "%B %Y", str, "%Y-%m"
13
+ when /(?<date>\w+\s\d{1,2},\s\d{4})/ # February 11, 2012
14
+ format_date $~[:date], "%B %d, %Y", str, "%Y-%m-%d"
15
+ when /(?<date>\d{4}-\d{1,2}-\d{1,2})/ # 2012-02-03 or 2012-2-3
16
+ format_date $~[:date], "%Y-%m-%d", str
17
+ when /(?<date>\d{4}-\d{1,2})/ # 2012-02 or 2012-2
18
+ format_date $~[:date], "%Y-%m", str
19
+ when /(?<date>\d{4})/ # 2012
20
+ format_date $~[:date], "%Y", str
21
+ end
22
+ end
23
+
24
+ private
25
+
26
+ #
27
+ # Parse date string to Date object and format it
28
+ #
29
+ # @param [String] date date string
30
+ # @param [String] format format string
31
+ # @param [Boolean] str return string if true in other case return Date
32
+ # @param [String, nil] outformat output format
33
+ #
34
+ # @return [Date, String] date object or formatted date string
35
+ #
36
+ def format_date(date, format, str, outformat = nil)
37
+ date = Date.strptime(date, format)
38
+ str ? date.strftime(outformat || format) : date
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,19 @@
1
+ module Relaton
2
+ module Core
3
+ module HashKeysSymbolizer
4
+ def symbolize_hash_keys(obj)
5
+ case obj
6
+ when Array
7
+ obj.map { |e| symbolize_hash_keys(e) }
8
+ when Hash
9
+ obj.each_with_object({}) do |(k, v), h|
10
+ key = k.is_a?(String) ? k.to_sym : k
11
+ h[key] = symbolize_hash_keys(v)
12
+ end
13
+ else
14
+ obj
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -24,10 +24,9 @@ module Relaton
24
24
  # @return [String]
25
25
  def inspect
26
26
  "<#{self.class}:#{format('%<id>#.14x', id: object_id << 1)} " \
27
- "@text=\"#{@hit_collection&.text}\" " \
28
- "@fetched=\"#{!@fetch.nil?}\" " \
29
- "@fullIdentifier=\"#{@fetch&.shortref(nil)}\" " \
30
- "@title=\"#{@hit[:code]}\">"
27
+ "@reference=\"#{@hit_collection&.ref}\" " \
28
+ "@fetched=\"#{fetched?}\" " \
29
+ "@docidentifier=\"#{@hit[:code]}\">"
31
30
  end
32
31
 
33
32
  # @return [RelatonBib::ItemData]
@@ -35,6 +34,10 @@ module Relaton
35
34
  raise "Not implemented"
36
35
  end
37
36
 
37
+ def fetched?
38
+ !@item.nil?
39
+ end
40
+
38
41
  # @param opts [Hash]
39
42
  # @option opts [Nokogiri::XML::Builder] :builder XML builder
40
43
  # @option opts [Boolean] :bibdata
@@ -1,5 +1,5 @@
1
1
  module Relaton
2
2
  module Core
3
- VERSION = "0.0.6".freeze
3
+ VERSION = "0.0.7".freeze
4
4
  end
5
5
  end
data/lib/relaton/core.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  require "relaton/logger"
2
2
  require_relative "core/version"
3
+ require_relative "core/array_wrapper"
4
+ require_relative "core/hash_keys_sybolizer"
5
+ require_relative "core/date_parser"
3
6
  require_relative "core/processor"
4
7
  require_relative "core/data_fetcher"
5
8
  require_relative "core/hit_collection"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-06-23 00:00:00.000000000 Z
11
+ date: 2026-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -80,7 +80,10 @@ files:
80
80
  - README.adoc
81
81
  - lib/relaton-core.rb
82
82
  - lib/relaton/core.rb
83
+ - lib/relaton/core/array_wrapper.rb
83
84
  - lib/relaton/core/data_fetcher.rb
85
+ - lib/relaton/core/date_parser.rb
86
+ - lib/relaton/core/hash_keys_sybolizer.rb
84
87
  - lib/relaton/core/hit.rb
85
88
  - lib/relaton/core/hit_collection.rb
86
89
  - lib/relaton/core/processor.rb