bivy 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +21 -0
- data/History +16 -0
- data/LICENSE +29 -0
- data/README.rdoc +37 -0
- data/Rakefile +43 -0
- data/TODO +12 -0
- data/VERSION +1 -0
- data/bin/bivy.rb +56 -0
- data/bin/pubmed_to_bivy.rb +78 -0
- data/doc/config.yaml +13 -0
- data/doc/src/default.css +126 -0
- data/doc/src/default.template +38 -0
- data/doc/src/tutorial/basic_flow.page +71 -0
- data/doc/src/tutorial/index.page +8 -0
- data/doc/src/tutorial/new_formats_and_media.page +83 -0
- data/jrn_abbrev/abbr_html.tgz +0 -0
- data/jrn_abbrev/abbr_to_journal.yaml +676 -0
- data/jrn_abbrev/download_abbrevs.rb +20 -0
- data/jrn_abbrev/for_ruby_class.rb +686 -0
- data/jrn_abbrev/html_to_yaml.rb +50 -0
- data/lib/bibliography.rb +144 -0
- data/lib/bivy.rb +4 -0
- data/lib/citation.rb +194 -0
- data/lib/format.rb +120 -0
- data/lib/format/acs.rb +88 -0
- data/lib/format/bioinformatics.rb +33 -0
- data/lib/format/bmc.rb +38 -0
- data/lib/format/jtp.rb +30 -0
- data/lib/format/mla.rb +50 -0
- data/lib/formatter.rb +276 -0
- data/lib/journal.rb +6 -0
- data/lib/journal/iso_to_full.yaml +1320 -0
- data/lib/journal/medline_to_full.yaml +7 -0
- data/lib/journal/medline_to_iso.yaml +45 -0
- data/lib/media.rb +88 -0
- data/lib/media/html.rb +65 -0
- data/lib/ooffice.rb +39 -0
- data/lib/pubmed.rb +209 -0
- data/lib/rtf.rb +217 -0
- data/old_stuff/old_list2refs.rb +103 -0
- data/old_stuff/pubmed2html.rb +119 -0
- data/old_stuff/pubmed_bib_write.rb +92 -0
- data/old_stuff/xml.tmp.xml +115 -0
- data/scripts/merge_bibs.rb +70 -0
- data/spec/bibliography_spec.rb +127 -0
- data/spec/citation_positions.odt +0 -0
- data/spec/formatter_spec.rb +14 -0
- data/spec/formatter_spec/cits_after.xml +2 -0
- data/spec/formatter_spec/cits_before.xml +2 -0
- data/spec/formatter_spec/content.xml +2 -0
- data/spec/ooffice_spec.rb +27 -0
- data/spec/pubmed_spec.rb +26 -0
- data/spec/spec_helper.rb +7 -0
- data/spec/testfiles/doc1.odt +0 -0
- metadata +136 -0
@@ -0,0 +1,115 @@
|
|
1
|
+
<PubmedArticle>
|
2
|
+
<MedlineCitation Owner=\"NLM\" Status=\"MEDLINE\">
|
3
|
+
<PMID>17323448</PMID>
|
4
|
+
<DateCreated>
|
5
|
+
<Year>2007</Year>
|
6
|
+
<Month>02</Month>
|
7
|
+
<Day>23</Day>
|
8
|
+
</DateCreated>
|
9
|
+
<DateCompleted>
|
10
|
+
<Year>2007</Year>
|
11
|
+
<Month>03</Month>
|
12
|
+
<Day>27</Day>
|
13
|
+
</DateCompleted>
|
14
|
+
<Article PubModel=\"Print\">
|
15
|
+
<Journal>
|
16
|
+
<ISSN IssnType=\"Print\">0003-2700</ISSN>
|
17
|
+
<JournalIssue CitedMedium=\"Print\">
|
18
|
+
<Volume>79</Volume>
|
19
|
+
<Issue>3</Issue>
|
20
|
+
<PubDate>
|
21
|
+
<Year>2007</Year>
|
22
|
+
<Month>Feb</Month>
|
23
|
+
<Day>1</Day>
|
24
|
+
</PubDate>
|
25
|
+
</JournalIssue>
|
26
|
+
<Title>Analytical chemistry</Title>
|
27
|
+
<ISOAbbreviation>Anal. Chem.</ISOAbbreviation>
|
28
|
+
</Journal>
|
29
|
+
<ArticleTitle>Separation media for microchips.</ArticleTitle>
|
30
|
+
<Pagination>
|
31
|
+
<MedlinePgn>800-8</MedlinePgn>
|
32
|
+
</Pagination>
|
33
|
+
<Affiliation>University of Arizona, USA. mwirth@email.arizona.edu</Affiliation>
|
34
|
+
<AuthorList CompleteYN=\"Y\">
|
35
|
+
<Author ValidYN=\"Y\">
|
36
|
+
<LastName>Wirth</LastName>
|
37
|
+
<ForeName>Mary J</ForeName>
|
38
|
+
<Initials>MJ</Initials>
|
39
|
+
</Author>
|
40
|
+
</AuthorList>
|
41
|
+
<Language>eng</Language>
|
42
|
+
<GrantList CompleteYN=\"Y\">
|
43
|
+
<Grant>
|
44
|
+
<GrantID>R01 GM65980</GrantID>
|
45
|
+
<Acronym>GM</Acronym>
|
46
|
+
<Agency>NIGMS</Agency>
|
47
|
+
</Grant>
|
48
|
+
</GrantList>
|
49
|
+
<PublicationTypeList>
|
50
|
+
<PublicationType>Journal Article</PublicationType>
|
51
|
+
<PublicationType>Research Support, N.I.H., Extramural</PublicationType>
|
52
|
+
<PublicationType>Review</PublicationType>
|
53
|
+
</PublicationTypeList>
|
54
|
+
</Article>
|
55
|
+
<MedlineJournalInfo>
|
56
|
+
<Country>United States</Country>
|
57
|
+
<MedlineTA>Anal Chem</MedlineTA>
|
58
|
+
<NlmUniqueID>0370536</NlmUniqueID>
|
59
|
+
</MedlineJournalInfo>
|
60
|
+
<ChemicalList>
|
61
|
+
<Chemical>
|
62
|
+
<RegistryNumber>9007-49-2</RegistryNumber>
|
63
|
+
<NameOfSubstance>DNA</NameOfSubstance>
|
64
|
+
</Chemical>
|
65
|
+
</ChemicalList>
|
66
|
+
<CitationSubset>IM</CitationSubset>
|
67
|
+
<MeshHeadingList>
|
68
|
+
<MeshHeading>
|
69
|
+
<DescriptorName MajorTopicYN=\"Y\">Chemical Fractionation</DescriptorName>
|
70
|
+
</MeshHeading>
|
71
|
+
<MeshHeading>
|
72
|
+
<DescriptorName MajorTopicYN=\"N\">DNA</DescriptorName>
|
73
|
+
<QualifierName MajorTopicYN=\"N\">analysis</QualifierName>
|
74
|
+
</MeshHeading>
|
75
|
+
<MeshHeading>
|
76
|
+
<DescriptorName MajorTopicYN=\"Y\">Microchip Analytical Procedures</DescriptorName>
|
77
|
+
</MeshHeading>
|
78
|
+
<MeshHeading>
|
79
|
+
<DescriptorName MajorTopicYN=\"N\">Oligonucleotide Array Sequence Analysis</DescriptorName>
|
80
|
+
</MeshHeading>
|
81
|
+
<MeshHeading>
|
82
|
+
<DescriptorName MajorTopicYN=\"N\">Protein Array Analysis</DescriptorName>
|
83
|
+
</MeshHeading>
|
84
|
+
<MeshHeading>
|
85
|
+
<DescriptorName MajorTopicYN=\"N\">Proteomics</DescriptorName>
|
86
|
+
</MeshHeading>
|
87
|
+
<MeshHeading>
|
88
|
+
<DescriptorName MajorTopicYN=\"N\">Research</DescriptorName>
|
89
|
+
</MeshHeading>
|
90
|
+
</MeshHeadingList>
|
91
|
+
<NumberOfReferences>54</NumberOfReferences>
|
92
|
+
</MedlineCitation>
|
93
|
+
<PubmedData>
|
94
|
+
<History>
|
95
|
+
<PubMedPubDate PubStatus=\"pubmed\">
|
96
|
+
<Year>2007</Year>
|
97
|
+
<Month>2</Month>
|
98
|
+
<Day>27</Day>
|
99
|
+
<Hour>9</Hour>
|
100
|
+
<Minute>0</Minute>
|
101
|
+
</PubMedPubDate>
|
102
|
+
<PubMedPubDate PubStatus=\"medline\">
|
103
|
+
<Year>2007</Year>
|
104
|
+
<Month>3</Month>
|
105
|
+
<Day>28</Day>
|
106
|
+
<Hour>9</Hour>
|
107
|
+
<Minute>0</Minute>
|
108
|
+
</PubMedPubDate>
|
109
|
+
</History>
|
110
|
+
<PublicationStatus>ppublish</PublicationStatus>
|
111
|
+
<ArticleIdList>
|
112
|
+
<ArticleId IdType=\"pubmed\">17323448</ArticleId>
|
113
|
+
</ArticleIdList>
|
114
|
+
</PubmedData>
|
115
|
+
</PubmedArticle>
|
@@ -0,0 +1,70 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
require 'optparse'
|
6
|
+
|
7
|
+
$force = false
|
8
|
+
opts = OptionParser.new do |op|
|
9
|
+
op.banner = "usage: #{File.basename(__FILE__)} bib.yml ..."
|
10
|
+
op.separator "on matching key or pmid aborts with informative warning"
|
11
|
+
op.separator "otherwise, outputs file 'merged.yml'"
|
12
|
+
op.on("-f", "--force", "gives warnings but still prints merged.yml") { $force = true }
|
13
|
+
end
|
14
|
+
|
15
|
+
opts.parse!
|
16
|
+
|
17
|
+
if ARGV.size < 2
|
18
|
+
puts opts.to_s
|
19
|
+
exit
|
20
|
+
end
|
21
|
+
|
22
|
+
all_pmids = {}
|
23
|
+
all_refs = {}
|
24
|
+
overlapping_refs = Hash.new {|h,k| h[k] = [] }
|
25
|
+
overlapping_pmids = Hash.new {|h,k| h[k] = [] }
|
26
|
+
one_bad = false
|
27
|
+
ARGV.each do |file|
|
28
|
+
yml = YAML.load_file(file)
|
29
|
+
yml.each do |k,v|
|
30
|
+
if all_refs.key?(k)
|
31
|
+
unless all_refs[k] == v
|
32
|
+
overlapping_refs[k].push(v)
|
33
|
+
end
|
34
|
+
elsif all_pmids.key?(k)
|
35
|
+
overlapping_pmids[k].push(v)
|
36
|
+
end
|
37
|
+
all_refs[k] = v
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
bad_keys = overlapping_refs.size > 0 || overlapping_pmids.size > 0
|
42
|
+
|
43
|
+
if bad_keys
|
44
|
+
if overlapping_refs.size > 0
|
45
|
+
puts "Overlapping KEYS (but different entries): "
|
46
|
+
overlapping_refs.each do |k,v|
|
47
|
+
puts "#{k}:"
|
48
|
+
v.each do |val|
|
49
|
+
puts "<<<<<<<<<<<<<"
|
50
|
+
puts "#{val.to_yaml}"
|
51
|
+
puts ">>>>>>>>>>>>>"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
if overlapping_pmids.size > 0
|
56
|
+
puts "Overlapping PMIDs: "
|
57
|
+
overlapping_pmids.each do |k,v|
|
58
|
+
puts "#{k}:"
|
59
|
+
v.each do |val|
|
60
|
+
puts "<<<<<<<<<<<<<"
|
61
|
+
puts "#{val.to_yaml}"
|
62
|
+
puts ">>>>>>>>>>>>>"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
if !bad_keys || $force
|
68
|
+
puts "printing to file: \"merged.yml\""
|
69
|
+
File.open('merged.yml', 'w') {|out| out.print(all_refs.to_yaml) }
|
70
|
+
end
|
@@ -0,0 +1,127 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'bibliography'
|
4
|
+
require 'citation'
|
5
|
+
#require 'format/html'
|
6
|
+
|
7
|
+
|
8
|
+
describe 'basic bibliography test' do
|
9
|
+
before do
|
10
|
+
authors = %w(HQ BY JT).zip(%w(Dork Man Prince)).map do |init, last|
|
11
|
+
Citation::Author.new(last, init)
|
12
|
+
end
|
13
|
+
hash = {
|
14
|
+
:authors => authors, :title => "Silly Title", :journal_medline => 'Jail Cell', :journal_full => 'Jail Cell', :journal_iso => 'Jail Cell', :year => '1996', :month => 'Aug', :vol => 32, :pages => '32-8', :ident => 'Prince1996', :quotes => []
|
15
|
+
}
|
16
|
+
@cit1 = Citation::Article.new(hash)
|
17
|
+
authors2 = %w(BM).zip(%w(Smith)).map do |init, last|
|
18
|
+
Citation::Author.new(last, init)
|
19
|
+
end
|
20
|
+
hash2 = {
|
21
|
+
:authors => authors2, :title => "Wacky Backy", :publisher => 'Rocky Mountain Publishing', :year => '2003', :ident => 'Smelly2003'
|
22
|
+
}
|
23
|
+
@cit2 = Citation::Book.new(hash2)
|
24
|
+
@cits = [@cit1, @cit2]
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'makes a YAML round trip' do
|
28
|
+
yaml = <<END
|
29
|
+
---
|
30
|
+
month: Aug
|
31
|
+
journal_full: Jail Cell
|
32
|
+
journal_iso: Jail Cell
|
33
|
+
journal_medline: Jail Cell
|
34
|
+
title: Silly Title
|
35
|
+
ident: Prince1996
|
36
|
+
year: "1996"
|
37
|
+
authors:
|
38
|
+
- Dork, HQ
|
39
|
+
- Man, BY
|
40
|
+
- Prince, JT
|
41
|
+
pages: 32-8
|
42
|
+
quotes: []
|
43
|
+
bibtype: article
|
44
|
+
vol: 32
|
45
|
+
END
|
46
|
+
|
47
|
+
YAML.load(@cit1.to_yaml).is YAML.load(yaml) # just frozen really
|
48
|
+
|
49
|
+
bibyaml = <<END2
|
50
|
+
Prince1996:
|
51
|
+
month: Aug
|
52
|
+
journal_full: Jail Cell
|
53
|
+
journal_iso: Jail Cell
|
54
|
+
journal_medline: Jail Cell
|
55
|
+
title: Silly Title
|
56
|
+
year: "1996"
|
57
|
+
authors:
|
58
|
+
- Dork, HQ
|
59
|
+
- Man, BY
|
60
|
+
- Prince, JT
|
61
|
+
pages: 32-8
|
62
|
+
quotes: []
|
63
|
+
bibtype: article
|
64
|
+
vol: 32
|
65
|
+
END2
|
66
|
+
|
67
|
+
bib = Bibliography.new
|
68
|
+
bib.citations = [@cit1]
|
69
|
+
created_yaml = bib.to_yaml
|
70
|
+
|
71
|
+
# frozen
|
72
|
+
YAML.load(created_yaml).is YAML.load(bibyaml)
|
73
|
+
|
74
|
+
bib_from_yaml = Bibliography.from_yaml(bibyaml)
|
75
|
+
#assert_equal(bibbib_from_yaml, "bibs are the same from objects and from yaml")
|
76
|
+
#assert_equal(bib.citations.first, bib_from_yaml.citations.first, "cits are the same from objects and from yaml")
|
77
|
+
bc1 = bib.citations.first
|
78
|
+
bc2 = bib_from_yaml.citations.first
|
79
|
+
%w(bibtype ident journal_full journal_medline journal_iso month pages title vol year).map {|v| v.to_sym}.each do |x|
|
80
|
+
bc2.send(x).is bc1.send(x)
|
81
|
+
end
|
82
|
+
bc2.send(:authors).is bc1.send(:authors)
|
83
|
+
end
|
84
|
+
|
85
|
+
xit 'writes a bibliography' do # better description??
|
86
|
+
frozen = <<END
|
87
|
+
<html>
|
88
|
+
<body>
|
89
|
+
<ol>
|
90
|
+
<li>Dork H.Q., Man B.Y., Prince J.T. <span style="font-style:italic;">Jail Cell.</span> <span style="font-weight:bold;">1996</span>, <span style="font-style:italic;">32</span>, 32-8.</li>
|
91
|
+
<li>Smith B.M. <span style="font-style:italic;">Wacky Backy.</span> <span style="font-weight:bold;">2003</span>.</li>
|
92
|
+
</ol>
|
93
|
+
</body>
|
94
|
+
</html>
|
95
|
+
END
|
96
|
+
bib = Bibliography.new(@cits)
|
97
|
+
bib.write(Format::HTML.new).is frozen
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'adds citations to the bibliography' do
|
101
|
+
authors = %w(JT).zip(%w(Prince)).map do |init, last|
|
102
|
+
Citation::Author.new(last, init)
|
103
|
+
end
|
104
|
+
hash = {
|
105
|
+
:authors => authors, :title => "Theory of Everything", :journal_medline => 'OmiOmics', :journal_full => 'OmiOmics', :journal_iso => 'OmiOmics', :year => '2010', :month => 'Jan', :vol => 1010, :pages => '35-9', :ident => 'Prince2010', :quotes => []
|
106
|
+
}
|
107
|
+
diff_cit = Citation::Article.new(hash)
|
108
|
+
|
109
|
+
# single
|
110
|
+
bib = Bibliography.new([@cit1, @cit2])
|
111
|
+
cits_before = bib.citations.dup
|
112
|
+
ans = bib.add(@cit1)
|
113
|
+
ans.size.is 1
|
114
|
+
# rejects identical id
|
115
|
+
ans.first.is @cit1
|
116
|
+
# cits unchanged
|
117
|
+
bib.citations.is cits_before
|
118
|
+
|
119
|
+
ans = bib.add(@cit1, diff_cit)
|
120
|
+
ans.size.is 1
|
121
|
+
# rejects identical id
|
122
|
+
ans.first.is @cit1
|
123
|
+
# added a guy
|
124
|
+
bib.citations.is cits_before.push(diff_cit)
|
125
|
+
end
|
126
|
+
|
127
|
+
end
|
Binary file
|
@@ -0,0 +1,14 @@
|
|
1
|
+
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'formatter'
|
4
|
+
|
5
|
+
describe 'replacing citations' do
|
6
|
+
it 'does basic citation replacement' do
|
7
|
+
string = "This is the#[billy211], document#[mark2006, john2007, simon2010]. Why do you think it is like it is? #[mark2006, billy211]. How are you doing? [#[sally32, mark2006]]. And you #[billy211, mark2006, simon2010, markus32]."
|
8
|
+
(new_string, ordered_cits) = Formatter.new.replace_citations_numerically(string, '#[', ']', ', ')
|
9
|
+
# returns ordered citations
|
10
|
+
ordered_cits.is %w(billy211 mark2006 john2007 simon2010 sally32 markus32)
|
11
|
+
# returns a new string properly formatted
|
12
|
+
new_string.is "This is the1, document2-4. Why do you think it is like it is? 1-2. How are you doing? [2,5]. And you 1-2,4,6."
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" office:version="1.0"><office:scripts/><office:font-face-decls><style:font-face style:name="Helvetica" svg:font-family="Helvetica"/><style:font-face style:name="Tahoma1" svg:font-family="Tahoma"/><style:font-face style:name="Times" svg:font-family="Times"/><style:font-face style:name="AR PL ShanHeiSun Uni" svg:font-family="'AR PL ShanHeiSun Uni'" style:font-family-generic="system" style:font-pitch="variable"/><style:font-face style:name="DejaVuSans" svg:font-family="DejaVuSans" style:font-family-generic="system" style:font-pitch="variable"/><style:font-face style:name="Tahoma" svg:font-family="Tahoma" style:font-family-generic="system" style:font-pitch="variable"/></office:font-face-decls><office:automatic-styles><style:style style:name="T1" style:family="text"><style:text-properties style:text-position="super 58%"/></style:style></office:automatic-styles><office:body><office:text><office:forms form:automatic-focus="false" form:apply-design-mode="false"/><text:sequence-decls><text:sequence-decl text:display-outline-level="0" text:name="Illustration"/><text:sequence-decl text:display-outline-level="0" text:name="Table"/><text:sequence-decl text:display-outline-level="0" text:name="Text"/><text:sequence-decl text:display-outline-level="0" text:name="Drawing"/></text:sequence-decls><text:p text:style-name="Standard">line 1: ruby is great.#[Mycit2008] <text:s/>It is also great,#[Hello2004] and cool.</text:p><text:p text:style-name="Standard"/><text:p text:style-name="Standard">line 2: ruby is great.<text:span text:style-name="T1">#[Mycit2008]</text:span> <text:s/>It is also great,<text:span text:style-name="T1">#[Hello2004]</text:span> and cool.</text:p><text:p text:style-name="Standard"/><text:p text:style-name="Standard">line 3: ruby is great.#[Mycit2008] <text:s/>It is also great,#[Hello2004] and cool.</text:p><text:p text:style-name="Standard"/><text:p text:style-name="Standard">line 4: ruby is great.<text:span text:style-name="T1">#[Mycit2008]</text:span> <text:s/>It is also great,<text:span text:style-name="T1">#[Hello2004]</text:span> and cool.</text:p><text:p text:style-name="Standard"/><text:p text:style-name="Standard"/></office:text></office:body></office:document-content>
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" office:version="1.0"><office:scripts/><office:font-face-decls><style:font-face style:name="Helvetica" svg:font-family="Helvetica"/><style:font-face style:name="Tahoma1" svg:font-family="Tahoma"/><style:font-face style:name="Times" svg:font-family="Times"/><style:font-face style:name="AR PL ShanHeiSun Uni" svg:font-family="'AR PL ShanHeiSun Uni'" style:font-family-generic="system" style:font-pitch="variable"/><style:font-face style:name="DejaVuSans" svg:font-family="DejaVuSans" style:font-family-generic="system" style:font-pitch="variable"/><style:font-face style:name="Tahoma" svg:font-family="Tahoma" style:font-family-generic="system" style:font-pitch="variable"/></office:font-face-decls><office:automatic-styles><style:style style:name="T1" style:family="text"><style:text-properties style:text-position="super 58%"/></style:style></office:automatic-styles><office:body><office:text><office:forms form:automatic-focus="false" form:apply-design-mode="false"/><text:sequence-decls><text:sequence-decl text:display-outline-level="0" text:name="Illustration"/><text:sequence-decl text:display-outline-level="0" text:name="Table"/><text:sequence-decl text:display-outline-level="0" text:name="Text"/><text:sequence-decl text:display-outline-level="0" text:name="Drawing"/></text:sequence-decls><text:p text:style-name="Standard">line 1: ruby is great#[Mycit2008]. <text:s/>It is also great#[Hello2004], and cool.</text:p><text:p text:style-name="Standard"/><text:p text:style-name="Standard">line 2: ruby is great<text:span text:style-name="T1">#[Mycit2008]</text:span>. <text:s/>It is also great<text:span text:style-name="T1">#[Hello2004]</text:span>, and cool.</text:p><text:p text:style-name="Standard"/><text:p text:style-name="Standard">line 3: ruby is great#[Mycit2008]. <text:s/>It is also great#[Hello2004], and cool.</text:p><text:p text:style-name="Standard"/><text:p text:style-name="Standard">line 4: ruby is great<text:span text:style-name="T1">#[Mycit2008]</text:span>. <text:s/>It is also great<text:span text:style-name="T1">#[Hello2004]</text:span>, and cool.</text:p><text:p text:style-name="Standard"/><text:p text:style-name="Standard"/></office:text></office:body></office:document-content>
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" office:version="1.0"><office:scripts/><office:font-face-decls><style:font-face style:name="Helvetica" svg:font-family="Helvetica"/><style:font-face style:name="Tahoma1" svg:font-family="Tahoma"/><style:font-face style:name="Times" svg:font-family="Times"/><style:font-face style:name="AR PL ShanHeiSun Uni" svg:font-family="'AR PL ShanHeiSun Uni'" style:font-family-generic="system" style:font-pitch="variable"/><style:font-face style:name="DejaVuSans" svg:font-family="DejaVuSans" style:font-family-generic="system" style:font-pitch="variable"/><style:font-face style:name="Tahoma" svg:font-family="Tahoma" style:font-family-generic="system" style:font-pitch="variable"/></office:font-face-decls><office:automatic-styles><style:style style:name="T1" style:family="text"><style:text-properties style:text-position="super 58%"/></style:style></office:automatic-styles><office:body><office:text><office:forms form:automatic-focus="false" form:apply-design-mode="false"/><text:sequence-decls><text:sequence-decl text:display-outline-level="0" text:name="Illustration"/><text:sequence-decl text:display-outline-level="0" text:name="Table"/><text:sequence-decl text:display-outline-level="0" text:name="Text"/><text:sequence-decl text:display-outline-level="0" text:name="Drawing"/></text:sequence-decls><text:p text:style-name="Standard">line 1: ruby is great#[Mycit2008]. <text:s/>It is also great#[Hello2004], and cool.</text:p><text:p text:style-name="Standard"/><text:p text:style-name="Standard">line 2: ruby is great<text:span text:style-name="T1">#[Mycit2008]</text:span>. <text:s/>It is also great<text:span text:style-name="T1">#[Hello2004]</text:span>, and cool.</text:p><text:p text:style-name="Standard"/><text:p text:style-name="Standard">line 3: ruby is great.#[Mycit2008] <text:s/>It is also great,#[Hello2004] and cool.</text:p><text:p text:style-name="Standard"/><text:p text:style-name="Standard">line 4: ruby is great.<text:span text:style-name="T1">#[Mycit2008]</text:span> <text:s/>It is also great,<text:span text:style-name="T1">#[Hello2004]</text:span> and cool.</text:p><text:p text:style-name="Standard"/><text:p text:style-name="Standard"/></office:text></office:body></office:document-content>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'fileutils'
|
4
|
+
require 'ooffice'
|
5
|
+
|
6
|
+
describe 'basic test' do
|
7
|
+
before do
|
8
|
+
@doc_permanent = TESTFILES + '/doc1.odt'
|
9
|
+
@doc = TESTFILES + '/doc1.tmp.odt'
|
10
|
+
@newdoc = 'doc1.tmp.new.odt'
|
11
|
+
@newdoc_with_path = TESTFILES + '/doc1.tmp.new.odt'
|
12
|
+
FileUtils.cp @doc_permanent, @doc
|
13
|
+
end
|
14
|
+
|
15
|
+
after do
|
16
|
+
FileUtils.rm @doc
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'can change the document' do
|
20
|
+
start_read = 300
|
21
|
+
OpenOffice.new.modify_content(@doc, @newdoc) {|string| string.sub(/john/,'peter')}
|
22
|
+
ok File.exist?(@newdoc_with_path)
|
23
|
+
# can mess up the file end
|
24
|
+
IO.read(@newdoc_with_path, 3000, start_read).isnt IO.read(@doc, 3000, start_read)
|
25
|
+
File.unlink @newdoc_with_path
|
26
|
+
end
|
27
|
+
end
|
data/spec/pubmed_spec.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'pubmed'
|
4
|
+
|
5
|
+
|
6
|
+
describe 'basic pubmed testing' do
|
7
|
+
before do
|
8
|
+
@pmid = 17323448
|
9
|
+
end
|
10
|
+
it 'adds a journal given a pubmed id' do
|
11
|
+
begin
|
12
|
+
pm = PubMed.new(@pmid)
|
13
|
+
hash = {:title=>"Separation media for microchips.", :journal_medline =>"Anal Chem", :journal_iso=> 'Anal. Chem.', :journal_full => 'Analytical chemistry', :year=>"2007", :month=>"Feb", :vol=>"79", :issue=>"3", :pages=>"800-8", :ident=>"Wirth2007", :pmid=>17323448, :quotes => []}
|
14
|
+
hash.each do |k,v|
|
15
|
+
# "#{k}: attributes on pubmed retrieval"
|
16
|
+
pm.send(k).is v
|
17
|
+
end
|
18
|
+
pm.authors.first.last.is 'Wirth'
|
19
|
+
pm.authors.first.initials.is 'MJ'
|
20
|
+
|
21
|
+
rescue SocketError
|
22
|
+
ok !puts("No Internet Connection, skipping test")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
data/spec/spec_helper.rb
ADDED
Binary file
|
metadata
ADDED
@@ -0,0 +1,136 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bivy
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 5
|
9
|
+
version: 0.0.5
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- John Prince
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-11-01 00:00:00 -06:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: spec-more
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
version: "0"
|
31
|
+
type: :development
|
32
|
+
version_requirements: *id001
|
33
|
+
description: uses a simple YAML format to store bibliographies. Then modifies citations in openoffice and outputs a bibliography (in different forms) for inclusion in the document
|
34
|
+
email: jtprince@gmail.com
|
35
|
+
executables:
|
36
|
+
- pubmed_to_bivy.rb
|
37
|
+
- bivy.rb
|
38
|
+
extensions: []
|
39
|
+
|
40
|
+
extra_rdoc_files:
|
41
|
+
- LICENSE
|
42
|
+
- README.rdoc
|
43
|
+
- TODO
|
44
|
+
files:
|
45
|
+
- .gitignore
|
46
|
+
- History
|
47
|
+
- LICENSE
|
48
|
+
- README.rdoc
|
49
|
+
- Rakefile
|
50
|
+
- TODO
|
51
|
+
- VERSION
|
52
|
+
- bin/bivy.rb
|
53
|
+
- bin/pubmed_to_bivy.rb
|
54
|
+
- doc/config.yaml
|
55
|
+
- doc/src/default.css
|
56
|
+
- doc/src/default.template
|
57
|
+
- doc/src/tutorial/basic_flow.page
|
58
|
+
- doc/src/tutorial/index.page
|
59
|
+
- doc/src/tutorial/new_formats_and_media.page
|
60
|
+
- jrn_abbrev/abbr_html.tgz
|
61
|
+
- jrn_abbrev/abbr_to_journal.yaml
|
62
|
+
- jrn_abbrev/download_abbrevs.rb
|
63
|
+
- jrn_abbrev/for_ruby_class.rb
|
64
|
+
- jrn_abbrev/html_to_yaml.rb
|
65
|
+
- lib/bibliography.rb
|
66
|
+
- lib/bivy.rb
|
67
|
+
- lib/citation.rb
|
68
|
+
- lib/format.rb
|
69
|
+
- lib/format/acs.rb
|
70
|
+
- lib/format/bioinformatics.rb
|
71
|
+
- lib/format/bmc.rb
|
72
|
+
- lib/format/jtp.rb
|
73
|
+
- lib/format/mla.rb
|
74
|
+
- lib/formatter.rb
|
75
|
+
- lib/journal.rb
|
76
|
+
- lib/journal/iso_to_full.yaml
|
77
|
+
- lib/journal/medline_to_full.yaml
|
78
|
+
- lib/journal/medline_to_iso.yaml
|
79
|
+
- lib/media.rb
|
80
|
+
- lib/media/html.rb
|
81
|
+
- lib/ooffice.rb
|
82
|
+
- lib/pubmed.rb
|
83
|
+
- lib/rtf.rb
|
84
|
+
- old_stuff/old_list2refs.rb
|
85
|
+
- old_stuff/pubmed2html.rb
|
86
|
+
- old_stuff/pubmed_bib_write.rb
|
87
|
+
- old_stuff/xml.tmp.xml
|
88
|
+
- scripts/merge_bibs.rb
|
89
|
+
- spec/bibliography_spec.rb
|
90
|
+
- spec/citation_positions.odt
|
91
|
+
- spec/formatter_spec.rb
|
92
|
+
- spec/formatter_spec/cits_after.xml
|
93
|
+
- spec/formatter_spec/cits_before.xml
|
94
|
+
- spec/formatter_spec/content.xml
|
95
|
+
- spec/ooffice_spec.rb
|
96
|
+
- spec/pubmed_spec.rb
|
97
|
+
- spec/spec_helper.rb
|
98
|
+
- spec/testfiles/doc1.odt
|
99
|
+
has_rdoc: true
|
100
|
+
homepage: http://github.com/jtprince/bivy
|
101
|
+
licenses: []
|
102
|
+
|
103
|
+
post_install_message:
|
104
|
+
rdoc_options:
|
105
|
+
- --charset=UTF-8
|
106
|
+
require_paths:
|
107
|
+
- lib
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
segments:
|
114
|
+
- 0
|
115
|
+
version: "0"
|
116
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
|
+
none: false
|
118
|
+
requirements:
|
119
|
+
- - ">="
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
segments:
|
122
|
+
- 0
|
123
|
+
version: "0"
|
124
|
+
requirements: []
|
125
|
+
|
126
|
+
rubyforge_project:
|
127
|
+
rubygems_version: 1.3.7
|
128
|
+
signing_key:
|
129
|
+
specification_version: 3
|
130
|
+
summary: roll your own citation manager (if you like that sort of thing)
|
131
|
+
test_files:
|
132
|
+
- spec/pubmed_spec.rb
|
133
|
+
- spec/bibliography_spec.rb
|
134
|
+
- spec/ooffice_spec.rb
|
135
|
+
- spec/formatter_spec.rb
|
136
|
+
- spec/spec_helper.rb
|