relaton-bib 1.20.8 → 2.0.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/.gitignore +3 -1
- data/.rubocop.yml +1 -1
- data/CLAUDE.md +96 -0
- data/Gemfile +1 -4
- data/README.adoc +195 -154
- data/bin/console +1 -1
- data/grammars/basicdoc.rng +1572 -671
- data/grammars/biblio-standoc.rng +107 -46
- data/grammars/biblio.rng +1012 -377
- data/grammars/versions.json +26 -26
- data/lib/relaton/bib/converter/asciibib/to_asciibib.rb +663 -0
- data/lib/relaton/bib/converter/asciibib.rb +13 -0
- data/lib/relaton/bib/converter/bibtex/from_bibtex.rb +245 -0
- data/lib/relaton/bib/converter/bibtex/to_bibtex.rb +341 -0
- data/lib/relaton/bib/converter/bibtex.rb +23 -0
- data/lib/relaton/bib/converter/bibxml/from_rfcxml.rb +383 -0
- data/lib/relaton/bib/converter/bibxml/from_rfcxml_referencegroup.rb +71 -0
- data/lib/relaton/bib/converter/bibxml/to_rfcxml.rb +305 -0
- data/lib/relaton/bib/converter/bibxml/to_rfcxml_referencegroup.rb +52 -0
- data/lib/relaton/bib/converter/bibxml.rb +51 -0
- data/lib/relaton/bib/hash_parser_v1.rb +754 -0
- data/lib/relaton/bib/item_data.rb +229 -0
- data/lib/relaton/bib/model/abstract.rb +16 -0
- data/lib/relaton/bib/model/address.rb +22 -0
- data/lib/relaton/bib/model/affiliation.rb +16 -0
- data/lib/relaton/bib/model/bibdata.rb +24 -0
- data/lib/relaton/bib/model/bibitem.rb +23 -0
- data/lib/relaton/bib/model/contact.rb +18 -0
- data/lib/relaton/bib/model/contribution_info.rb +16 -0
- data/lib/relaton/bib/model/contributor.rb +71 -0
- data/lib/relaton/bib/model/copyright.rb +27 -0
- data/lib/relaton/bib/model/date.rb +31 -0
- data/lib/relaton/bib/model/depiction.rb +16 -0
- data/lib/relaton/bib/model/docidentifier.rb +33 -0
- data/lib/relaton/bib/model/doctype.rb +14 -0
- data/lib/relaton/bib/model/edition.rb +14 -0
- data/lib/relaton/bib/model/ext.rb +26 -0
- data/lib/relaton/bib/model/extent.rb +16 -0
- data/lib/relaton/bib/model/formattedref.rb +43 -0
- data/lib/relaton/bib/model/full_name_type.rb +64 -0
- data/lib/relaton/bib/model/fullname.rb +11 -0
- data/lib/relaton/bib/model/ics.rb +23 -0
- data/lib/relaton/bib/model/image.rb +28 -0
- data/lib/relaton/bib/model/item.rb +137 -0
- data/lib/relaton/bib/model/item_base.rb +27 -0
- data/lib/relaton/bib/model/keyword.rb +30 -0
- data/lib/relaton/bib/model/locality.rb +18 -0
- data/lib/relaton/bib/model/locality_stack.rb +14 -0
- data/lib/relaton/bib/model/localized_string.rb +57 -0
- data/lib/relaton/bib/model/localized_string_attrs.rb +24 -0
- data/lib/relaton/bib/model/logo.rb +14 -0
- data/lib/relaton/bib/model/medium.rb +22 -0
- data/lib/relaton/bib/model/note.rb +16 -0
- data/lib/relaton/bib/model/organization.rb +13 -0
- data/lib/relaton/bib/model/organization_type.rb +42 -0
- data/lib/relaton/bib/model/person.rb +36 -0
- data/lib/relaton/bib/model/phone.rb +14 -0
- data/lib/relaton/bib/model/place.rb +33 -0
- data/lib/relaton/bib/model/price.rb +14 -0
- data/lib/relaton/bib/model/relation.rb +43 -0
- data/lib/relaton/bib/model/series.rb +34 -0
- data/lib/relaton/bib/model/size.rb +23 -0
- data/lib/relaton/bib/model/source_locality_stack.rb +14 -0
- data/lib/relaton/bib/model/status.rb +27 -0
- data/lib/relaton/bib/model/structured_identifier.rb +48 -0
- data/lib/relaton/bib/model/subdivision.rb +16 -0
- data/lib/relaton/bib/model/title.rb +56 -0
- data/lib/relaton/bib/model/type/string_date.rb +48 -0
- data/lib/relaton/bib/model/uri.rb +18 -0
- data/lib/relaton/bib/model/validity.rb +16 -0
- data/lib/relaton/bib/model/version.rb +14 -0
- data/lib/relaton/bib/namespace_helper.rb +21 -0
- data/lib/relaton/bib/util.rb +18 -0
- data/lib/relaton/bib/version.rb +5 -0
- data/lib/relaton/bib.rb +45 -0
- data/relaton-bib.gemspec +11 -8
- metadata +125 -67
- data/lib/relaton_bib/bib_item_locality.rb +0 -175
- data/lib/relaton_bib/biblio_note.rb +0 -72
- data/lib/relaton_bib/biblio_version.rb +0 -46
- data/lib/relaton_bib/bibliographic_date.rb +0 -119
- data/lib/relaton_bib/bibliographic_item.rb +0 -668
- data/lib/relaton_bib/bibliographic_size.rb +0 -103
- data/lib/relaton_bib/bibtex_parser.rb +0 -246
- data/lib/relaton_bib/bibxml_parser.rb +0 -422
- data/lib/relaton_bib/classification.rb +0 -40
- data/lib/relaton_bib/config.rb +0 -16
- data/lib/relaton_bib/contribution_info.rb +0 -117
- data/lib/relaton_bib/contributor.rb +0 -277
- data/lib/relaton_bib/copyright_association.rb +0 -79
- data/lib/relaton_bib/deep_dup.rb +0 -30
- data/lib/relaton_bib/document_identifier.rb +0 -118
- data/lib/relaton_bib/document_relation.rb +0 -95
- data/lib/relaton_bib/document_relation_collection.rb +0 -57
- data/lib/relaton_bib/document_status.rb +0 -92
- data/lib/relaton_bib/document_type.rb +0 -52
- data/lib/relaton_bib/edition.rb +0 -55
- data/lib/relaton_bib/editorial_group.rb +0 -41
- data/lib/relaton_bib/extent.rb +0 -39
- data/lib/relaton_bib/forename.rb +0 -65
- data/lib/relaton_bib/formatted_ref.rb +0 -17
- data/lib/relaton_bib/formatted_string.rb +0 -133
- data/lib/relaton_bib/full_name.rb +0 -108
- data/lib/relaton_bib/hash_converter.rb +0 -568
- data/lib/relaton_bib/hit.rb +0 -52
- data/lib/relaton_bib/hit_collection.rb +0 -105
- data/lib/relaton_bib/ics.rb +0 -42
- data/lib/relaton_bib/image.rb +0 -95
- data/lib/relaton_bib/localized_string.rb +0 -149
- data/lib/relaton_bib/medium.rb +0 -76
- data/lib/relaton_bib/organization.rb +0 -165
- data/lib/relaton_bib/person.rb +0 -129
- data/lib/relaton_bib/place.rb +0 -203
- data/lib/relaton_bib/renderer/bibtex_builder.rb +0 -312
- data/lib/relaton_bib/renderer/bibxml.rb +0 -296
- data/lib/relaton_bib/series.rb +0 -119
- data/lib/relaton_bib/structured_identifier.rb +0 -173
- data/lib/relaton_bib/technical_committee.rb +0 -34
- data/lib/relaton_bib/typed_title_string.rb +0 -191
- data/lib/relaton_bib/typed_uri.rb +0 -57
- data/lib/relaton_bib/util.rb +0 -16
- data/lib/relaton_bib/validity.rb +0 -52
- data/lib/relaton_bib/version.rb +0 -3
- data/lib/relaton_bib/workers_pool.rb +0 -43
- data/lib/relaton_bib/workgroup.rb +0 -58
- data/lib/relaton_bib/xml_parser.rb +0 -718
- data/lib/relaton_bib.rb +0 -111
data/lib/relaton_bib.rb
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
require "relaton/logger"
|
|
2
|
-
require "forwardable"
|
|
3
|
-
require "yaml"
|
|
4
|
-
require "htmlentities"
|
|
5
|
-
require "relaton_bib/version"
|
|
6
|
-
require "relaton_bib/deep_dup"
|
|
7
|
-
require "relaton_bib/util"
|
|
8
|
-
require "relaton_bib/localized_string"
|
|
9
|
-
require "relaton_bib/forename"
|
|
10
|
-
require "relaton_bib/full_name"
|
|
11
|
-
require "relaton_bib/contributor"
|
|
12
|
-
require "relaton_bib/document_type"
|
|
13
|
-
require "relaton_bib/image"
|
|
14
|
-
require "relaton_bib/bibliographic_item"
|
|
15
|
-
require "relaton_bib/hit_collection"
|
|
16
|
-
require "relaton_bib/hit"
|
|
17
|
-
require "relaton_bib/bibxml_parser"
|
|
18
|
-
require "relaton_bib/renderer/bibtex_builder"
|
|
19
|
-
require "relaton_bib/renderer/bibxml"
|
|
20
|
-
|
|
21
|
-
module RelatonBib
|
|
22
|
-
class Error < StandardError; end
|
|
23
|
-
|
|
24
|
-
class RequestError < StandardError; end
|
|
25
|
-
|
|
26
|
-
class << self
|
|
27
|
-
# @param date [String, Integer, Date] date
|
|
28
|
-
# @param str [Boolean] return string or Date
|
|
29
|
-
# @return [Date, String, nil] date
|
|
30
|
-
def parse_date(date, str = true) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity,Metrics/AbcSize
|
|
31
|
-
return date if date.is_a?(Date)
|
|
32
|
-
|
|
33
|
-
case date.to_s
|
|
34
|
-
when /(?<date>\w+\s\d{4})/ # February 2012
|
|
35
|
-
format_date $~[:date], "%B %Y", str, "%Y-%m"
|
|
36
|
-
when /(?<date>\w+\s\d{1,2},\s\d{4})/ # February 11, 2012
|
|
37
|
-
format_date $~[:date], "%B %d, %Y", str, "%Y-%m-%d"
|
|
38
|
-
when /(?<date>\d{4}-\d{1,2}-\d{1,2})/ # 2012-02-03 or 2012-2-3
|
|
39
|
-
format_date $~[:date], "%Y-%m-%d", str
|
|
40
|
-
when /(?<date>\d{4}-\d{1,2})/ # 2012-02 or 2012-2
|
|
41
|
-
format_date $~[:date], "%Y-%m", str
|
|
42
|
-
when /(?<date>\d{4})/ # 2012
|
|
43
|
-
format_date $~[:date], "%Y", str
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
#
|
|
48
|
-
# Parse date string to Date object and format it
|
|
49
|
-
#
|
|
50
|
-
# @param [String] date date string
|
|
51
|
-
# @param [String] format format string
|
|
52
|
-
# @param [Boolean] str return string if true in other case return Date
|
|
53
|
-
# @param [String, nil] outformat output format
|
|
54
|
-
#
|
|
55
|
-
# @return [Date, String] date object or formatted date string
|
|
56
|
-
#
|
|
57
|
-
def format_date(date, format, str, outformat = nil)
|
|
58
|
-
date = Date.strptime(date, format)
|
|
59
|
-
str ? date.strftime(outformat || format) : date
|
|
60
|
-
rescue Date::Error => e
|
|
61
|
-
Util.warn "#{date} #{e.message}"
|
|
62
|
-
date
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# @param arr [nil, Array, #is_a?]
|
|
66
|
-
# @return [Array]
|
|
67
|
-
def array(arr)
|
|
68
|
-
return [] unless arr
|
|
69
|
-
return [arr] unless arr.is_a?(Array)
|
|
70
|
-
|
|
71
|
-
arr
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
#
|
|
75
|
-
# Parse yaml content
|
|
76
|
-
#
|
|
77
|
-
# @param [String] yaml content
|
|
78
|
-
# @param [Array] classes classes to be allowed
|
|
79
|
-
# @param [Boolean] symbolize_names symbolize names if true (default: false)
|
|
80
|
-
#
|
|
81
|
-
# @return [Hash] data
|
|
82
|
-
#
|
|
83
|
-
def parse_yaml(yaml, classes = [], symbolize_names: false)
|
|
84
|
-
# Newer versions of Psych uses the `permitted_classes:` parameter
|
|
85
|
-
if YAML.method(:safe_load).parameters.map(&:last).include? :permitted_classes
|
|
86
|
-
YAML.safe_load(yaml, permitted_classes: classes, symbolize_names: symbolize_names)
|
|
87
|
-
else
|
|
88
|
-
YAML.safe_load(yaml, classes, symbolize_names: symbolize_names)
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
def self.grammar_hash
|
|
94
|
-
# gem_path = File.expand_path "..", __dir__
|
|
95
|
-
# grammars_path = File.join gem_path, "grammars", "*"
|
|
96
|
-
# grammars = Dir[grammars_path].sort.map { |gp| File.read gp }.join
|
|
97
|
-
Digest::MD5.hexdigest RelatonBib::VERSION # grammars
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
private
|
|
101
|
-
|
|
102
|
-
# @param array [Array]
|
|
103
|
-
# @return [Array<String>, String]
|
|
104
|
-
def single_element_array(array)
|
|
105
|
-
# if array.size > 1
|
|
106
|
-
array.map { |e| e.is_a?(String) ? e : e.to_hash }
|
|
107
|
-
# else
|
|
108
|
-
# array.first.is_a?(String) ? array[0] : array.first&.to_hash
|
|
109
|
-
# end
|
|
110
|
-
end
|
|
111
|
-
end
|