Module: Dblpbib

Defined in:
lib/dblpbib.rb,
lib/dblpbib/version.rb

Overview

Bits of logic

Constant Summary collapse

VERSION =
'0.2.0'.freeze
DESCRIPTION =
'Automatically create bibliographies for ' \
'BibTeX DBLP references.'.freeze

Class Method Summary collapse

Class Method Details

.scan_keys(document) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/dblpbib.rb', line 5

def self.scan_keys(document)
  # TODO: Extract the allowed command names, possible make them configurable
  document
    .gsub(/(?<!\\)%.*$/, '')
    .scan(%r{
      # Command
      \\(text|auto)?cite(|(al)?[pt]\*?|year(par|\*)?|par\*?|author\*?|text|)
      # Optionally options
      (\[[^\]]+\])?
      # Parameters
      \{([^\}]+)\}
    }x)
    .map(&:pop)
    .flat_map { |keyset| keyset.split(',') }
    .map(&:strip)
    .keep_if { |key| key.start_with?('DBLP:') }
    .map { |key| key.sub('DBLP:', '') }
    .uniq
end