bibsync 0.0.8 → 0.0.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5578a98ae327ca6b8ee4b5fb0da4b2bbd1786116
4
- data.tar.gz: eb56b9ab2ce3d9f1b6599da6a1b4ca0c76db220e
3
+ metadata.gz: 1ee82317ca7e8c3e5fa9de627bfd9b2f240dced2
4
+ data.tar.gz: 547ff333dc6cb12d5b98e3280aed47aa539889b5
5
5
  SHA512:
6
- metadata.gz: 3050a0ec740223617d6f700bca7725443e3ab2b1a1cce7ef46c6091ed777d18b3bdc3f6f9ad17abcce3b40f923959069960d977128c112cfbe84e933a3bcfbcd
7
- data.tar.gz: d4692dcd5ce86c2cfaf6698a7c77ca5450487067077ba87804325b54cf77a2e7654ae025914819476be79f649e56d21e1c5e056402e46dc02a5d8a3113ed0a57
6
+ metadata.gz: 3778420afe0ea4faeedca5e56c74c7f518f258ddc4cc6ce1dcc09d63fc62b42fa77ec752bc9b5ae0c2c74fbf79138abd3aeb5ee4d00cfe75530e2a7b7540d0bd
7
+ data.tar.gz: f68cd142a1f99b983df76b3b311def93d0a765d4af8ff1b7d2222d96812b2fd70d7ca5683362a42a31e84ca730a475a393e11303ef8c866907d203feb9860574
@@ -13,3 +13,4 @@ require 'bibsync/bibliography'
13
13
  require 'bibsync/entry'
14
14
  require 'bibsync/literal'
15
15
  require 'bibsync/actions'
16
+ require 'bibsync/jabref_formatter'
@@ -4,12 +4,13 @@ module BibSync
4
4
  extend Forwardable
5
5
 
6
6
  attr_reader :file
7
- attr_accessor :save_hook
7
+ attr_accessor :transform_hook, :format_hook
8
8
  def_delegators :@entries, :empty?, :size
9
9
  def_delegator :@entries, :each_value, :each
10
10
 
11
11
  def initialize(file = nil)
12
- @entries, @save_hook = {}, nil
12
+ @entries = {}
13
+ @transform_hook, @format_hook = nil, nil
13
14
  load(file)
14
15
  end
15
16
 
@@ -54,10 +55,11 @@ module BibSync
54
55
 
55
56
  raise 'No filename given' unless @file
56
57
  if @dirty
57
- @save_hook.call(self) if @save_hook
58
+ @transform_hook.call(self) if @transform_hook
58
59
  tmpfile = "#{@file}.tmp"
59
60
  begin
60
61
  File.open(tmpfile, 'w') {|f| f.write(self) }
62
+ @format_hook.call(tmpfile) if @format_hook
61
63
  File.rename(tmpfile, @file)
62
64
  ensure
63
65
  File.unlink(tmpfile) rescue nil
@@ -90,7 +90,8 @@ module BibSync
90
90
 
91
91
  if @options[:bib]
92
92
  bib = @options[:bib] = Bibliography.new(@options[:bib])
93
- bib.save_hook = Transformer.new
93
+ bib.transform_hook = Transformer.new
94
+ bib.format_hook = JabRefFormatter.new if @options[:jabref]
94
95
  at_exit { bib.save }
95
96
  end
96
97
 
@@ -100,7 +101,6 @@ module BibSync
100
101
  actions << :SynchronizeFiles << :DetermineArXivDOI << :SynchronizeMetadata if @options[:sync] || @options[:resync]
101
102
  actions << :FindMyCitations if @options[:citedbyme]
102
103
  actions << :Validate if @options[:bib]
103
- actions << :JabRefFormat if @options[:jabref]
104
104
 
105
105
  if actions.empty?
106
106
  puts "Please specify actions! See #{$0} --help"
@@ -0,0 +1,18 @@
1
+ module BibSync
2
+ class JabRefFormatter
3
+ include Log
4
+
5
+ def call(file)
6
+ if File.read(file, 80) !~ /JabRef/
7
+ notice 'Transforming file with JabRef'
8
+ tmp_file = "#{file}.formatted.bib"
9
+ begin
10
+ `jabref --primp #{Shellwords.escape File.join(File.dirname(__FILE__), 'jabref.xml')} --nogui --import #{Shellwords.escape file} --output #{Shellwords.escape tmp_file} 2>&1 >/dev/null`
11
+ File.rename(tmp_file, file) if File.exists?(tmp_file)
12
+ ensure
13
+ File.unlink(tmp_file) rescue nil
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,3 +1,3 @@
1
1
  module BibSync
2
- VERSION = '0.0.8'
2
+ VERSION = '0.0.9'
3
3
  end
@@ -31,4 +31,8 @@
31
31
  file = {:PhysRevLett.104.106404.txt:TXT}
32
32
  }
33
33
 
34
+ @ARTICLE{NoShortJournal,
35
+ journal={Physical Review Letters}
36
+ }
37
+
34
38
  @COMMENT{TestComment}
@@ -114,6 +114,28 @@ describe BibSync::Bibliography do
114
114
  end
115
115
 
116
116
  describe '#save' do
117
+ it 'must support transform hook' do
118
+ begin
119
+ bib['NoShortJournal'][:shortjournal].must_equal nil
120
+ tmpfile = File.join(fixturedir, 'transform.bib')
121
+ bib.transform_hook = BibSync::Transformer.new
122
+ bib.save(tmpfile)
123
+ bib['NoShortJournal'][:shortjournal].must_equal 'PRL'
124
+ ensure
125
+ File.unlink(tmpfile) rescue nil
126
+ end
127
+ end
128
+
129
+ it 'must support format hook' do
130
+ begin
131
+ tmpfile = File.join(fixturedir, 'format.bib')
132
+ bib.format_hook = BibSync::JabRefFormatter.new
133
+ bib.save(tmpfile)
134
+ File.read(tmpfile).must_match(/created\s+with\s+JabRef/)
135
+ ensure
136
+ File.unlink(tmpfile) rescue nil
137
+ end
138
+ end
117
139
  end
118
140
 
119
141
  describe '#<<' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bibsync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Mendler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-08 00:00:00.000000000 Z
11
+ date: 2013-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -89,14 +89,14 @@ files:
89
89
  - lib/bibsync/actions/determine_arxiv_doi.rb
90
90
  - lib/bibsync/actions/fetch_from_arxiv.rb
91
91
  - lib/bibsync/actions/find_my_citations.rb
92
- - lib/bibsync/actions/jabref.xml
93
- - lib/bibsync/actions/jabref_format.rb
94
92
  - lib/bibsync/actions/synchronize_files.rb
95
93
  - lib/bibsync/actions/synchronize_metadata.rb
96
94
  - lib/bibsync/actions/validate.rb
97
95
  - lib/bibsync/bibliography.rb
98
96
  - lib/bibsync/command.rb
99
97
  - lib/bibsync/entry.rb
98
+ - lib/bibsync/jabref.xml
99
+ - lib/bibsync/jabref_formatter.rb
100
100
  - lib/bibsync/literal.rb
101
101
  - lib/bibsync/log.rb
102
102
  - lib/bibsync/transformer.rb
@@ -106,7 +106,6 @@ files:
106
106
  - test/actions/test_determine_arxiv_doi.rb
107
107
  - test/actions/test_fetch_from_arxiv.rb
108
108
  - test/actions/test_find_my_citations.rb
109
- - test/actions/test_jabref_format.rb
110
109
  - test/actions/test_synchronize_files.rb
111
110
  - test/actions/test_synchronize_metadata.rb
112
111
  - test/actions/test_validate.rb
@@ -140,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
139
  version: '0'
141
140
  requirements: []
142
141
  rubyforge_project: bibsync
143
- rubygems_version: 2.0.0
142
+ rubygems_version: 2.0.3
144
143
  signing_key:
145
144
  specification_version: 4
146
145
  summary: BibSync is a tool to synchronize scientific papers and BibTeX bibliography
@@ -1,22 +0,0 @@
1
- module BibSync
2
- module Actions
3
- class JabRefFormat
4
- include Utils
5
- include Log
6
-
7
- def initialize(options)
8
- raise 'Option --bib is required' unless @bib = options[:bib]
9
- end
10
-
11
- def run
12
- @bib.save
13
- if File.read(@bib.file, 80) !~ /JabRef/
14
- notice 'Transforming file with JabRef'
15
- tmp_file = "#{@bib.file}.tmp.bib"
16
- `jabref --primp #{Shellwords.escape File.join(File.dirname(__FILE__), 'jabref.xml')} --nogui --import #{Shellwords.escape @bib.file} --output #{Shellwords.escape tmp_file} 2>&1 >/dev/null`
17
- File.rename(tmp_file, @bib.file) if File.exists?(tmp_file)
18
- end
19
- end
20
- end
21
- end
22
- end
@@ -1,25 +0,0 @@
1
- require 'helper'
2
-
3
- describe BibSync::Actions::JabRefFormat do
4
- before do
5
- @tmpfile = File.join(fixturedir, 'tmp.bib')
6
- FileUtils.copy(File.join(fixturedir, 'test.bib'), @tmpfile)
7
- end
8
-
9
- after do
10
- File.unlink(@tmpfile) if File.exists?(@tmpfile)
11
- end
12
-
13
- let(:bib) do
14
- BibSync::Bibliography.new(@tmpfile)
15
- end
16
-
17
- let(:action) do
18
- BibSync::Actions::JabRefFormat.new(bib: bib)
19
- end
20
-
21
- it 'should format file' do
22
- action.run
23
- File.read(@tmpfile).must_match(/created\s+with\s+JabRef/)
24
- end
25
- end