ogp 0.1.0 → 0.2.0

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: 76a5e1d09ecf649ed6ae42c9210670fc975e97dc
4
- data.tar.gz: 5b3247e18f9d7dcbad25d56772fdf89da37c2ac0
3
+ metadata.gz: ca2fa62d7e09874c7999112994aa53385734c2b1
4
+ data.tar.gz: e44b5cb9f6eebf69a0a1e03f931f9502af687f10
5
5
  SHA512:
6
- metadata.gz: e7bad59e8dd573ab9ff01753c6f846be1faad91870162b90c924849694aff9f548aa6163e113e440e4703635c18eb53e4826548136e77e0e4ea7f7c92448845a
7
- data.tar.gz: b92431e1f01c0233bda839f3a3a165dc14c53c59ee1222109046a56e0e178359060a264c41b5fa6866191bdb8f23b8748d4c5ee54a5ce227ca6e9af186b3f698
6
+ metadata.gz: 824aee85a548ab9eb7cbcf46369567f238b01bac1a2d9969d82bad2b5b182a004e071c91a33bab8cb9045bc0a5052c91c5647362e666a7bf528f75e928fde6ae
7
+ data.tar.gz: 9b16c4795d015b03fe307dc98a0ce4830d8ae70c85de99a7072d2f5943f1f85ae1b0174926ce14a83d35c9bc910a9300224582f586dedaae1d929b4c28914bed
@@ -0,0 +1,120 @@
1
+ AllCops:
2
+ DisplayCopNames: true
3
+ Include:
4
+ - Rakefile
5
+ - config.ru
6
+ - Gemfile
7
+ - app/tasks/**/*.rake
8
+ Exclude:
9
+ - bin/**
10
+ - db/schema.rb
11
+ - db/migrate/**
12
+ - script/**
13
+ - vendor/**/*
14
+ - node_modules/**/*
15
+ TargetRubyVersion: 2.3
16
+
17
+ Rails:
18
+ Enabled: false
19
+
20
+ Documentation:
21
+ Enabled: false
22
+
23
+ Encoding:
24
+ Enabled: false
25
+
26
+ LineLength:
27
+ Max: 200
28
+
29
+ AccessModifierIndentation:
30
+ EnforcedStyle: outdent
31
+
32
+ IfUnlessModifier:
33
+ Enabled: false
34
+
35
+ CaseIndentation:
36
+ EnforcedStyle: end
37
+ IndentOneStep: true
38
+
39
+ MethodLength:
40
+ CountComments: false
41
+ Max: 25
42
+
43
+ SignalException:
44
+ Enabled: false
45
+
46
+ ColonMethodCall:
47
+ Enabled: false
48
+
49
+ AsciiComments:
50
+ Enabled: false
51
+
52
+ RegexpLiteral:
53
+ Enabled: false
54
+
55
+ AssignmentInCondition:
56
+ Enabled: false
57
+
58
+ ParameterLists:
59
+ CountKeywordArgs: false
60
+
61
+ SingleLineBlockParams:
62
+ Methods:
63
+ - reduce:
64
+ - memo
65
+ - item
66
+
67
+ MethodCalledOnDoEndBlock:
68
+ Enabled: true
69
+
70
+ Metrics/AbcSize:
71
+ Enabled: false
72
+
73
+ Style/CollectionMethods:
74
+ Enabled: true
75
+
76
+ Style/SymbolArray:
77
+ Enabled: true
78
+
79
+ Layout/ExtraSpacing:
80
+ Enabled: true
81
+
82
+ Layout/MultilineMethodCallIndentation:
83
+ Enabled: false
84
+
85
+ Layout/IndentArray:
86
+ Enabled: false
87
+
88
+ Layout/AlignHash:
89
+ Enabled: false
90
+
91
+ Layout/AlignParameters:
92
+ EnforcedStyle: with_fixed_indentation
93
+
94
+ Style/FrozenStringLiteralComment:
95
+ Enabled: false
96
+
97
+ Rails/SkipsModelValidations:
98
+ Enabled: false
99
+
100
+ Metrics/BlockLength:
101
+ Max: 200
102
+
103
+ Style/PercentLiteralDelimiters:
104
+ PreferredDelimiters:
105
+ '%i': '()'
106
+ '%I': '()'
107
+ '%w': '()'
108
+ '%W': '()'
109
+
110
+ Layout/SpaceInLambdaLiteral:
111
+ Enabled: false
112
+
113
+ Bundler/OrderedGems:
114
+ Enabled: false
115
+
116
+ Rails/OutputSafety:
117
+ Enabled: false
118
+
119
+ Performance/StringReplacement:
120
+ Enabled: false
@@ -0,0 +1,8 @@
1
+ sudo: false
2
+
3
+ language: ruby
4
+
5
+ rvm:
6
+ - 2.3
7
+
8
+ script: "bundle exec rake spec"
data/README.md CHANGED
@@ -1,6 +1,16 @@
1
- # OGP
1
+ <p align="center">
2
+ <a href="https://github.com/mirego/ogp">
3
+ <img src="https://i.imgur.com/qZrMsLq.png" alt="ogp" />
4
+ </a>
5
+ <br />
6
+ OGP is a minimalist Ruby library that does only one thing: parse Open Graph protocol information. For more information: <a href="http://ogp.me">http://ogp.me</a>.
7
+ <br /><br />
8
+ <a href="https://rubygems.org/gems/ogp"><img src="http://img.shields.io/gem/v/ogp.svg" /></a>
9
+ <a href="https://codeclimate.com/github/jcouture/ogp"><img src="http://img.shields.io/codeclimate/github/jcouture/ogp.svg" /></a>
10
+ <a href="https://gemnasium.com/jcouture/ogp"><img src="http://img.shields.io/gemnasium/jcouture/ogp.svg" /></a>
11
+ <a href="https://travis-ci.org/jcouture/ogp"><img src="http://img.shields.io/travis/jcouture/ogp.svg" /></a>
12
+ </p>
2
13
 
3
- OGP is a minimalist Ruby library that does only one thing: parse Open Graph protocol information from web sites. For more information: http://ogp.me.
4
14
 
5
15
  ## Installation
6
16
 
@@ -44,3 +54,4 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/jcoutu
44
54
 
45
55
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
46
56
 
57
+ The OGP pirate logo is based on [this icon](https://thenounproject.com/term/pirate/9414/) by [Simon Child](https://thenounproject.com/Simon%20Child/), from the Noun Project. Used under a [Creative Commons BY 3.0](http://creativecommons.org/licenses/by/3.0/) license.
data/Rakefile CHANGED
@@ -3,4 +3,4 @@ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new('spec')
5
5
 
6
- task :default => :spec
6
+ task default: :spec
@@ -1,14 +1,14 @@
1
1
  require 'oga'
2
2
  require 'ostruct'
3
3
 
4
- REQUIRED_ATTRIBUTES = %w(title type image url)
4
+ REQUIRED_ATTRIBUTES = %w(title type image url).freeze
5
5
 
6
6
  module OGP
7
7
  class OpenGraph
8
8
  # Required Accessors
9
9
  attr_accessor :title, :type, :url
10
10
  attr_accessor :images
11
-
11
+
12
12
  # Optional Accessors
13
13
  attr_accessor :description, :determiner, :site_name
14
14
  attr_accessor :audios
@@ -17,12 +17,10 @@ module OGP
17
17
 
18
18
  def initialize(source)
19
19
  if source.nil? || source.empty?
20
- raise ArgumentError.new('`source` cannot be nil or empty.')
20
+ raise ArgumentError, '`source` cannot be nil or empty.'
21
21
  end
22
22
 
23
- if !source.include?('</html>')
24
- raise MalformedSourceError
25
- end
23
+ raise MalformedSourceError unless source.include?('</html>')
26
24
 
27
25
  self.images = []
28
26
  self.audios = []
@@ -35,17 +33,15 @@ module OGP
35
33
  end
36
34
 
37
35
  def image
38
- return if self.images.nil?
39
- return self.images.first
36
+ return if images.nil?
37
+ images.first
40
38
  end
41
39
 
42
- private
40
+ private
43
41
 
44
42
  def check_required_attributes(document)
45
43
  REQUIRED_ATTRIBUTES.each do |attribute_name|
46
- if !attribute_exists(document, attribute_name)
47
- raise MissingAttributeError.new("Missing required attribute: #{attribute_name}")
48
- end
44
+ raise MissingAttributeError, "Missing required attribute: #{attribute_name}" unless attribute_exists(document, attribute_name)
49
45
  end
50
46
  end
51
47
 
@@ -53,22 +49,22 @@ module OGP
53
49
  document.xpath('//head/meta[starts-with(@property, \'og:\')]').each do |attribute|
54
50
  attribute_name = attribute.get('property').downcase.gsub('og:', '')
55
51
  case attribute_name
56
- when /^image$/i
57
- self.images << OpenStruct.new(url: attribute.get('content').to_s)
58
- when /^image:(.+)/i
59
- self.images.last[$1.gsub('-','_')] = attribute.get('content').to_s
60
- when /^audio$/i
61
- self.audios << OpenStruct.new(url: attribute.get('content').to_s)
62
- when /^audio:(.+)/i
63
- self.audios.last[$1.gsub('-','_')] = attribute.get('content').to_s
64
- when /^locale/i
65
- self.locales << attribute.get('content').to_s
66
- when /^video$/i
67
- self.videos << OpenStruct.new(url: attribute.get('content').to_s)
68
- when /^video:(.+)/i
69
- self.videos.last[$1.gsub('-','_')] = attribute.get('content').to_s
70
- else
71
- instance_variable_set("@#{attribute_name}", attribute.get('content'))
52
+ when /^image$/i
53
+ images << OpenStruct.new(url: attribute.get('content').to_s)
54
+ when /^image:(.+)/i
55
+ images.last[Regexp.last_match[1].gsub('-', '_')] = attribute.get('content').to_s
56
+ when /^audio$/i
57
+ audios << OpenStruct.new(url: attribute.get('content').to_s)
58
+ when /^audio:(.+)/i
59
+ audios.last[Regexp.last_match[1].gsub('-', '_')] = attribute.get('content').to_s
60
+ when /^locale/i
61
+ locales << attribute.get('content').to_s
62
+ when /^video$/i
63
+ videos << OpenStruct.new(url: attribute.get('content').to_s)
64
+ when /^video:(.+)/i
65
+ videos.last[Regexp.last_match[1].gsub('-', '_')] = attribute.get('content').to_s
66
+ else
67
+ instance_variable_set("@#{attribute_name}", attribute.get('content'))
72
68
  end
73
69
  end
74
70
  end
@@ -1,3 +1,3 @@
1
1
  module OGP
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'.freeze
3
3
  end
@@ -1,4 +1,5 @@
1
1
  # coding: utf-8
2
+
2
3
  lib = File.expand_path('../lib', __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'ogp/version'
@@ -9,13 +10,13 @@ Gem::Specification.new do |spec|
9
10
  spec.authors = ['Jean-Philippe Couture']
10
11
  spec.email = ['jcouture@gmail.com']
11
12
 
12
- spec.summary = spec.description
13
- spec.description = %q{Simple Ruby library for parsing Open Graph prototocol information from websites. See http://ogp.me for more information.}
13
+ spec.summary = 'Simple Ruby library for parsing Open Graph prototocol information.'
14
+ spec.description = 'Simple Ruby library for parsing Open Graph prototocol information. See http://ogp.me for more information.'
14
15
  spec.homepage = 'https://github.com/jcouture/ogp'
15
16
  spec.license = 'MIT'
16
17
 
17
18
  spec.files = `git ls-files`.split("\n")
18
- spec.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ spec.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
19
20
  spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
21
  spec.require_paths = ['lib']
21
22
 
@@ -24,4 +25,5 @@ Gem::Specification.new do |spec|
24
25
  spec.add_development_dependency 'bundler', '~> 1.13'
25
26
  spec.add_development_dependency 'rake', '~> 10.0'
26
27
  spec.add_development_dependency 'rspec', '~> 3.6'
28
+ spec.add_development_dependency 'rubocop', '~> 0.49.1'
27
29
  end
@@ -17,26 +17,26 @@ describe OGP::OpenGraph do
17
17
  context 'with missing one of the required attributes' do
18
18
  it 'should raise an error' do
19
19
  content = File.read("#{File.dirname(__FILE__)}/../fixtures/missing_required_attributes.html")
20
-
21
- expect{OGP::OpenGraph.new(content)}.to raise_error(OGP::MissingAttributeError)
20
+
21
+ expect { OGP::OpenGraph.new(content) }.to raise_error(OGP::MissingAttributeError)
22
22
  end
23
23
  end
24
24
 
25
25
  context 'with nil source' do
26
26
  it 'should raise an error' do
27
- expect{OGP::OpenGraph.new(nil)}.to raise_error(ArgumentError)
27
+ expect { OGP::OpenGraph.new(nil) }.to raise_error(ArgumentError)
28
28
  end
29
29
  end
30
30
 
31
31
  context 'with empty source' do
32
32
  it 'should raise an error' do
33
- expect{OGP::OpenGraph.new('')}.to raise_error(ArgumentError)
33
+ expect { OGP::OpenGraph.new('') }.to raise_error(ArgumentError)
34
34
  end
35
35
  end
36
36
 
37
37
  context 'with malformed source' do
38
38
  it 'should raise an error' do
39
- expect{OGP::OpenGraph.new('Lorem ipsum dolor sit amet, consectetur adipiscing elit.')}.to raise_error(OGP::MalformedSourceError)
39
+ expect { OGP::OpenGraph.new('Lorem ipsum dolor sit amet, consectetur adipiscing elit.') }.to raise_error(OGP::MalformedSourceError)
40
40
  end
41
41
  end
42
42
 
@@ -1,7 +1,3 @@
1
1
  require 'rubygems'
2
2
  require 'bundler/setup'
3
3
  require 'ogp'
4
-
5
- RSpec.configure do |config|
6
-
7
- end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ogp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean-Philippe Couture
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-13 00:00:00.000000000 Z
11
+ date: 2017-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oga
@@ -66,8 +66,22 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.6'
69
- description: Simple Ruby library for parsing Open Graph prototocol information from
70
- websites. See http://ogp.me for more information.
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.49.1
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.49.1
83
+ description: Simple Ruby library for parsing Open Graph prototocol information. See
84
+ http://ogp.me for more information.
71
85
  email:
72
86
  - jcouture@gmail.com
73
87
  executables: []
@@ -76,6 +90,8 @@ extra_rdoc_files: []
76
90
  files:
77
91
  - ".gitignore"
78
92
  - ".rspec"
93
+ - ".rubocop.yml"
94
+ - ".travis.yml"
79
95
  - CODE_OF_CONDUCT.md
80
96
  - Gemfile
81
97
  - LICENSE.txt
@@ -117,7 +133,7 @@ rubyforge_project:
117
133
  rubygems_version: 2.5.1
118
134
  signing_key:
119
135
  specification_version: 4
120
- summary: ''
136
+ summary: Simple Ruby library for parsing Open Graph prototocol information.
121
137
  test_files:
122
138
  - spec/fixtures/audio_structured_attributes.html
123
139
  - spec/fixtures/image_structured_attributes.html