relaton-bib 1.4.0 → 2.1.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.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/integration-tests.yml +54 -0
  3. data/.github/workflows/rake.yml +15 -0
  4. data/.github/workflows/release.yml +24 -0
  5. data/.gitignore +4 -1
  6. data/.rubocop.yml +3 -1
  7. data/CLAUDE.md +108 -0
  8. data/Gemfile +11 -0
  9. data/README.adoc +229 -314
  10. data/bin/console +1 -1
  11. data/docs/hash.adoc +132 -83
  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 +386 -0
  18. data/lib/relaton/bib/converter/bibxml/from_rfcxml_referencegroup.rb +71 -0
  19. data/lib/relaton/bib/converter/bibxml/to_rfcxml.rb +308 -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 +767 -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 +9 -0
  28. data/lib/relaton/bib/model/bibdata_shared.rb +10 -0
  29. data/lib/relaton/bib/model/bibitem.rb +9 -0
  30. data/lib/relaton/bib/model/bibitem_shared.rb +10 -0
  31. data/lib/relaton/bib/model/contact.rb +14 -0
  32. data/lib/relaton/bib/model/contribution_info.rb +16 -0
  33. data/lib/relaton/bib/model/contributor.rb +29 -0
  34. data/lib/relaton/bib/model/copyright.rb +27 -0
  35. data/lib/relaton/bib/model/date.rb +29 -0
  36. data/lib/relaton/bib/model/depiction.rb +16 -0
  37. data/lib/relaton/bib/model/docidentifier.rb +34 -0
  38. data/lib/relaton/bib/model/doctype.rb +14 -0
  39. data/lib/relaton/bib/model/edition.rb +14 -0
  40. data/lib/relaton/bib/model/ext.rb +35 -0
  41. data/lib/relaton/bib/model/extent.rb +16 -0
  42. data/lib/relaton/bib/model/formattedref.rb +43 -0
  43. data/lib/relaton/bib/model/full_name_type.rb +64 -0
  44. data/lib/relaton/bib/model/fullname.rb +11 -0
  45. data/lib/relaton/bib/model/ics.rb +49 -0
  46. data/lib/relaton/bib/model/image.rb +28 -0
  47. data/lib/relaton/bib/model/item.rb +44 -0
  48. data/lib/relaton/bib/model/item_base.rb +20 -0
  49. data/lib/relaton/bib/model/item_shared.rb +88 -0
  50. data/lib/relaton/bib/model/keyword.rb +30 -0
  51. data/lib/relaton/bib/model/locality.rb +18 -0
  52. data/lib/relaton/bib/model/locality_stack.rb +14 -0
  53. data/lib/relaton/bib/model/localized_string.rb +48 -0
  54. data/lib/relaton/bib/model/localized_string_attrs.rb +24 -0
  55. data/lib/relaton/bib/model/logo.rb +14 -0
  56. data/lib/relaton/bib/model/medium.rb +22 -0
  57. data/lib/relaton/bib/model/note.rb +16 -0
  58. data/lib/relaton/bib/model/organization.rb +11 -0
  59. data/lib/relaton/bib/model/organization_type.rb +40 -0
  60. data/lib/relaton/bib/model/person.rb +36 -0
  61. data/lib/relaton/bib/model/phone.rb +14 -0
  62. data/lib/relaton/bib/model/place.rb +33 -0
  63. data/lib/relaton/bib/model/price.rb +14 -0
  64. data/lib/relaton/bib/model/relation.rb +41 -0
  65. data/lib/relaton/bib/model/series.rb +32 -0
  66. data/lib/relaton/bib/model/size.rb +23 -0
  67. data/lib/relaton/bib/model/source_locality_stack.rb +14 -0
  68. data/lib/relaton/bib/model/status.rb +27 -0
  69. data/lib/relaton/bib/model/structured_identifier.rb +48 -0
  70. data/lib/relaton/bib/model/subdivision.rb +16 -0
  71. data/lib/relaton/bib/model/title.rb +56 -0
  72. data/lib/relaton/bib/model/type/plain_date.rb +16 -0
  73. data/lib/relaton/bib/model/type/string_date.rb +48 -0
  74. data/lib/relaton/bib/model/uri.rb +18 -0
  75. data/lib/relaton/bib/model/validity.rb +16 -0
  76. data/lib/relaton/bib/model/version.rb +43 -0
  77. data/lib/relaton/bib/model_autoload.rb +85 -0
  78. data/lib/relaton/bib/namespace_helper.rb +21 -0
  79. data/lib/relaton/bib/sanitizer.rb +74 -0
  80. data/lib/relaton/bib/util.rb +18 -0
  81. data/lib/relaton/bib/version.rb +5 -0
  82. data/lib/relaton/bib/versions.json +35 -0
  83. data/lib/relaton/bib.rb +41 -0
  84. data/relaton-bib.gemspec +12 -16
  85. metadata +118 -129
  86. data/.github/workflows/macos.yml +0 -38
  87. data/.github/workflows/ubuntu.yml +0 -39
  88. data/.github/workflows/windows.yml +0 -41
  89. data/grammars/basicdoc.rng +0 -986
  90. data/grammars/biblio.rng +0 -1237
  91. data/grammars/isodoc.rng +0 -1613
  92. data/grammars/reqt.rng +0 -165
  93. data/lib/relaton_bib/bib_item_locality.rb +0 -107
  94. data/lib/relaton_bib/biblio_note.rb +0 -44
  95. data/lib/relaton_bib/biblio_version.rb +0 -49
  96. data/lib/relaton_bib/bibliographic_date.rb +0 -90
  97. data/lib/relaton_bib/bibliographic_item.rb +0 -726
  98. data/lib/relaton_bib/bibtex_parser.rb +0 -245
  99. data/lib/relaton_bib/classification.rb +0 -40
  100. data/lib/relaton_bib/contribution_info.rb +0 -109
  101. data/lib/relaton_bib/contributor.rb +0 -215
  102. data/lib/relaton_bib/copyright_association.rb +0 -77
  103. data/lib/relaton_bib/deep_dup.rb +0 -30
  104. data/lib/relaton_bib/document_identifier.rb +0 -95
  105. data/lib/relaton_bib/document_relation.rb +0 -94
  106. data/lib/relaton_bib/document_relation_collection.rb +0 -46
  107. data/lib/relaton_bib/document_status.rb +0 -93
  108. data/lib/relaton_bib/editorial_group.rb +0 -41
  109. data/lib/relaton_bib/formatted_ref.rb +0 -17
  110. data/lib/relaton_bib/formatted_string.rb +0 -55
  111. data/lib/relaton_bib/hash_converter.rb +0 -497
  112. data/lib/relaton_bib/hit.rb +0 -46
  113. data/lib/relaton_bib/hit_collection.rb +0 -73
  114. data/lib/relaton_bib/ics.rb +0 -37
  115. data/lib/relaton_bib/localized_string.rb +0 -93
  116. data/lib/relaton_bib/medium.rb +0 -44
  117. data/lib/relaton_bib/organization.rb +0 -135
  118. data/lib/relaton_bib/person.rb +0 -206
  119. data/lib/relaton_bib/place.rb +0 -49
  120. data/lib/relaton_bib/series.rb +0 -134
  121. data/lib/relaton_bib/structured_identifier.rb +0 -171
  122. data/lib/relaton_bib/technical_committee.rb +0 -36
  123. data/lib/relaton_bib/typed_title_string.rb +0 -96
  124. data/lib/relaton_bib/typed_uri.rb +0 -47
  125. data/lib/relaton_bib/validity.rb +0 -52
  126. data/lib/relaton_bib/version.rb +0 -3
  127. data/lib/relaton_bib/workers_pool.rb +0 -43
  128. data/lib/relaton_bib/workgroup.rb +0 -46
  129. data/lib/relaton_bib/xml_parser.rb +0 -463
  130. data/lib/relaton_bib.rb +0 -44
@@ -1,171 +0,0 @@
1
- module RelatonBib
2
- class StructuredIdentifierCollection
3
- include RelatonBib
4
- extend Forwardable
5
-
6
- def_delegators :@collection, :any?, :size, :[], :detect
7
-
8
- # @param collection [Array<RelatonBib::StructuredIdentifier>]
9
- def initialize(collection)
10
- @collection = collection
11
- end
12
-
13
- # @param builder [Nokogiri::XML::Builder]
14
- def to_xml(builder)
15
- @collection.each { |si| si.to_xml builder }
16
- end
17
-
18
- # @return [Array<Hash>]
19
- def to_hash
20
- single_element_array @collection
21
- end
22
-
23
- # @param prefix [String]
24
- # @return [String]
25
- def to_asciibib(prefix = "")
26
- pref = prefix.empty? ? prefix : prefix + "."
27
- pref += "structured_identifier"
28
- @collection.reduce("") do |out, si|
29
- out += "#{pref}::\n" if @collection.size > 1
30
- out + si.to_asciibib(pref)
31
- end
32
- end
33
-
34
- # remoe year from docnumber
35
- def remove_date
36
- @collection.each &:remove_date
37
- end
38
-
39
- def remove_part
40
- @collection.each &:remove_part
41
- end
42
-
43
- def all_parts
44
- @collection.each &:all_parts
45
- end
46
-
47
- def presence?
48
- any?
49
- end
50
-
51
- # @return [RelatonBib::StructuredIdentifierCollection]
52
- # def map(&block)
53
- # StructuredIdentifierCollection.new @collection.map &block
54
- # end
55
- end
56
-
57
- class StructuredIdentifier
58
- include RelatonBib
59
-
60
- # @return [String]
61
- attr_reader :docnumber
62
-
63
- # @return [Array<String>]
64
- attr_reader :agency
65
-
66
- # @return [String, NilClass]
67
- attr_reader :type, :klass, :partnumber, :edition, :version, :supplementtype,
68
- :supplementnumber, :language, :year
69
-
70
- # rubocop:disable Metrics/MethodLength
71
-
72
- # @param type [String, NilClass]
73
- # @param agency [Array<String>]
74
- # @parma class [Stirng, NilClass]
75
- # @parma docnumber [String]
76
- # @param partnumber [String, NilClass]
77
- # @param edition [String, NilClass]
78
- # @param version [String, NilClass]
79
- # @param supplementtype [String, NilClass]
80
- # @param supplementnumber [String, NilClass]
81
- # @param language [String, NilClass]
82
- # @param year [String, NilClass]
83
- def initialize(docnumber:, **args)
84
- @type = args[:type]
85
- @agency = args[:agency]
86
- @klass = args[:class]
87
- @docnumber = docnumber
88
- @partnumber = args[:partnumber]
89
- @edition = args[:edition]
90
- @version = args[:version]
91
- @supplementtype = args[:supplementtype]
92
- @supplementnumber = args[:supplementnumber]
93
- @language = args[:language]
94
- @year = args[:year]
95
- end
96
-
97
- # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
98
-
99
- # @param builder [Nokogiri::XML::Builder]
100
- def to_xml(builder)
101
- xml = builder.structuredidentifier do |b|
102
- agency&.each { |a| b.agency a }
103
- b.class_ klass if klass
104
- b.docnumber docnumber
105
- b.partnumber partnumber if partnumber
106
- b.edition edition if edition
107
- b.version version if version
108
- b.supplementtype supplementtype if supplementtype
109
- b.supplementnumber supplementnumber if supplementnumber
110
- b.language language if language
111
- b.year year if year
112
- end
113
- xml[:type] = type if type
114
- end
115
-
116
- # @return [Hash]
117
- def to_hash
118
- hash = { "docnumber" => docnumber }
119
- hash["type"] = type if type
120
- hash["agency"] = single_element_array agency if agency&.any?
121
- hash["class"] = klass if klass
122
- hash["partnumber"] = partnumber if partnumber
123
- hash["edition"] = edition if edition
124
- hash["version"] = version if version
125
- hash["supplementtype"] = supplementtype if supplementtype
126
- hash["supplementnumber"] = supplementnumber if supplementnumber
127
- hash["language"] = language if language
128
- hash["year"] = year if year
129
- hash
130
- end
131
- # rubocop:enable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
132
-
133
- # @param prefix [String]
134
- # @return [String]
135
- def to_asciibib(prefix) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength,Metrics/PerceivedComplexity
136
- out = "#{prefix}.docnumber:: #{docnumber}\n"
137
- agency.each { |a| out += "#{prefix}.agency:: #{a}\n" }
138
- out += "#{prefix}.type:: #{type}\n" if type
139
- out += "#{prefix}.class:: #{klass}\n" if klass
140
- out += "#{prefix}.partnumber:: #{partnumber}\n" if partnumber
141
- out += "#{prefix}.edition:: #{edition}\n" if edition
142
- out += "#{prefix}.version:: #{version}\n" if version
143
- out += "#{prefix}.supplementtype:: #{supplementtype}\n" if supplementtype
144
- if supplementnumber
145
- out += "#{prefix}.supplementnumber:: #{supplementnumber}\n"
146
- end
147
- out += "#{prefix}.language:: #{language}\n" if language
148
- out += "#{prefix}.year:: #{year}\n" if year
149
- out
150
- end
151
-
152
- def remove_date
153
- if @type == "Chinese Standard"
154
- @docnumber.sub!(/-[12]\d\d\d/, "")
155
- else
156
- @docnumber.sub!(/:[12]\d\d\d/, "")
157
- end
158
- @year = nil
159
- end
160
-
161
- # in docid manipulations, assume ISO as the default: id-part:year
162
- def remove_part
163
- @partnumber = nil
164
- @docnumber = @docnumber.sub(/-\d+/, "")
165
- end
166
-
167
- def all_parts
168
- @docnumber = @docnumber + " (all parts)"
169
- end
170
- end
171
- end
@@ -1,36 +0,0 @@
1
- require "relaton_bib/workgroup"
2
-
3
- module RelatonBib
4
- class TechnicalCommittee
5
- # @return [RelatonBib::WorkGroup]
6
- attr_reader :workgroup
7
-
8
- # @param workgroup [RelatonBib::WorkGroup]
9
- def initialize(workgroup)
10
- @workgroup = workgroup
11
- end
12
-
13
- # @param builder [Nokogiri::XML::Builder]
14
- def to_xml(builder)
15
- builder.send "technical-committee" do |b|
16
- workgroup.to_xml b
17
- end
18
- end
19
-
20
- # @return [Hash]
21
- def to_hash
22
- workgroup.to_hash
23
- end
24
-
25
- # @param prefix [String]
26
- # @param count [Integer] number of technical committees
27
- # @return [String]
28
- def to_asciibib(prefix = "", count = 1)
29
- pref = prefix.empty? ? prefix : prefix + "."
30
- pref += "technical_committee"
31
- out = count > 1 ? "#{pref}::\n" : ""
32
- out += workgroup.to_asciibib pref
33
- out
34
- end
35
- end
36
- end
@@ -1,96 +0,0 @@
1
- module RelatonBib
2
- class TypedTitleString
3
- # @return [String]
4
- attr_reader :type
5
-
6
- # @return [RelatonBib::FormattedString]
7
- attr_reader :title
8
-
9
- # @param type [String]
10
- # @param title [RelatonBib::FormattedString, Hash]
11
- # @param content [String]
12
- # @param language [String]
13
- # @param script [String]
14
- def initialize(**args) # rubocop:disable Metrics/MethodLength
15
- unless args[:title] || args[:content]
16
- raise ArgumentError, %{Keyword "title" or "content" should be passed.}
17
- end
18
-
19
- @type = args[:type]
20
-
21
- if args[:title]
22
- @title = args[:title]
23
- else
24
- fsargs = args.select do |k, _v|
25
- %i[content language script format].include? k
26
- end
27
- @title = FormattedString.new(fsargs)
28
- end
29
- end
30
-
31
- # @param title [String]
32
- # @return [Array<self>]
33
- def self.from_string(title, lang = nil, script = nil)
34
- types = %w[title-intro title-main title-part]
35
- ttls = split_title(title)
36
- tts = ttls.map.with_index do |p, i|
37
- new type: types[i], content: p, language: lang, script: script if p
38
- end.compact
39
- tts << new(type: "main", content: ttls.compact.join(" - "),
40
- language: lang, script: script)
41
- end
42
-
43
- # @param title [String]
44
- # @return [Array<String, nil>]
45
- def self.split_title(title)
46
- ttls = title.sub(/\w\.Imp\s?\d+\u00A0:\u00A0/, "").split " - "
47
- case ttls.size
48
- when 0, 1 then [nil, ttls.first.to_s, nil]
49
- else intro_or_part ttls
50
- end
51
- end
52
-
53
- # @param ttls [Array<String>]
54
- # @return [Array<Strin, nil>]
55
- def self.intro_or_part(ttls)
56
- if /^(Part|Partie) \d+:/.match? ttls[1]
57
- [nil, ttls[0], ttls[1..-1].join(" -- ")]
58
- else
59
- parts = ttls.slice(2..-1)
60
- part = parts.join " -- " if parts.any?
61
- [ttls[0], ttls[1], part]
62
- end
63
- end
64
-
65
- # @param builder [Nokogiri::XML::Builder]
66
- def to_xml(builder)
67
- builder.parent[:type] = type if type
68
- title.to_xml builder
69
- end
70
-
71
- # @return [Hash]
72
- def to_hash
73
- th = title.to_hash
74
- return th unless type
75
-
76
- hash = { "type" => type }
77
- if th.is_a? String
78
- hash["content"] = th
79
- else
80
- hash.merge! th
81
- end
82
- hash
83
- end
84
-
85
- # @param prefix [String]
86
- # @param count [Integer] number of titles
87
- # @return [String]
88
- def to_asciibib(prefix = "", count = 1) # rubocop:disable Metrics/AbcSize
89
- pref = prefix.empty? ? prefix : prefix + "."
90
- out = count > 1 ? "#{pref}title::\n" : ""
91
- out += "#{pref}title.type:: #{type}\n" if type
92
- out += title.to_asciibib "#{pref}title"
93
- out
94
- end
95
- end
96
- end
@@ -1,47 +0,0 @@
1
- require "addressable"
2
-
3
- module RelatonBib
4
- # Typed URI
5
- class TypedUri
6
- # @return [Symbol] :src/:obp/:rss
7
- attr_reader :type
8
- # @retutn [URI]
9
- attr_reader :content
10
-
11
- # @param type [String, NilClass] src/obp/rss
12
- # @param content [String]
13
- def initialize(type: nil, content:)
14
- @type = type
15
- @content = Addressable::URI.parse content if content
16
- end
17
-
18
- # @parma url [String]
19
- def content=(url)
20
- @content = Addressable::URI.parse url
21
- end
22
-
23
- # @param builder [Nokogiri::XML::Builder]
24
- def to_xml(builder)
25
- doc = builder.uri content.to_s
26
- doc[:type] = type if type
27
- end
28
-
29
- # @return [Hash]
30
- def to_hash
31
- hash = { "content" => content.to_s }
32
- hash["type"] = type.to_s if type
33
- hash
34
- end
35
-
36
- # @param prefix [String]
37
- # @param count [Integer] number of links
38
- # @return [String]
39
- def to_asciibib(prefix = "", count = 1)
40
- pref = prefix.empty? ? "link" : prefix + ".link"
41
- out = count > 1 ? "#{pref}::\n" : ""
42
- out += "#{pref}.type:: #{type}\n" if type
43
- out += "#{pref}.content:: #{content}\n"
44
- out
45
- end
46
- end
47
- end
@@ -1,52 +0,0 @@
1
- module RelatonBib
2
- class Validity
3
- FORMAT = "%Y-%m-%d %H:%M"
4
-
5
- # @return [Time, NilClass]
6
- attr_reader :begins
7
-
8
- # @return [Time, NilClass]
9
- attr_reader :ends
10
-
11
- # @return [Time, NilClass]
12
- attr_reader :revision
13
-
14
- # @param begins [Time, NilClass]
15
- # @param ends [Time, NilClass]
16
- # @param revision [Time, NilClass]
17
- def initialize(begins: nil, ends: nil, revision: nil)
18
- @begins = begins
19
- @ends = ends
20
- @revision = revision
21
- end
22
-
23
- # @param [Nokogiri::XML::Builder]
24
- def to_xml(builder)
25
- builder.validity do
26
- builder.validityBegins begins.strftime(FORMAT) if begins
27
- builder.validityEnds ends.strftime(FORMAT) if ends
28
- builder.revision revision.strftime(FORMAT) if revision
29
- end
30
- end
31
-
32
- # @return [Hash]
33
- def to_hash
34
- hash = {}
35
- hash["begins"] = begins.strftime(FORMAT) if begins
36
- hash["ends"] = ends.strftime(FORMAT) if ends
37
- hash["revision"] = revision.strftime(FORMAT) if revision
38
- hash
39
- end
40
-
41
- # @param prefix [String]
42
- # @return [String]
43
- def to_asciibib(prefix = "")
44
- pref = prefix.empty? ? "validity." : prefix + ".validity."
45
- out = ""
46
- out += "#{pref}begins:: #{begins.strftime(FORMAT)}\n" if begins
47
- out += "#{pref}ends:: #{ends.strftime(FORMAT)}\n" if ends
48
- out += "#{pref}revision:: #{revision.strftime(FORMAT)}\n" if revision
49
- out
50
- end
51
- end
52
- end
@@ -1,3 +0,0 @@
1
- module RelatonBib
2
- VERSION = "1.4.0".freeze
3
- end
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RelatonBib
4
- # Workers poll.
5
- class WorkersPool
6
- attr_accessor :nb_hits
7
-
8
- def initialize(num_workers = 2)
9
- @num_workers = num_workers < 2 ? 2 : num_workers
10
- @queue = SizedQueue.new(num_workers * 2)
11
- @result = []
12
- @nb_hits = 0
13
- end
14
-
15
- def worker(&block)
16
- @threads = Array.new @num_workers do
17
- Thread.new do
18
- until (item = @queue.pop) == :END
19
- @result << yield(item) if block
20
- end
21
- end
22
- end
23
- end
24
-
25
- def result
26
- @threads.each(&:join)
27
- @result
28
- end
29
-
30
- def <<(item)
31
- @queue << item
32
- self
33
- end
34
-
35
- def end
36
- @num_workers.times { @queue << :END }
37
- end
38
-
39
- def size
40
- @result.size
41
- end
42
- end
43
- end
@@ -1,46 +0,0 @@
1
- module RelatonBib
2
- class WorkGroup
3
- # @return [String]
4
- attr_reader :content
5
-
6
- # @return [Integer, nil]
7
- attr_reader :number
8
-
9
- # @return [String, nil]
10
- attr_reader :type
11
-
12
- # @param content [String]
13
- # @param number [Integer, nil]
14
- # @param type [String, nil]
15
- def initialize(content:, number: nil, type: nil)
16
- @content = content
17
- @number = number
18
- @type = type
19
- end
20
-
21
- # @param builder [Nokogiri::XML::Builder]
22
- def to_xml(builder)
23
- builder.text content
24
- builder.parent[:number] = number if number
25
- builder.parent[:type] = type if type
26
- end
27
-
28
- # @return [Hash]
29
- def to_hash
30
- hash = { "content" => content }
31
- hash["number"] = number if number
32
- hash["type"] = type if type
33
- hash
34
- end
35
-
36
- # @param prefix [String]
37
- # @return [String]
38
- def to_asciibib(prefix = "")
39
- pref = prefix.empty? ? prefix : prefix + "."
40
- out = "#{pref}content:: #{content}\n"
41
- out += "#{pref}number:: #{number}\n" if number
42
- out += "#{pref}type:: #{type}\n" if type
43
- out
44
- end
45
- end
46
- end