bibmarkdown 1.2.1 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/bibmarkdown.gemspec +3 -3
- data/lib/bibmarkdown/document.rb +51 -17
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3643b4d21d60997b979670eec92eefe6832ead5
|
4
|
+
data.tar.gz: 6aef6c803413b1799ebf2d9080f509341b0ded80
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f78597db7000e0f29338641c4934a7aec2e1249265ab1120a4a9cbb8b5aab54eca6455bf525c8b3d2b3a8c14970e004ee1c59e73553349f9d1c5517bb551a5a
|
7
|
+
data.tar.gz: 26196bcaebd8f607bfa0ec327d4d9533d2872556c9a540c7765aa7e49f7e93ff761189153e3fa0a24acea92060593dbb0271425ae7831faab8a47d7393caf838
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.3.0
|
data/bibmarkdown.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: bibmarkdown 1.
|
5
|
+
# stub: bibmarkdown 1.3.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "bibmarkdown".freeze
|
9
|
-
s.version = "1.
|
9
|
+
s.version = "1.3.0"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["Ruben Verborgh".freeze]
|
14
|
-
s.date = "2017-
|
14
|
+
s.date = "2017-12-31"
|
15
15
|
s.email = "ruben@verborgh.org".freeze
|
16
16
|
s.extra_rdoc_files = [
|
17
17
|
"LICENSE.md",
|
data/lib/bibmarkdown/document.rb
CHANGED
@@ -22,16 +22,24 @@ module BibMarkdown
|
|
22
22
|
raise "Missing reference key in #{match}" if refs.empty?
|
23
23
|
reflinks = refs.map{|r| r[:link]}.join ''
|
24
24
|
|
25
|
-
# If the
|
25
|
+
# If the anchor text is empty, output reference links
|
26
26
|
if text.empty?
|
27
27
|
reflinks
|
28
|
-
# If
|
28
|
+
# If the reference has no URL, output the anchor text and append reference links
|
29
29
|
elsif refs.first[:url].empty?
|
30
30
|
"#{text} #{reflinks}"
|
31
|
-
# Otherwise,
|
31
|
+
# Otherwise, link the anchor text to the first reference URL and append reference links
|
32
32
|
else
|
33
|
-
property = 'http://purl.org/spar/cito/' + rel
|
34
|
-
|
33
|
+
property = 'schema:citation http://purl.org/spar/cito/' + rel
|
34
|
+
# Link to the first reference
|
35
|
+
first = refs.first
|
36
|
+
if first[:id] == first[:url]
|
37
|
+
"#{create_element :a, text, property: property, href: first[:url]} #{reflinks}"
|
38
|
+
# If the reference's ID is different from its URL, surround with an extra span
|
39
|
+
else
|
40
|
+
link = create_element :a, text, href: first[:url]
|
41
|
+
"#{create_element :span, link, property: property, resource: first[:id]} #{reflinks}"
|
42
|
+
end
|
35
43
|
end
|
36
44
|
end
|
37
45
|
|
@@ -40,29 +48,32 @@ module BibMarkdown
|
|
40
48
|
end
|
41
49
|
|
42
50
|
protected
|
51
|
+
def find_entry key
|
52
|
+
raise "Reference '#{key}' does not exist." unless @entries.key?(key)
|
53
|
+
@entries[key]
|
54
|
+
end
|
55
|
+
|
43
56
|
def create_reference key
|
44
57
|
return @references[key] if @references.has_key? key
|
45
58
|
|
46
59
|
# Look up citation and its URL
|
47
|
-
entry =
|
48
|
-
raise "Failed to generate references: entry '#{key}' does not exist." unless entry
|
60
|
+
entry = find_entry key
|
49
61
|
url = entry[:url] || ''
|
50
62
|
|
51
|
-
# Assign
|
52
|
-
|
53
|
-
link =
|
63
|
+
# Assign a reference number and create a link to the reference
|
64
|
+
number = @references.length + 1
|
65
|
+
link = create_element :a, "\\[#{number}\\]", href: "#ref-#{number}", class: 'reference'
|
54
66
|
|
55
|
-
@references[key] = { id:
|
67
|
+
@references[key] = { id: reference_id(key), number: number, url: url, link: link }
|
56
68
|
end
|
57
69
|
|
58
70
|
def h text
|
59
71
|
CGI::escapeHTML(text || '')
|
60
72
|
end
|
61
73
|
|
62
|
-
def
|
63
|
-
attrs[:href] = url
|
74
|
+
def create_element tag, html, attrs = {}
|
64
75
|
attrs = attrs.map { |attr, value| %Q{#{attr}="#{h value}"} }
|
65
|
-
%Q{
|
76
|
+
%Q{<#{tag} #{attrs.join ' '}>#{html}</#{tag}>}
|
66
77
|
end
|
67
78
|
|
68
79
|
def references_html
|
@@ -72,13 +83,36 @@ module BibMarkdown
|
|
72
83
|
html = %Q{<h2 id="references">References</h2>\n}
|
73
84
|
html += %Q{<dl class="references">\n}
|
74
85
|
@references.each do |key, ref|
|
75
|
-
html += %Q{ <dt id="ref-#{ref[:
|
76
|
-
html += %Q{ <dd>#{reference_html key}</dd>\n}
|
86
|
+
html += %Q{ <dt id="ref-#{ref[:number]}">\[#{ref[:number]}\]</dt>\n}
|
87
|
+
html += %Q{ <dd resource="#{reference_id key}" typeof="#{reference_type key}">#{reference_html key}</dd>\n}
|
77
88
|
end
|
78
89
|
html += %Q{</dl>\n}
|
79
90
|
end
|
80
91
|
end
|
81
92
|
|
93
|
+
def reference_id key
|
94
|
+
entry = find_entry key
|
95
|
+
entry[:id] ||
|
96
|
+
entry[:doi] && "https://dx.doi.org/#{entry[:doi]}" ||
|
97
|
+
entry[:url] ||
|
98
|
+
"##{key}"
|
99
|
+
end
|
100
|
+
|
101
|
+
def reference_type key
|
102
|
+
case find_entry(key).type
|
103
|
+
when :article, :inproceedings
|
104
|
+
'schema:Article'
|
105
|
+
when :book
|
106
|
+
'schema:Book'
|
107
|
+
when :incollection
|
108
|
+
'schema:Chapter'
|
109
|
+
when :mastersthesis, :phdthesis
|
110
|
+
'schema:Thesis'
|
111
|
+
else
|
112
|
+
'schema:CreativeWork'
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
82
116
|
def reference_html key
|
83
117
|
# Render reference
|
84
118
|
processor = CiteProc::Processor.new style: @style, format: 'html'
|
@@ -88,7 +122,7 @@ module BibMarkdown
|
|
88
122
|
|
89
123
|
# Replace URLs by links
|
90
124
|
citation.gsub %r{https?://[^ ]+[^ .]} do |match|
|
91
|
-
|
125
|
+
create_element :a, h(match), href: match
|
92
126
|
end
|
93
127
|
end
|
94
128
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bibmarkdown
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ruben Verborgh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: citeproc-ruby
|