bibtex-ruby 4.0.3 → 4.0.4

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of bibtex-ruby might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9de82cd417f354a88a91476f719c5e74d7a50770
4
- data.tar.gz: 169a387d3f991820f7acd9b12f56d8419e4cd624
3
+ metadata.gz: 8dfc396ec0cd2efd0f5f64425c8e9ffd767da58c
4
+ data.tar.gz: 857697705ed8d3cf337beba83c088808cb88bb61
5
5
  SHA512:
6
- metadata.gz: 4ae3525c8dc076d32f4bad9283dfb8a813ff182419ad98af8499057bfd5b4c2d5a42595977972ae862c8a5ad272d75e9981d186f5de16829e9faccbf8d5ccb00
7
- data.tar.gz: dba0dc62e3b76afe70c0afe4adea9f32a6a772df365e32c21e581aa9cfcb954a78b6f114bea0df7040f37e9c152624614419a1c0f8b2df2df105b099e34f36e4
6
+ metadata.gz: 111bf7910b6e38a5aeb40ad2d128fe06d5ee992e1ea64fb1503c445b63256b714fe6ef6fd9a43ac9ad4e4bb28d7677ad82d711c6ee723efff2457a9cae569b62
7
+ data.tar.gz: 538da62b61ae3e58fda93839ad712c95ef949552be07157a66e712f58e8faa1d58538e977019ec202df69aace8beda7d5689bd966fe888665c59c0fd41894263
@@ -1,3 +1,7 @@
1
+ 4.0.4 / 2014-10-10
2
+ ==================
3
+ * added !~ matcher for queries (@temporaer)
4
+
1
5
  4.0.0 / 2014-07-08
2
6
  ==================
3
7
 
data/README.md CHANGED
@@ -150,11 +150,11 @@ Instead of parsing strings you can also create BibTeX elements directly in
150
150
  Ruby:
151
151
 
152
152
  > bib = BibTeX::Bibliography.new
153
-
153
+
154
154
  Using a Hash:
155
155
 
156
156
  > bib << BibTeX::Entry.new({
157
- :type => :book,
157
+ :bibtex_type => :book,
158
158
  :key => :rails,
159
159
  :address => 'Raleigh, North Carolina',
160
160
  :author => 'Ruby, Sam and Thomas, Dave, and Hansson, David Heinemeier',
@@ -236,7 +236,7 @@ query functionality with the exception of yielding to a block. For instance:
236
236
 
237
237
  # note that the above includes entries inheriting the book title
238
238
  # from a cross-referenced entry!
239
-
239
+
240
240
  bib['@book[keywords=ruby]']
241
241
  => Returns all books whose keywords attribute equals 'ruby' or []
242
242
  bib['@book[keywords!=ruby]']
@@ -248,6 +248,8 @@ query functionality with the exception of yielding to a block. For instance:
248
248
  => Returns all books whose keywords attribute matches /^ruby/
249
249
  bib.q('@book[keywords ~= ruby]')
250
250
  => Returns all books whose keywords attribute matches /ruby/
251
+ bib['@book[keywords!~ruby]']
252
+ => Returns all books whose keywords attribute does not match /ruby/ or don't have keywords attribute
251
253
 
252
254
  bib.q('@article[year<=2007]')
253
255
  => Returns all articles published in 2007 or earlier
@@ -522,7 +524,7 @@ because these tokens will be concatenated using BibTeX's '#' operator).
522
524
  Year = {2009}
523
525
  }
524
526
  END
525
- => [{:key=>:pickaxe, :type=>:book,
527
+ => [{:bibtex_key=>:pickaxe, :bibtex_type=>:book,
526
528
  :address=>"{Raleigh, North Carolina}",
527
529
  :author=>"{Thomas, Dave, and Fowler, Chad, and Hunt, Andy}",
528
530
  :publisher=>"{The Pragmatic Bookshelf}",
@@ -535,7 +537,7 @@ quotes; therefore you can simply add the :quotes option with an empty string:
535
537
  >> BibTeX.parse(<<-END).to_a(:quotes => '')
536
538
  ...
537
539
  END
538
- => [{:key=>:pickaxe, :type=>:book,
540
+ => [{:bibtex_key=>:pickaxe, :bibtex_type=>:book,
539
541
  :address=>"Raleigh, North Carolina",
540
542
  :author=>"Thomas, Dave, and Fowler, Chad, and Hunt, Andy",
541
543
  :publisher=>"The Pragmatic Bookshelf",
@@ -5,11 +5,11 @@ Feature: Parse BibTeX files
5
5
  Scenario: A BibTeX file with lots of objects and comments
6
6
  When I parse the following file:
7
7
  """
8
- %%
9
- %% This BibTeX file contains all the examples of valid BibTeX objects
10
- %% in Xavier Decoret's `A summary of BibTeX' at
11
- %% http://artis.imag.fr/~Xavier.Decoret/resources/xdkbibtex/bibtex_summary.html
12
- %%
8
+ ##
9
+ ## This BibTeX file contains all the examples of valid BibTeX objects
10
+ ## in Xavier Decoret's `A summary of BibTeX' at
11
+ ## http://artis.imag.fr/~Xavier.Decoret/resources/xdkbibtex/bibtex_summary.html
12
+ ##
13
13
 
14
14
  @Article{py03,
15
15
  author = {Xavier D\'ecoret},
@@ -59,6 +59,8 @@ Feature: Searching in BibTeX bibliographies
59
59
  Then there should be exactly 3 matches
60
60
  When I search for "@*[year=2007]"
61
61
  Then there should be exactly 1 match
62
+ When I search for "@*[keywords!~lex]"
63
+ Then there should be exactly 2 matches
62
64
 
63
65
  @query
64
66
  Scenario: Find entries using compound queries
@@ -55,11 +55,11 @@ module BibTeX
55
55
  def values_at(*arguments)
56
56
  []
57
57
  end
58
-
58
+
59
59
  def digest(*arguments)
60
60
  [type, content].join('|')
61
61
  end
62
-
62
+
63
63
  # Invokes BibTeX string replacement on this element.
64
64
  def replace(*arguments); self; end
65
65
 
@@ -187,11 +187,11 @@ module BibTeX
187
187
  def inspect
188
188
  "#<#{self.class} #{content.gsub(/\n/, ' ')}>"
189
189
  end
190
-
190
+
191
191
  private
192
-
192
+
193
193
  def meets_condition?(condition)
194
- property, operator, value = condition.split(/\s*([!~\/\^<>]?=)\s*/)
194
+ property, operator, value = condition.split(/\s*([!~\/\^<>]?=|!~)\s*/)
195
195
 
196
196
  if property.nil?
197
197
  true
@@ -208,6 +208,8 @@ module BibTeX
208
208
  !actual.nil? && actual.to_s.match("^#{value}")
209
209
  when '~='
210
210
  !actual.nil? && actual.to_s.match(value)
211
+ when '!~'
212
+ actual.nil? || !actual.to_s.match(value)
211
213
  when '<='
212
214
  !actual.nil? && actual.to_i <= value.to_i
213
215
  when '>='
@@ -382,7 +382,7 @@ module BibTeX
382
382
  # Returns false if the entry is one of the standard entry types and does not have
383
383
  # definitions of all the required fields for that type.
384
384
  def valid?
385
- REQUIRED_FIELDS[@type].all? do |f|
385
+ REQUIRED_FIELDS[type].all? do |f|
386
386
  f.is_a?(Array) ? !(f & fields.keys).empty? : !fields[f].nil?
387
387
  end
388
388
  end
@@ -20,7 +20,7 @@ module BibTeX
20
20
  module Version
21
21
  MAJOR = 4
22
22
  MINOR = 0
23
- PATCH = 3
23
+ PATCH = 4
24
24
  BUILD = nil
25
25
 
26
26
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.').freeze
@@ -594,20 +594,20 @@ module BibTeX
594
594
 
595
595
  describe '#meet?' do
596
596
  before { @e = Entry.new }
597
-
597
+
598
598
  it 'returns true for an empty condition list' do
599
599
  assert @e.meet? []
600
600
  assert @e.meet? ['']
601
601
  end
602
-
602
+
603
603
  it 'it returns true when all conditions hold' do
604
604
  refute @e.meet? ['author = Edgar']
605
-
605
+
606
606
  @e.author = 'Poe, Edgar A.'
607
607
 
608
608
  refute @e.meet? ['author = Edgar']
609
609
  refute @e.meet? ['author = Poe, Edgar']
610
-
610
+
611
611
  assert @e.meet? ['author = Poe, Edgar A.']
612
612
 
613
613
  assert @e.meet? ['author ^= Poe']
@@ -617,11 +617,46 @@ module BibTeX
617
617
 
618
618
  assert @e.meet? ['author ~= .']
619
619
  assert @e.meet? ['author ~= [a-z]*']
620
-
621
- assert @e.meet? ['author ^= P\w+']
622
620
 
621
+ assert @e.meet? ['author ^= P\w+']
622
+ end
623
+ end
624
+
625
+ describe '#valid?' do
626
+ before {
627
+ @misc = Entry.new
628
+ @book = Entry.new({ :bibtex_type => :book })
629
+ @article = Entry.new({ :bibtex_type => :article })
630
+ }
631
+
632
+ it 'is true by default' do
633
+ assert @misc.valid?
634
+ end
635
+
636
+ it 'is not true by default for types with mandatory fields' do
637
+ refute @book.valid?
638
+ refute @article.valid?
639
+ end
640
+
641
+ it 'is true only if all mandatory fields are present' do
642
+ @book.update({
643
+ :author => 'Henry James',
644
+ :title => 'What Maisie Knew',
645
+ :year => 1897,
646
+ :publisher => 'Heineman'
647
+ })
648
+
649
+ assert @book.valid?
650
+
651
+ @book.delete :publisher
652
+ refute @book.valid?
653
+
654
+ @book.publisher = 'Heineman'
655
+ assert @book.valid?
656
+
657
+ @book.delete :year
658
+ refute @book.valid?
623
659
  end
624
-
625
660
  end
626
661
  end
627
662
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bibtex-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.3
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-07-23 00:00:00.000000000 Z
11
+ date: 2014-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: latex-decode
@@ -145,23 +145,23 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
145
  version: '0'
146
146
  requirements: []
147
147
  rubyforge_project:
148
- rubygems_version: 2.2.2
148
+ rubygems_version: 2.1.8
149
149
  signing_key:
150
150
  specification_version: 4
151
151
  summary: A BibTeX parser, converter and API for Ruby.
152
152
  test_files:
153
- - test/bibtex/entry/test_rdf_converter.rb
154
- - test/bibtex/test_bibliography.rb
155
- - test/bibtex/test_elements.rb
156
- - test/bibtex/test_entry.rb
157
- - test/bibtex/test_filters.rb
153
+ - test/bibtex/test_value.rb
158
154
  - test/bibtex/test_lexer.rb
159
- - test/bibtex/test_name_parser.rb
160
155
  - test/bibtex/test_names.rb
161
156
  - test/bibtex/test_parser.rb
162
- - test/bibtex/test_string.rb
157
+ - test/bibtex/test_bibliography.rb
158
+ - test/bibtex/test_filters.rb
163
159
  - test/bibtex/test_utilities.rb
164
- - test/bibtex/test_value.rb
160
+ - test/bibtex/test_string.rb
161
+ - test/bibtex/test_entry.rb
162
+ - test/bibtex/test_name_parser.rb
163
+ - test/bibtex/test_elements.rb
164
+ - test/bibtex/entry/test_rdf_converter.rb
165
165
  - test/test_bibtex.rb
166
166
  - test/test_export.rb
167
167
  has_rdoc: yard