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.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.rubocop.yml +1 -1
  4. data/CLAUDE.md +96 -0
  5. data/Gemfile +1 -4
  6. data/README.adoc +195 -154
  7. data/bin/console +1 -1
  8. data/grammars/basicdoc.rng +1572 -671
  9. data/grammars/biblio-standoc.rng +107 -46
  10. data/grammars/biblio.rng +1012 -377
  11. data/grammars/versions.json +26 -26
  12. data/lib/relaton/bib/converter/asciibib/to_asciibib.rb +663 -0
  13. data/lib/relaton/bib/converter/asciibib.rb +13 -0
  14. data/lib/relaton/bib/converter/bibtex/from_bibtex.rb +245 -0
  15. data/lib/relaton/bib/converter/bibtex/to_bibtex.rb +341 -0
  16. data/lib/relaton/bib/converter/bibtex.rb +23 -0
  17. data/lib/relaton/bib/converter/bibxml/from_rfcxml.rb +383 -0
  18. data/lib/relaton/bib/converter/bibxml/from_rfcxml_referencegroup.rb +71 -0
  19. data/lib/relaton/bib/converter/bibxml/to_rfcxml.rb +305 -0
  20. data/lib/relaton/bib/converter/bibxml/to_rfcxml_referencegroup.rb +52 -0
  21. data/lib/relaton/bib/converter/bibxml.rb +51 -0
  22. data/lib/relaton/bib/hash_parser_v1.rb +754 -0
  23. data/lib/relaton/bib/item_data.rb +229 -0
  24. data/lib/relaton/bib/model/abstract.rb +16 -0
  25. data/lib/relaton/bib/model/address.rb +22 -0
  26. data/lib/relaton/bib/model/affiliation.rb +16 -0
  27. data/lib/relaton/bib/model/bibdata.rb +24 -0
  28. data/lib/relaton/bib/model/bibitem.rb +23 -0
  29. data/lib/relaton/bib/model/contact.rb +18 -0
  30. data/lib/relaton/bib/model/contribution_info.rb +16 -0
  31. data/lib/relaton/bib/model/contributor.rb +71 -0
  32. data/lib/relaton/bib/model/copyright.rb +27 -0
  33. data/lib/relaton/bib/model/date.rb +31 -0
  34. data/lib/relaton/bib/model/depiction.rb +16 -0
  35. data/lib/relaton/bib/model/docidentifier.rb +33 -0
  36. data/lib/relaton/bib/model/doctype.rb +14 -0
  37. data/lib/relaton/bib/model/edition.rb +14 -0
  38. data/lib/relaton/bib/model/ext.rb +26 -0
  39. data/lib/relaton/bib/model/extent.rb +16 -0
  40. data/lib/relaton/bib/model/formattedref.rb +43 -0
  41. data/lib/relaton/bib/model/full_name_type.rb +64 -0
  42. data/lib/relaton/bib/model/fullname.rb +11 -0
  43. data/lib/relaton/bib/model/ics.rb +23 -0
  44. data/lib/relaton/bib/model/image.rb +28 -0
  45. data/lib/relaton/bib/model/item.rb +137 -0
  46. data/lib/relaton/bib/model/item_base.rb +27 -0
  47. data/lib/relaton/bib/model/keyword.rb +30 -0
  48. data/lib/relaton/bib/model/locality.rb +18 -0
  49. data/lib/relaton/bib/model/locality_stack.rb +14 -0
  50. data/lib/relaton/bib/model/localized_string.rb +57 -0
  51. data/lib/relaton/bib/model/localized_string_attrs.rb +24 -0
  52. data/lib/relaton/bib/model/logo.rb +14 -0
  53. data/lib/relaton/bib/model/medium.rb +22 -0
  54. data/lib/relaton/bib/model/note.rb +16 -0
  55. data/lib/relaton/bib/model/organization.rb +13 -0
  56. data/lib/relaton/bib/model/organization_type.rb +42 -0
  57. data/lib/relaton/bib/model/person.rb +36 -0
  58. data/lib/relaton/bib/model/phone.rb +14 -0
  59. data/lib/relaton/bib/model/place.rb +33 -0
  60. data/lib/relaton/bib/model/price.rb +14 -0
  61. data/lib/relaton/bib/model/relation.rb +43 -0
  62. data/lib/relaton/bib/model/series.rb +34 -0
  63. data/lib/relaton/bib/model/size.rb +23 -0
  64. data/lib/relaton/bib/model/source_locality_stack.rb +14 -0
  65. data/lib/relaton/bib/model/status.rb +27 -0
  66. data/lib/relaton/bib/model/structured_identifier.rb +48 -0
  67. data/lib/relaton/bib/model/subdivision.rb +16 -0
  68. data/lib/relaton/bib/model/title.rb +56 -0
  69. data/lib/relaton/bib/model/type/string_date.rb +48 -0
  70. data/lib/relaton/bib/model/uri.rb +18 -0
  71. data/lib/relaton/bib/model/validity.rb +16 -0
  72. data/lib/relaton/bib/model/version.rb +14 -0
  73. data/lib/relaton/bib/namespace_helper.rb +21 -0
  74. data/lib/relaton/bib/util.rb +18 -0
  75. data/lib/relaton/bib/version.rb +5 -0
  76. data/lib/relaton/bib.rb +45 -0
  77. data/relaton-bib.gemspec +11 -8
  78. metadata +125 -67
  79. data/lib/relaton_bib/bib_item_locality.rb +0 -175
  80. data/lib/relaton_bib/biblio_note.rb +0 -72
  81. data/lib/relaton_bib/biblio_version.rb +0 -46
  82. data/lib/relaton_bib/bibliographic_date.rb +0 -119
  83. data/lib/relaton_bib/bibliographic_item.rb +0 -668
  84. data/lib/relaton_bib/bibliographic_size.rb +0 -103
  85. data/lib/relaton_bib/bibtex_parser.rb +0 -246
  86. data/lib/relaton_bib/bibxml_parser.rb +0 -422
  87. data/lib/relaton_bib/classification.rb +0 -40
  88. data/lib/relaton_bib/config.rb +0 -16
  89. data/lib/relaton_bib/contribution_info.rb +0 -117
  90. data/lib/relaton_bib/contributor.rb +0 -277
  91. data/lib/relaton_bib/copyright_association.rb +0 -79
  92. data/lib/relaton_bib/deep_dup.rb +0 -30
  93. data/lib/relaton_bib/document_identifier.rb +0 -118
  94. data/lib/relaton_bib/document_relation.rb +0 -95
  95. data/lib/relaton_bib/document_relation_collection.rb +0 -57
  96. data/lib/relaton_bib/document_status.rb +0 -92
  97. data/lib/relaton_bib/document_type.rb +0 -52
  98. data/lib/relaton_bib/edition.rb +0 -55
  99. data/lib/relaton_bib/editorial_group.rb +0 -41
  100. data/lib/relaton_bib/extent.rb +0 -39
  101. data/lib/relaton_bib/forename.rb +0 -65
  102. data/lib/relaton_bib/formatted_ref.rb +0 -17
  103. data/lib/relaton_bib/formatted_string.rb +0 -133
  104. data/lib/relaton_bib/full_name.rb +0 -108
  105. data/lib/relaton_bib/hash_converter.rb +0 -568
  106. data/lib/relaton_bib/hit.rb +0 -52
  107. data/lib/relaton_bib/hit_collection.rb +0 -105
  108. data/lib/relaton_bib/ics.rb +0 -42
  109. data/lib/relaton_bib/image.rb +0 -95
  110. data/lib/relaton_bib/localized_string.rb +0 -149
  111. data/lib/relaton_bib/medium.rb +0 -76
  112. data/lib/relaton_bib/organization.rb +0 -165
  113. data/lib/relaton_bib/person.rb +0 -129
  114. data/lib/relaton_bib/place.rb +0 -203
  115. data/lib/relaton_bib/renderer/bibtex_builder.rb +0 -312
  116. data/lib/relaton_bib/renderer/bibxml.rb +0 -296
  117. data/lib/relaton_bib/series.rb +0 -119
  118. data/lib/relaton_bib/structured_identifier.rb +0 -173
  119. data/lib/relaton_bib/technical_committee.rb +0 -34
  120. data/lib/relaton_bib/typed_title_string.rb +0 -191
  121. data/lib/relaton_bib/typed_uri.rb +0 -57
  122. data/lib/relaton_bib/util.rb +0 -16
  123. data/lib/relaton_bib/validity.rb +0 -52
  124. data/lib/relaton_bib/version.rb +0 -3
  125. data/lib/relaton_bib/workers_pool.rb +0 -43
  126. data/lib/relaton_bib/workgroup.rb +0 -58
  127. data/lib/relaton_bib/xml_parser.rb +0 -718
  128. 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