jekyll-scholar 4.0.2 → 4.0.4
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/README.md +6 -0
- data/features/bibtex.feature +37 -2
- data/features/citation.feature +46 -0
- data/features/sorting.feature +40 -0
- data/lib/jekyll/scholar/tags/bibliography.rb +15 -7
- data/lib/jekyll/scholar/utilities.rb +34 -15
- data/lib/jekyll/scholar/version.rb +1 -1
- metadata +18 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9fd48f190b2abc3b973877fee2e909b65efc61bb
|
4
|
+
data.tar.gz: 0c0736c080e65a1d5366ae492c85ec70ef3a80e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 24aad2ada7dd544baae2c8c1832de09f3d31e81d4543c621e8ecfbb9e2b834ff1a583a7e1fe2e1a17cb5330241bb57ecb2bfa5fa21c8be15228ab53d3753b79c
|
7
|
+
data.tar.gz: 06d0ed70b9e9b33deda291b05f0bc787ca302abdaf013ee762058c98a89114836605b7845f28fc3c5d80d41f8651710b2ebd8c393a8958e39310827eca3b96ef
|
data/README.md
CHANGED
@@ -248,6 +248,12 @@ the `cited` option to the bibliography tag:
|
|
248
248
|
|
249
249
|
{% bibliography --cited %}
|
250
250
|
|
251
|
+
By default, the `--cited` option will still sort your bibliography if you set
|
252
|
+
the sort option. Especially for styles using citation numbers, this is usually
|
253
|
+
not the desired behaviour. In such cases you can use `--cited_in_order` instead
|
254
|
+
of `--cited` and your bibliography will contain all cited items in the order
|
255
|
+
they were cited on the page.
|
256
|
+
|
251
257
|
For longer quotes, Jekyll-Scholar provides a `quote` tag:
|
252
258
|
|
253
259
|
{% quote derrida:purveyor %}
|
data/features/bibtex.feature
CHANGED
@@ -94,7 +94,7 @@ Feature: BibTeX
|
|
94
94
|
Given I have a scholar configuration with:
|
95
95
|
| key | value |
|
96
96
|
| source | ./_bibliography |
|
97
|
-
| bibliography_template | <abbr>{{index}} [{{key}}]</abbr>{{reference}} |
|
97
|
+
| bibliography_template | <abbr>{{index}} {{entry.type}} [{{key}}]</abbr>{{reference}} |
|
98
98
|
And I have a "_bibliography" directory
|
99
99
|
And I have a file "_bibliography/references.bib":
|
100
100
|
"""
|
@@ -115,7 +115,7 @@ Feature: BibTeX
|
|
115
115
|
Then the _site directory should exist
|
116
116
|
And the "_site/scholar.html" file should exist
|
117
117
|
And I should see "<i>The Ruby Programming Language</i>" in "_site/scholar.html"
|
118
|
-
And I should see "<abbr>1 \[ruby\]</abbr><span" in "_site/scholar.html"
|
118
|
+
And I should see "<abbr>1 book \[ruby\]</abbr><span" in "_site/scholar.html"
|
119
119
|
|
120
120
|
@tags @filter
|
121
121
|
Scenario: Filtered Bibliography Loaded From Default Directory
|
@@ -151,6 +151,41 @@ Feature: BibTeX
|
|
151
151
|
And I should not see "<i>The Ruby Programming Language</i>" in "_site/scholar.html"
|
152
152
|
And I should see "<i>Smalltalk Best Practice Patterns</i>" in "_site/scholar.html"
|
153
153
|
|
154
|
+
@tags @filter @variables
|
155
|
+
Scenario: Filter using interpolated query variable
|
156
|
+
Given I have a scholar configuration with:
|
157
|
+
| key | value |
|
158
|
+
| source | ./_bibliography |
|
159
|
+
And I have a "_bibliography" directory
|
160
|
+
And I have a file "_bibliography/references.bib":
|
161
|
+
"""
|
162
|
+
@book{ruby,
|
163
|
+
title = {The Ruby Programming Language},
|
164
|
+
author = {Flanagan, David and Matsumoto, Yukihiro},
|
165
|
+
year = {2008},
|
166
|
+
publisher = {O'Reilly Media}
|
167
|
+
},
|
168
|
+
@book{smalltalk,
|
169
|
+
title = {Smalltalk Best Practice Patterns},
|
170
|
+
author = {Kent Beck},
|
171
|
+
year = {1996},
|
172
|
+
publisher = {Prentice Hall}
|
173
|
+
}
|
174
|
+
|
175
|
+
"""
|
176
|
+
And I have a page "scholar.html":
|
177
|
+
"""
|
178
|
+
---
|
179
|
+
---
|
180
|
+
{% assign yr = 2000 %}
|
181
|
+
{% bibliography -f references --query @book[year <= {{ yr }}] %}
|
182
|
+
"""
|
183
|
+
When I run jekyll
|
184
|
+
Then the _site directory should exist
|
185
|
+
And the "_site/scholar.html" file should exist
|
186
|
+
And I should not see "<i>The Ruby Programming Language</i>" in "_site/scholar.html"
|
187
|
+
And I should see "<i>Smalltalk Best Practice Patterns</i>" in "_site/scholar.html"
|
188
|
+
|
154
189
|
@tags @bibliography @prefix
|
155
190
|
Scenario: A Prefixed Bibliography
|
156
191
|
Given I have a scholar configuration with:
|
data/features/citation.feature
CHANGED
@@ -277,3 +277,49 @@ Feature: Citations
|
|
277
277
|
Then the _site directory should exist
|
278
278
|
And the "_site/scholar.html" file should exist
|
279
279
|
And I should see "Flanagan" in "_site/scholar.html"
|
280
|
+
|
281
|
+
@tags @cite @variables @data
|
282
|
+
Scenario: Multiple Citations in a list using liquid variables
|
283
|
+
Given I have a scholar configuration with:
|
284
|
+
| key | value |
|
285
|
+
| source | ./_bibliography |
|
286
|
+
| bibliography | my_references |
|
287
|
+
And I have a "_bibliography" directory
|
288
|
+
And I have a file "_bibliography/my_references.bib":
|
289
|
+
"""
|
290
|
+
@book{ruby,
|
291
|
+
title = {The Ruby Programming Language},
|
292
|
+
author = {Flanagan, David and Matsumoto, Yukihiro},
|
293
|
+
year = {2008},
|
294
|
+
publisher = {O'Reilly Media}
|
295
|
+
}
|
296
|
+
|
297
|
+
@book{gof,
|
298
|
+
Author = {Erich Gamma and Richard Helm and Ralph Johnson and John Vlissides},
|
299
|
+
Title = {Design Patterns: Elements of Reusable Object-Oriented Software},
|
300
|
+
Publisher = {Addison-Wesley Professional},
|
301
|
+
Year = {1994},
|
302
|
+
}
|
303
|
+
"""
|
304
|
+
And I have a "_data" directory
|
305
|
+
And I have a file "_data/covers.yml":
|
306
|
+
"""
|
307
|
+
- reference: "ruby"
|
308
|
+
image: "/img/covers/cover_01.png"
|
309
|
+
- reference: "gof"
|
310
|
+
image: "/img/covers/cover_02.png"
|
311
|
+
"""
|
312
|
+
And I have a page "scholar.html":
|
313
|
+
"""
|
314
|
+
---
|
315
|
+
---
|
316
|
+
{% for cover in site.data.covers %}
|
317
|
+
{% cite cover.reference %}
|
318
|
+
{% endfor %}
|
319
|
+
"""
|
320
|
+
When I run jekyll
|
321
|
+
Then the _site directory should exist
|
322
|
+
And the "_site/scholar.html" file should exist
|
323
|
+
And I should see "Flanagan" in "_site/scholar.html"
|
324
|
+
And I should see "Gamma" in "_site/scholar.html"
|
325
|
+
|
data/features/sorting.feature
CHANGED
@@ -150,3 +150,43 @@ Feature: Sorting BibTeX Bibliographies
|
|
150
150
|
Then "Ruby Programming" should come before "Smalltalk" in "_site/scholar.html"
|
151
151
|
And I should not see "<i>Ruby Not Cited</i>" in "_site/scholar.html"
|
152
152
|
|
153
|
+
@tags @sorting @cited_in_order
|
154
|
+
Scenario: Sort By Year Cited in Order
|
155
|
+
Given I have a scholar configuration with:
|
156
|
+
| key | value |
|
157
|
+
| sort_by | year |
|
158
|
+
And I have a "_bibliography" directory
|
159
|
+
And I have a file "_bibliography/references.bib":
|
160
|
+
"""
|
161
|
+
@book{ruby1,
|
162
|
+
title = {The Ruby Programming Language},
|
163
|
+
author = {Flanagan, David and Matsumoto, Yukihiro},
|
164
|
+
year = {2008},
|
165
|
+
publisher = {O'Reilly Media}
|
166
|
+
}
|
167
|
+
@book{ruby2,
|
168
|
+
title = {Ruby Not Cited},
|
169
|
+
author = {Flanagan, David and Matsumoto, Yukihiro},
|
170
|
+
year = {2007},
|
171
|
+
publisher = {O'Reilly Media}
|
172
|
+
}
|
173
|
+
@book{smalltalk,
|
174
|
+
title = {Smalltalk Best Practice Patterns},
|
175
|
+
author = {Kent Beck},
|
176
|
+
year = {1996},
|
177
|
+
publisher = {Prentice Hall}
|
178
|
+
}
|
179
|
+
"""
|
180
|
+
And I have a page "scholar.html":
|
181
|
+
"""
|
182
|
+
---
|
183
|
+
---
|
184
|
+
{% cite ruby1 %}
|
185
|
+
{% cite smalltalk %}
|
186
|
+
{% bibliography --cited_in_order %}
|
187
|
+
"""
|
188
|
+
When I run jekyll
|
189
|
+
Then the _site directory should exist
|
190
|
+
And the "_site/scholar.html" file should exist
|
191
|
+
Then "Ruby Programming" should come before "Smalltalk" in "_site/scholar.html"
|
192
|
+
And I should not see "<i>Ruby Not Cited</i>" in "_site/scholar.html"
|
@@ -15,15 +15,23 @@ module Jekyll
|
|
15
15
|
def render(context)
|
16
16
|
set_context_to context
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
18
|
+
items = entries
|
19
|
+
|
20
|
+
if cited_only?
|
21
|
+
items = if skip_sort?
|
22
|
+
cited_references.uniq.map do |key|
|
23
|
+
items.detect { |e| e.key == key }
|
24
|
+
end
|
25
|
+
else
|
26
|
+
entries.select do |e|
|
27
|
+
cited_references.include? e.key
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
23
31
|
|
24
|
-
|
32
|
+
items = items.take(max.to_i) if limit_entries?
|
25
33
|
|
26
|
-
bibliography =
|
34
|
+
bibliography = items.each_with_index.map { |entry, index|
|
27
35
|
reference = bibliography_tag(entry, index + 1)
|
28
36
|
|
29
37
|
if generate_details?
|
@@ -14,8 +14,7 @@ module Jekyll
|
|
14
14
|
# #site readers
|
15
15
|
module Utilities
|
16
16
|
|
17
|
-
attr_reader :config, :site, :
|
18
|
-
:context, :prefix, :keys, :text, :max
|
17
|
+
attr_reader :config, :site, :context, :prefix, :text, :max
|
19
18
|
|
20
19
|
def split_arguments(arguments)
|
21
20
|
|
@@ -35,6 +34,10 @@ module Jekyll
|
|
35
34
|
@cited = true
|
36
35
|
end
|
37
36
|
|
37
|
+
opts.on('-C', '--cited_in_order') do |cited|
|
38
|
+
@cited, @skip_sort = true, true
|
39
|
+
end
|
40
|
+
|
38
41
|
opts.on('-f', '--file FILE') do |file|
|
39
42
|
@bibtex_files ||= []
|
40
43
|
@bibtex_files << file
|
@@ -69,7 +72,7 @@ module Jekyll
|
|
69
72
|
end
|
70
73
|
end
|
71
74
|
|
72
|
-
argv = arguments.split(/(\B-[
|
75
|
+
argv = arguments.split(/(\B-[cCfqptTslm]|\B--(?:cited(_in_order)?|file|query|prefix|text|style|template|locator|max|))/)
|
73
76
|
|
74
77
|
parser.parse argv.map(&:strip).reject(&:empty?)
|
75
78
|
end
|
@@ -119,6 +122,10 @@ module Jekyll
|
|
119
122
|
@bibliography
|
120
123
|
end
|
121
124
|
|
125
|
+
def query
|
126
|
+
interpolate @query
|
127
|
+
end
|
128
|
+
|
122
129
|
def entries
|
123
130
|
sort bibliography[query || config['query']]
|
124
131
|
end
|
@@ -128,7 +135,7 @@ module Jekyll
|
|
128
135
|
end
|
129
136
|
|
130
137
|
def sort(unsorted)
|
131
|
-
return unsorted if
|
138
|
+
return unsorted if skip_sort?
|
132
139
|
|
133
140
|
sorted = unsorted.sort_by { |e| e[config['sort_by']].to_s }
|
134
141
|
sorted.reverse! if config['order'] =~ /^(desc|reverse)/i
|
@@ -167,6 +174,10 @@ module Jekyll
|
|
167
174
|
!!@cited
|
168
175
|
end
|
169
176
|
|
177
|
+
def skip_sort?
|
178
|
+
@skip_sort || config['sort_by'] == 'none'
|
179
|
+
end
|
180
|
+
|
170
181
|
def extend_path(name)
|
171
182
|
if name.nil? || name.empty?
|
172
183
|
name = config['bibliography']
|
@@ -228,7 +239,7 @@ module Jekyll
|
|
228
239
|
'entry' => liquidify(entry),
|
229
240
|
'reference' => reference_tag(entry, index),
|
230
241
|
'key' => entry.key,
|
231
|
-
'type' => entry.type,
|
242
|
+
'type' => entry.type.to_s,
|
232
243
|
'link' => repository_link_for(entry),
|
233
244
|
'index' => index
|
234
245
|
})
|
@@ -238,7 +249,7 @@ module Jekyll
|
|
238
249
|
e = {}
|
239
250
|
|
240
251
|
e['key'] = entry.key
|
241
|
-
e['type'] = entry.type
|
252
|
+
e['type'] = entry.type.to_s
|
242
253
|
|
243
254
|
if entry.field?(:abstract)
|
244
255
|
tmp = entry.dup
|
@@ -327,9 +338,6 @@ module Jekyll
|
|
327
338
|
|
328
339
|
def cite(keys)
|
329
340
|
items = keys.map do |key|
|
330
|
-
# dereference variables in current scope
|
331
|
-
key = context.scopes.last[key] || key
|
332
|
-
|
333
341
|
if bibliography.key?(key)
|
334
342
|
entry = bibliography[key]
|
335
343
|
entry = entry.convert(*bibtex_filters) unless bibtex_filters.empty?
|
@@ -373,15 +381,26 @@ module Jekyll
|
|
373
381
|
context && context['cited'] || []
|
374
382
|
end
|
375
383
|
|
384
|
+
def keys
|
385
|
+
# De-reference keys (in case they are variables)
|
386
|
+
# We need to do this every time, to support for loops,
|
387
|
+
# where the context can change for each invocation.
|
388
|
+
Array(@keys).map do |key|
|
389
|
+
context.send(:resolve, key) || key
|
390
|
+
end
|
391
|
+
end
|
392
|
+
|
393
|
+
def interpolate(string)
|
394
|
+
return unless string
|
395
|
+
|
396
|
+
string.gsub(/{{\s*([\w\.]+)\s*}}/) do |match|
|
397
|
+
context.send(:resolve, $1) || match
|
398
|
+
end
|
399
|
+
end
|
400
|
+
|
376
401
|
def set_context_to(context)
|
377
402
|
@context, @site, = context, context.registers[:site]
|
378
403
|
config.merge!(site.config['scholar'] || {})
|
379
|
-
|
380
|
-
# De-reference keys
|
381
|
-
keys.map! do |key|
|
382
|
-
context.send(:resolve, key) || key
|
383
|
-
end unless keys.nil?
|
384
|
-
|
385
404
|
self
|
386
405
|
end
|
387
406
|
end
|
metadata
CHANGED
@@ -1,84 +1,84 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-scholar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sylvester Keil
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-06-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '2.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: citeproc-ruby
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: csl-styles
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '1.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bibtex-ruby
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '3.0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '3.0'
|
69
|
-
description:
|
69
|
+
description: ' Jekyll-Scholar is for all the academic bloggers out there. It is a
|
70
70
|
set of extensions for Jekyll the awesome, blog aware, static site generator; it
|
71
71
|
formats your BibTeX bibliographies for the web using CSL citation styles and generally
|
72
|
-
gives your blog posts citation super-powers.'
|
72
|
+
gives your blog posts citation super-powers.'' '
|
73
73
|
email: http://sylvester.keil.or.at
|
74
74
|
executables: []
|
75
75
|
extensions: []
|
76
76
|
extra_rdoc_files: []
|
77
77
|
files:
|
78
|
-
-
|
79
|
-
-
|
80
|
-
-
|
81
|
-
-
|
78
|
+
- .coveralls.yml
|
79
|
+
- .gitignore
|
80
|
+
- .simplecov
|
81
|
+
- .travis.yml
|
82
82
|
- Gemfile
|
83
83
|
- LICENSE
|
84
84
|
- README.md
|
@@ -121,12 +121,12 @@ require_paths:
|
|
121
121
|
- lib
|
122
122
|
required_ruby_version: !ruby/object:Gem::Requirement
|
123
123
|
requirements:
|
124
|
-
- -
|
124
|
+
- - '>='
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: '0'
|
127
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - '>='
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: 1.3.6
|
132
132
|
requirements: []
|