scholar 0.1.1 → 0.1.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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