scholar 0.1.1 → 0.1.1.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a90a3bff79b16dfad4e4bc5bc09406a5f2e152bc
4
+ data.tar.gz: fbf2f945a7ac9972cc10e0d28fcaa15e24e36143
5
+ SHA512:
6
+ metadata.gz: 21f72e1dbc403101ab21360ede3b307a71ed95ca77602e86b30200755b0c570140bfd6f8ff6efe10d4c0ccb16b54ec1671143dd1ba79760f897f49b3a2d3feb2
7
+ data.tar.gz: f616eb866b88c827380d1b88722d502b53310a0dbf6ec1b8e5ef57932a760e7f2465c941bec2eb8b15ba9d08bb79155eec83364776b7c5ba841b83ede6cceba5
data/.rspec CHANGED
@@ -1,3 +1,4 @@
1
1
  --format Fuubar
2
2
  --color
3
+ --order random
3
4
  --drb
@@ -1 +1 @@
1
- 1.9.3-p385
1
+ 2.0.0-p247
data/Gemfile CHANGED
@@ -20,4 +20,7 @@ group :test do
20
20
  gem 'fuubar', '~> 1.1.0'
21
21
 
22
22
  gem 'cane', :platforms => :mri
23
+
24
+ gem 'simplecov', '0.7.1'
25
+ gem 'coveralls', '0.6.3'
23
26
  end
@@ -1,50 +1,67 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- scholar (0.1.1)
5
- activesupport (~> 3.2.11)
4
+ scholar (0.1.1.1)
5
+ activesupport (~> 4.0.0)
6
6
  faraday (~> 0.8.7)
7
7
  faraday_middleware (~> 0.9.0)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- activesupport (3.2.11)
13
- i18n (~> 0.6)
14
- multi_json (~> 1.0)
15
- addressable (2.3.3)
16
- cane (2.5.0)
12
+ activesupport (4.0.0)
13
+ i18n (~> 0.6, >= 0.6.4)
14
+ minitest (~> 4.2)
15
+ multi_json (~> 1.3)
16
+ thread_safe (~> 0.1)
17
+ tzinfo (~> 0.3.37)
18
+ addressable (2.3.5)
19
+ atomic (1.1.14)
20
+ atomic (1.1.14-java)
21
+ cane (2.6.0)
17
22
  parallel
18
- coderay (1.0.8)
19
- crack (0.3.2)
23
+ coderay (1.0.9)
24
+ colorize (0.6.0)
25
+ coveralls (0.6.3)
26
+ colorize
27
+ multi_json (~> 1.3)
28
+ rest-client
29
+ simplecov (>= 0.7)
30
+ thor
31
+ crack (0.4.1)
32
+ safe_yaml (~> 0.9.0)
20
33
  diff-lcs (1.1.3)
21
34
  factory_girl (4.2.0)
22
35
  activesupport (>= 3.0.0)
23
- faraday (0.8.7)
24
- multipart-post (~> 1.1)
36
+ faraday (0.8.8)
37
+ multipart-post (~> 1.2.0)
25
38
  faraday_middleware (0.9.0)
26
39
  faraday (>= 0.7.4, < 0.9)
27
- ffi (1.6.0-java)
28
- fuubar (1.1.0)
40
+ ffi (1.9.0-java)
41
+ fuubar (1.1.1)
29
42
  rspec (~> 2.0)
30
43
  rspec-instafail (~> 0.2.0)
31
- ruby-progressbar (~> 1.0.0)
32
- i18n (0.6.1)
44
+ ruby-progressbar (~> 1.0)
45
+ i18n (0.6.5)
33
46
  log_buddy (0.7.0)
34
- method_source (0.8.1)
35
- multi_json (1.5.0)
47
+ method_source (0.8.2)
48
+ mime-types (1.25)
49
+ minitest (4.7.5)
50
+ multi_json (1.8.2)
36
51
  multipart-post (1.2.0)
37
- parallel (0.6.1)
38
- pry (0.9.11.4)
52
+ parallel (0.9.0)
53
+ pry (0.9.12.2)
39
54
  coderay (~> 1.0.5)
40
55
  method_source (~> 0.8)
41
56
  slop (~> 3.4)
42
- pry (0.9.11.4-java)
57
+ pry (0.9.12.2-java)
43
58
  coderay (~> 1.0.5)
44
59
  method_source (~> 0.8)
45
60
  slop (~> 3.4)
46
61
  spoon (~> 0.0)
47
- rake (10.0.3)
62
+ rake (10.1.0)
63
+ rest-client (1.6.7)
64
+ mime-types (>= 1.16)
48
65
  rspec (2.12.0)
49
66
  rspec-core (~> 2.12.0)
50
67
  rspec-expectations (~> 2.12.0)
@@ -54,11 +71,22 @@ GEM
54
71
  diff-lcs (~> 1.1.3)
55
72
  rspec-instafail (0.2.4)
56
73
  rspec-mocks (2.12.2)
57
- ruby-progressbar (1.0.2)
58
- slop (3.4.3)
59
- spoon (0.0.3)
74
+ ruby-progressbar (1.2.0)
75
+ safe_yaml (0.9.7)
76
+ simplecov (0.7.1)
77
+ multi_json (~> 1.0)
78
+ simplecov-html (~> 0.7.1)
79
+ simplecov-html (0.7.1)
80
+ slop (3.4.6)
81
+ spoon (0.0.4)
60
82
  ffi
61
83
  spork (0.9.2)
84
+ thor (0.18.1)
85
+ thread_safe (0.1.3)
86
+ atomic
87
+ thread_safe (0.1.3-java)
88
+ atomic
89
+ tzinfo (0.3.38)
62
90
  vcr (2.4.0)
63
91
  webmock (1.8.11)
64
92
  addressable (>= 2.2.7)
@@ -70,6 +98,7 @@ PLATFORMS
70
98
 
71
99
  DEPENDENCIES
72
100
  cane
101
+ coveralls (= 0.6.3)
73
102
  factory_girl (~> 4.2.0)
74
103
  fuubar (~> 1.1.0)
75
104
  log_buddy (~> 0.7.0)
@@ -77,6 +106,7 @@ DEPENDENCIES
77
106
  rake (~> 10.0)
78
107
  rspec (~> 2.12.0)
79
108
  scholar!
109
+ simplecov (= 0.7.1)
80
110
  spork (~> 0.9.2)
81
111
  vcr (~> 2.4.0)
82
112
  webmock (~> 1.8.0)
data/README.md CHANGED
@@ -1,4 +1,6 @@
1
- # Scholar [![Build Status](https://secure.travis-ci.org/noted/scholar.png)](https://travis-ci.org/noted/scholar)
1
+ # Scholar
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/scholar.png)](https://rubygems.org/gems/scholar) [![Build Status](https://secure.travis-ci.org/noted/scholar.png)](https://travis-ci.org/noted/scholar) [![Code Climate](https://codeclimate.com/github/noted/scholar.png)](https://codeclimate.com/github/noted/scholar) [![Coverage Status](https://coveralls.io/repos/noted/scholar/badge.png?branch=master)](https://coveralls.io/r/noted/scholar)
2
4
 
3
5
  Scholar is a Ruby library for building [MLA citations](http://www.mla.org/) for scholarly works. Just pass Scholar your data and it'll do the rest.
4
6
 
@@ -50,9 +52,9 @@ salinger.html # => Salinger, J. D. <em>Catcher in the Rye</em>. Boston: Little,
50
52
 
51
53
  `Scholar::Citation.new` only takes a `Hash` with the attributes associated with the source.
52
54
 
53
- ### Required Keys
55
+ #### Required Keys
54
56
 
55
- #### Global Attributes
57
+ ##### Global Attributes
56
58
 
57
59
  All source types can (and must) take these fields.
58
60
 
@@ -61,7 +63,7 @@ Key | Description
61
63
  `:type` | The type of publication you're citing ([see the wiki for a list of supported types](types)). Must be a `Symbol` object.
62
64
  `:contributors` | An array of contributors (see below for details). If there are no contributors, pass an empty `Array`.
63
65
 
64
- ##### Contributors
66
+ ###### Contributors
65
67
 
66
68
  The `:contributors` key is an array of hashes that define contributors. Here's an example.
67
69
 
@@ -107,10 +109,6 @@ Key | Description
107
109
  `:last` | The contributor's last name (surname).
108
110
  `:suffix` | Any suffixes or titles the contributor has ("PhD", "Esq", "Jr", "KBD", et cetera). Omit any periods.
109
111
 
110
- ## Supported Ruby Versions
111
-
112
- Scholar is tested on MRI version 1.9.2, 1.9.3, and 2.0.0.
113
-
114
112
  ### Search
115
113
 
116
114
  ```ruby
@@ -118,17 +116,19 @@ search = Scholar::Search.new("harry potter")
118
116
  search.results # => [#<Scholar::Citation>, #<Scholar::Citation>, ...]
119
117
  ```
120
118
 
119
+ ## Supported Ruby Versions
120
+
121
+ Scholar is tested on MRI versions 1.9.2, 1.9.3, and 2.0.0, JRuby 1.7.3, and Rubinius 2.0.0.
122
+
121
123
  ## Contributing
122
124
 
123
125
  1. [Fork the repository.][fork]
124
126
  2. [Create a topic branch.][branch]
125
127
  3. Add tests for your unimplemented feature or bug fix.
126
- 4. Run `bundle exec rspec`. If your tests pass, return to step 3.
127
- 5. Implement your feature or bug fix.
128
- 6. Run `bundle exec rspec`. If your tests fail, return to step 5.
129
- 7. Add documentation for your feature or bug fix.
130
- 8. Add, commit, and push your changes.
131
- 9. [Submit a pull request.][pr]
128
+ 4. Write code until all tests (ran with `bundle exec rspec`) passes.
129
+ 5. Add documentation for your feature or bug fix.
130
+ 6. Add, commit, and push your changes.
131
+ 7. [Submit a pull request.][pr]
132
132
 
133
133
  [types]: https://github.com/noted/scholar/wiki/Supported-Types
134
134
  [fork]: http://help.github.com/fork-a-repo/
@@ -1,5 +1,3 @@
1
- require 'json'
2
-
3
1
  require 'active_support/all'
4
2
 
5
3
  require 'faraday'
@@ -47,6 +47,14 @@ module Scholar
47
47
  @raw = @attributes.clone
48
48
  @attributes.delete(:type)
49
49
 
50
+ @attributes.each do |k, v|
51
+ if v.is_a?(Fixnum)
52
+ @attributes[k] = v.to_s
53
+ end
54
+ end
55
+
56
+ @attributes.delete_if {|k, v| v.nil? || v.empty? }
57
+
50
58
  if @attributes[:contributors]
51
59
  @attributes = Scholar::Utilities.contributors!(@attributes)
52
60
  end
@@ -69,10 +77,5 @@ module Scholar
69
77
 
70
78
  hash
71
79
  end
72
-
73
- # Returns the Citation object in JSON form.
74
- def to_json
75
- hash = self.to_hash.to_json
76
- end
77
80
  end
78
81
  end
@@ -35,6 +35,21 @@ module Scholar
35
35
  self
36
36
  end
37
37
 
38
+ # Return as hash.
39
+ def to_hash
40
+ hash = {}
41
+
42
+ instance_variables.each do |v|
43
+ hash[v.to_s[1..-1].to_sym] = instance_variable_get(v)
44
+ end
45
+
46
+ hash[:results].each do |c|
47
+ hash[:results][hash[:results].index(c)] = c.to_hash
48
+ end
49
+
50
+ hash
51
+ end
52
+
38
53
  private
39
54
 
40
55
  def perform!(query)
@@ -40,6 +40,8 @@ module Scholar
40
40
  data[:role] = :author
41
41
  end
42
42
 
43
+ data.delete_if {|k, v| v.nil? || v.empty? }
44
+
43
45
  @order = order
44
46
 
45
47
  @attributes = order!(data)
@@ -5,7 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
 
6
6
  Gem::Specification.new do |gem|
7
7
  gem.name = "scholar"
8
- gem.version = "0.1.1"
8
+ gem.version = "0.1.1.1"
9
9
  gem.authors = ["Ethan Turkeltaub"]
10
10
  gem.email = ["ethan.turkeltaub@gmail.com"]
11
11
  gem.description = %q{Generate valid MLA citations.}
@@ -18,7 +18,7 @@ Gem::Specification.new do |gem|
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
19
  gem.require_paths = ["lib"]
20
20
 
21
- gem.add_dependency 'activesupport', '~> 3.2.11'
21
+ gem.add_dependency 'activesupport', '~> 4.0.0'
22
22
  gem.add_dependency 'faraday', '~> 0.8.7'
23
23
  gem.add_dependency 'faraday_middleware', '~> 0.9.0'
24
24
  end
@@ -15,7 +15,7 @@ FactoryGirl.define do
15
15
  trait :last do
16
16
  hash = {
17
17
  :role => :author,
18
- :first => "Les",
18
+ :first => "L",
19
19
  :middle => "Randy",
20
20
  :last => "Grossman",
21
21
  :suffix => "Esq"
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ describe Scholar::Citation do
4
+ let(:c) do
5
+ Scholar::Citation.new({
6
+ :type => :book,
7
+ :media => :print,
8
+ :title => "The Hitchhiker's Guide to the Galaxy",
9
+ :contributors => [
10
+ {
11
+ :role => :author,
12
+ :first => "Douglas",
13
+ :middle => "Noel",
14
+ :last => "Adams"
15
+ },
16
+ {
17
+ :role => :editor,
18
+ :first => "Peter",
19
+ :last => "Guzzardi"
20
+ },
21
+ {
22
+ :role => :translator,
23
+ :first => "Les",
24
+ :last => "Grossman"
25
+ },
26
+ {
27
+ :role => :compiler,
28
+ :first => "Eion",
29
+ :last => "Colfer"
30
+ }
31
+ ],
32
+ :edition => 1,
33
+ :volume => 1,
34
+ :publisher => "Random House",
35
+ :city => "London",
36
+ :year => "1972",
37
+ :series => "The Hitchhiker's Guide to the Galaxy"
38
+ })
39
+ end
40
+
41
+ describe "#to_hash" do
42
+ it { c.to_hash.keys.should =~ [:attributes, :raw, :html] }
43
+ end
44
+ end
@@ -5,16 +5,21 @@ describe Scholar::Search do
5
5
  VCR.insert_cassette 'search', :record => :all
6
6
  end
7
7
 
8
- describe ".new" do
9
- let(:search) do
10
- Scholar::Search.new("foobar")
11
- end
8
+ let(:search) do
9
+ Scholar::Search.new("foobar")
10
+ end
12
11
 
12
+ describe ".new" do
13
13
  it { search.query.should eql "foobar" }
14
14
  it { search.results.should be_an_instance_of Array }
15
15
  it { search.results[0].should be_an_instance_of Scholar::Citation }
16
16
  end
17
17
 
18
+ describe "#to_hash" do
19
+ it { search.to_hash.keys.should =~ [:query, :results] }
20
+ it { search.to_hash[:results][0].should be_an_instance_of Hash }
21
+ end
22
+
18
23
  after do
19
24
  VCR.eject_cassette
20
25
  end
@@ -5,7 +5,7 @@ describe Scholar::Utilities::Contributor do
5
5
  let(:c) { build(:contributor, :last) }
6
6
 
7
7
  it { c.should be_an_instance_of Scholar::Utilities::Contributor }
8
- it { c.name.should eql "Grossman, Les R., Esq" }
8
+ it { c.name.should eql "Grossman, L. R., Esq" }
9
9
  end
10
10
 
11
11
  context "non-author" do
@@ -25,6 +25,6 @@ describe Scholar::Utilities::Contributor do
25
25
  end
26
26
 
27
27
  it { first.name.should eql "Sample, John Q., PhD" }
28
- it { last.name.should eql "Les R. Grossman, Esq" }
28
+ it { last.name.should eql "L. R. Grossman, Esq" }
29
29
  end
30
30
  end
@@ -1,3 +1,13 @@
1
+ require 'simplecov'
2
+ require 'coveralls'
3
+
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ]
8
+
9
+ SimpleCov.start
10
+
1
11
  require 'spork'
2
12
 
3
13
  Spork.prefork do
metadata CHANGED
@@ -1,36 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scholar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
5
- prerelease:
4
+ version: 0.1.1.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ethan Turkeltaub
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-03-30 00:00:00.000000000 Z
11
+ date: 2013-10-19 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activesupport
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
21
- version: 3.2.11
19
+ version: 4.0.0
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
29
- version: 3.2.11
26
+ version: 4.0.0
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: faraday
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: faraday_middleware
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
@@ -88,6 +81,7 @@ files:
88
81
  - scholar.gemspec
89
82
  - spec/factories/contributor.rb
90
83
  - spec/factories/contributor_list.rb
84
+ - spec/scholar/citation_spec.rb
91
85
  - spec/scholar/search_spec.rb
92
86
  - spec/scholar/source_spec.rb
93
87
  - spec/scholar/sources/book_spec.rb
@@ -99,37 +93,31 @@ files:
99
93
  homepage: http://github.com/noted/scholar
100
94
  licenses:
101
95
  - MIT
96
+ metadata: {}
102
97
  post_install_message:
103
98
  rdoc_options: []
104
99
  require_paths:
105
100
  - lib
106
101
  required_ruby_version: !ruby/object:Gem::Requirement
107
- none: false
108
102
  requirements:
109
- - - ! '>='
103
+ - - '>='
110
104
  - !ruby/object:Gem::Version
111
105
  version: '0'
112
- segments:
113
- - 0
114
- hash: 1067264813
115
106
  required_rubygems_version: !ruby/object:Gem::Requirement
116
- none: false
117
107
  requirements:
118
- - - ! '>='
108
+ - - '>='
119
109
  - !ruby/object:Gem::Version
120
110
  version: '0'
121
- segments:
122
- - 0
123
- hash: 1067264813
124
111
  requirements: []
125
112
  rubyforge_project:
126
- rubygems_version: 1.8.25
113
+ rubygems_version: 2.1.3
127
114
  signing_key:
128
- specification_version: 3
115
+ specification_version: 4
129
116
  summary: Generate valid MLA citations.
130
117
  test_files:
131
118
  - spec/factories/contributor.rb
132
119
  - spec/factories/contributor_list.rb
120
+ - spec/scholar/citation_spec.rb
133
121
  - spec/scholar/search_spec.rb
134
122
  - spec/scholar/source_spec.rb
135
123
  - spec/scholar/sources/book_spec.rb