Commit 56208901 authored by Sylvester Keil's avatar Sylvester Keil

added css classes to bibliography and links

parent 2b984387
...@@ -74,4 +74,4 @@ Feature: BibTeX ...@@ -74,4 +74,4 @@ Feature: BibTeX
When I run jekyll When I run jekyll
Then the _site directory should exist Then the _site directory should exist
And the "_site/scholar.html" file should exist And the "_site/scholar.html" file should exist
And I should see "<a href=\"/bibliography/ruby.html\">" in "_site/scholar.html" And I should see "<a[^>]+href=\"/bibliography/ruby.html\">" in "_site/scholar.html"
...@@ -15,6 +15,9 @@ module Jekyll ...@@ -15,6 +15,9 @@ module Jekyll
details_layout bibtex.html details_layout bibtex.html
details_link Details details_link Details
bibliography_class bibliography
details_link_class details
query @* query @*
}].freeze }].freeze
......
...@@ -17,21 +17,30 @@ module Jekyll ...@@ -17,21 +17,30 @@ module Jekyll
references = entries.map do |entry| references = entries.map do |entry|
reference = CiteProc.process entry.to_citeproc, :style => config['style'], reference = CiteProc.process entry.to_citeproc, :style => config['style'],
:locale => config['locale'], :format => 'html' :locale => config['locale'], :format => 'html'
reference = content_tag :span, reference, :id => entry.key reference = content_tag :span, reference, :id => entry.key
if generate_details? if generate_details?
reference << link_to(details_link_for(entry), config['details_link']) reference << link_to(details_link_for(entry),
config['details_link'], :class => config['details_link_class'])
end end
content_tag :li, reference content_tag :li, reference
end end
content_tag :ol, references.join("\n") content_tag :ol, references.join("\n"), :class => config['bibliography_class']
end end
end end
private
def citeproc
@citeproc ||= CiteProc::Processor.new do |p|
p.style = config['style']
p.format = 'html'
p.locale = config['locale']
end
end
end end
end end
......
module Jekyll module Jekyll
class Scholar class Scholar
# Utility methods used by several Scholar plugins. The methods in this # Utility methods used by several Scholar plugins. The methods in this
# module may depend on the presence of #config, #bibtex_file, and # module may depend on the presence of #config, #bibtex_file, and
# #site readers # #site readers
module Utilities module Utilities
attr_reader :bibtex_file, :config, :site attr_reader :bibtex_file, :config, :site
def bibtex_options def bibtex_options
@bibtex_options ||= { :filter => :latex } @bibtex_options ||= { :filter => :latex }
end end
def bibtex_path def bibtex_path
@bibtex_path ||= extend_path(bibtex_file) @bibtex_path ||= extend_path(bibtex_file)
end end
def bibliography def bibliography
@bibliography ||= BibTeX.open(bibtex_path, bibtex_options) @bibliography ||= BibTeX.open(bibtex_path, bibtex_options)
end end
def entries def entries
b = bibliography[config['query']] b = bibliography[config['query']]
...@@ -27,83 +27,85 @@ module Jekyll ...@@ -27,83 +27,85 @@ module Jekyll
b = b.sort_by { |e| e[config['sort_by']].to_s } b = b.sort_by { |e| e[config['sort_by']].to_s }
b.reverse! if config['order'] =~ /^(desc|reverse)/i b.reverse! if config['order'] =~ /^(desc|reverse)/i
end end
b b
end end
def extend_path(name) def extend_path(name)
if name.nil? || name.empty? if name.nil? || name.empty?
name = config['bibliography'] name = config['bibliography']
end end
p = File.join(config['source'], name) p = File.join(config['source'], name)
p << '.bib' unless File.exists?(p) p << '.bib' unless File.exists?(p)
p p
end end
def generate_details? def generate_details?
site.layouts.key?(File.basename(config['details_layout'], '.html')) site.layouts.key?(File.basename(config['details_layout'], '.html'))
end end
def details_file_for(entry) def details_file_for(entry)
name = entry.key.to_s.dup name = entry.key.to_s.dup
name.gsub!(/[:\s]+/, '_') name.gsub!(/[:\s]+/, '_')
[name, 'html'].join('.') [name, 'html'].join('.')
end end
def details_link_for(entry, base = base_url) def details_link_for(entry, base = base_url)
File.join(base, details_path, details_file_for(entry)) File.join(base, details_path, details_file_for(entry))
end end
def base_url def base_url
@base_url ||= site.config['baseurl'] || site.config['base_url'] || '' @base_url ||= site.config['baseurl'] || site.config['base_url'] || ''
end end
def details_path def details_path
config['details_dir'] config['details_dir']
end end
def cite(key) def cite(key)
entry = bibliography[key] entry = bibliography[key]
if bibliography.key?(key) if bibliography.key?(key)
citation = CiteProc.process entry.to_citeproc, :style => config['style'], citation = CiteProc.process entry.to_citeproc, :style => config['style'],
:locale => config['locale'], :format => 'html', :mode => :citation :locale => config['locale'], :format => 'html', :mode => :citation
link_to "##{entry.key}", citation.join link_to "##{entry.key}", citation.join
else else
"(missing reference)" "(missing reference)"
end end
rescue
"(#{key})"
end end
def content_tag(name, content_or_attributes, attributes = {}) def content_tag(name, content_or_attributes, attributes = {})
if content_or_attributes.is_a?(Hash) if content_or_attributes.is_a?(Hash)
content, attributes = nil, content_or_attributes content, attributes = nil, content_or_attributes
else else
content = content_or_attributes content = content_or_attributes
end end
attributes = attributes.map { |k,v| %Q(#{k}="#{v}") } attributes = attributes.map { |k,v| %Q(#{k}="#{v}") }
if content.nil? if content.nil?
"<#{[name, attributes].flatten.compact.join(' ')}/>" "<#{[name, attributes].flatten.compact.join(' ')}/>"
else else
"<#{[name, attributes].flatten.compact.join(' ')}>#{content}</#{name}>" "<#{[name, attributes].flatten.compact.join(' ')}>#{content}</#{name}>"
end end
end end
def link_to(href, content, attributes = {}) def link_to(href, content, attributes = {})
content_tag :a, content || href, attributes.merge(:href => href) content_tag :a, content || href, attributes.merge(:href => href)
end end
def set_context_to(context) def set_context_to(context)
@site = context.registers[:site] @site = context.registers[:site]
config.merge!(site.config['scholar'] || {}) config.merge!(site.config['scholar'] || {})
end end
end end
end end
end end
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment