snippet 0.0.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.
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ source :rubygems
2
+
3
+ group :runtime do
4
+ gem 'mechanize'
5
+ end
6
+
7
+ group :development do
8
+ gem 'minitest'
9
+ gem 'jeweler'
10
+ gem 'pry'
11
+ end
@@ -0,0 +1,49 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ coderay (1.0.6)
5
+ domain_name (0.5.3)
6
+ unf (~> 0.0.3)
7
+ git (1.2.5)
8
+ jeweler (1.8.3)
9
+ bundler (~> 1.0)
10
+ git (>= 1.2.5)
11
+ rake
12
+ rdoc
13
+ json (1.6.6)
14
+ mechanize (2.3)
15
+ domain_name (~> 0.5, >= 0.5.1)
16
+ mime-types (~> 1.17, >= 1.17.2)
17
+ net-http-digest_auth (~> 1.1, >= 1.1.1)
18
+ net-http-persistent (~> 2.5, >= 2.5.2)
19
+ nokogiri (~> 1.4)
20
+ ntlm-http (~> 0.1, >= 0.1.1)
21
+ webrobots (~> 0.0, >= 0.0.9)
22
+ method_source (0.7.1)
23
+ mime-types (1.18)
24
+ minitest (2.12.1)
25
+ net-http-digest_auth (1.2)
26
+ net-http-persistent (2.6)
27
+ nokogiri (1.5.2)
28
+ ntlm-http (0.1.1)
29
+ pry (0.9.9.3)
30
+ coderay (~> 1.0.5)
31
+ method_source (~> 0.7.1)
32
+ slop (>= 2.4.4, < 3)
33
+ rake (0.9.2.2)
34
+ rdoc (3.12)
35
+ json (~> 1.4)
36
+ slop (2.4.4)
37
+ unf (0.0.5)
38
+ unf_ext
39
+ unf_ext (0.0.4)
40
+ webrobots (0.0.13)
41
+
42
+ PLATFORMS
43
+ ruby
44
+
45
+ DEPENDENCIES
46
+ jeweler
47
+ mechanize
48
+ minitest
49
+ pry
@@ -0,0 +1,12 @@
1
+ = snippet
2
+
3
+ Creates little snippet like facebook or Google+ does from given uri.
4
+
5
+ for example:
6
+
7
+ ```ruby
8
+ obj = Snippet.new('http://stackoverflow.com/questions/3837717/get-html-of-external-url-in-jquery')
9
+ obj.get_meta
10
+ ```
11
+
12
+ returns hash: {img, title, text}
@@ -0,0 +1,45 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
+ gem.name = "snippet"
18
+ gem.homepage = "http://github.com/kiote/snippet"
19
+ gem.license = "MIT"
20
+ gem.summary = %Q{Creates little snippet like facebook or Google+ does from given uri.}
21
+ gem.description = %Q{Creates little snippet like facebook or Google+ does from given uri.}
22
+ gem.email = "kiote_the_one@mail.ru"
23
+ gem.authors = ["krivich ekaterina"]
24
+ # dependencies defined in Gemfile
25
+ end
26
+ Jeweler::RubygemsDotOrgTasks.new
27
+
28
+ require 'rake/testtask'
29
+ Rake::TestTask.new(:test) do |test|
30
+ test.libs << 'lib' << 'test'
31
+ test.pattern = 'test/**/test_*.rb'
32
+ test.verbose = true
33
+ end
34
+
35
+ task :default => :test
36
+
37
+ require 'rdoc/task'
38
+ Rake::RDocTask.new do |rdoc|
39
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
40
+
41
+ rdoc.rdoc_dir = 'rdoc'
42
+ rdoc.title = "snippet #{version}"
43
+ rdoc.rdoc_files.include('README*')
44
+ rdoc.rdoc_files.include('lib/**/*.rb')
45
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,24 @@
1
+ require 'mechanize'
2
+ require 'open-uri'
3
+
4
+ class Snippet
5
+ def initialize(uri)
6
+ @uri = uri
7
+ @agent = Mechanize.new
8
+ @agent.user_agent_alias = 'Mac Safari'
9
+ @agent.agent.http.verify_mode = OpenSSL::SSL::VERIFY_NONE
10
+ @agent.agent.http.retry_change_requests = true
11
+ end
12
+
13
+ # the only method we need
14
+ # returns hash with {title, content, image}
15
+ # image can be null
16
+ def get_meta
17
+ @doc = @agent.get(@uri)
18
+
19
+ Snippet::Any.get_meta(@doc)
20
+ end
21
+ end
22
+
23
+ require 'snippet/facebook'
24
+ require 'snippet/any'
@@ -0,0 +1,15 @@
1
+ # gets not-facebook formatted snippet
2
+ class Snippet::Any
3
+ class << self
4
+ def get_meta(doc)
5
+ title = doc.root.xpath("//meta[@name='title']/@content").first || \
6
+ doc.root.xpath("//title").to_s
7
+ title = title.value unless title.respond_to? :capitalize
8
+ title.gsub!(/<[^>]+>/m,'').strip!
9
+ text = doc.root.xpath("//p/text()").first || doc.root.xpath("//meta[@name='description']/@content").first
10
+ img = doc.root.xpath("//link[@rel='image_src']/@href").first
11
+ img = img.value unless img.nil?
12
+ { title: title, text: text.to_s, img: img }
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,4 @@
1
+ # gets facebook-formatted snippets
2
+ class Snippet::Facebook
3
+
4
+ end
@@ -0,0 +1,58 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "snippet"
8
+ s.version = "0.0.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["krivich ekaterina"]
12
+ s.date = "2012-04-30"
13
+ s.description = "Creates little snippet like facebook or Google+ does from given uri."
14
+ s.email = "kiote_the_one@mail.ru"
15
+ s.extra_rdoc_files = [
16
+ "README.rdoc"
17
+ ]
18
+ s.files = [
19
+ "Gemfile",
20
+ "Gemfile.lock",
21
+ "README.rdoc",
22
+ "Rakefile",
23
+ "VERSION",
24
+ "lib/snippet.rb",
25
+ "lib/snippet/any.rb",
26
+ "lib/snippet/facebook.rb",
27
+ "snippet.gemspec",
28
+ "spec/lib/snippet_spec.rb",
29
+ "spec/spec_helper.rb"
30
+ ]
31
+ s.homepage = "http://github.com/kiote/snippet"
32
+ s.licenses = ["MIT"]
33
+ s.require_paths = ["lib"]
34
+ s.rubygems_version = "1.8.17"
35
+ s.summary = "Creates little snippet like facebook or Google+ does from given uri."
36
+
37
+ if s.respond_to? :specification_version then
38
+ s.specification_version = 3
39
+
40
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
41
+ s.add_runtime_dependency(%q<mechanize>, [">= 0"])
42
+ s.add_development_dependency(%q<minitest>, [">= 0"])
43
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
44
+ s.add_development_dependency(%q<pry>, [">= 0"])
45
+ else
46
+ s.add_dependency(%q<mechanize>, [">= 0"])
47
+ s.add_dependency(%q<minitest>, [">= 0"])
48
+ s.add_dependency(%q<jeweler>, [">= 0"])
49
+ s.add_dependency(%q<pry>, [">= 0"])
50
+ end
51
+ else
52
+ s.add_dependency(%q<mechanize>, [">= 0"])
53
+ s.add_dependency(%q<minitest>, [">= 0"])
54
+ s.add_dependency(%q<jeweler>, [">= 0"])
55
+ s.add_dependency(%q<pry>, [">= 0"])
56
+ end
57
+ end
58
+
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+ $LOAD_PATH << File.expand_path('../../', __FILE__)
3
+ require 'spec_helper'
4
+
5
+ describe Snippet do
6
+ describe 'any-style' do
7
+ before do
8
+ @obj = Snippet.new('http://stackoverflow.com/questions/3837717/get-html-of-external-url-in-jquery')
9
+ end
10
+
11
+ it 'should return valid hash' do
12
+ @obj.get_meta[:img].must_be_kind_of String
13
+ @obj.get_meta[:title].must_be_kind_of String
14
+ @obj.get_meta[:text].must_be_kind_of String
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,5 @@
1
+ $LOAD_PATH << File.expand_path('../../lib', __FILE__)
2
+ require 'snippet'
3
+
4
+ require 'minitest/autorun'
5
+ require 'minitest/pride'
metadata ADDED
@@ -0,0 +1,104 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: snippet
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - krivich ekaterina
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-04-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: mechanize
16
+ requirement: &70272875163160 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70272875163160
25
+ - !ruby/object:Gem::Dependency
26
+ name: minitest
27
+ requirement: &70272875182640 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70272875182640
36
+ - !ruby/object:Gem::Dependency
37
+ name: jeweler
38
+ requirement: &70272875191100 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70272875191100
47
+ - !ruby/object:Gem::Dependency
48
+ name: pry
49
+ requirement: &70272875187420 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70272875187420
58
+ description: Creates little snippet like facebook or Google+ does from given uri.
59
+ email: kiote_the_one@mail.ru
60
+ executables: []
61
+ extensions: []
62
+ extra_rdoc_files:
63
+ - README.rdoc
64
+ files:
65
+ - Gemfile
66
+ - Gemfile.lock
67
+ - README.rdoc
68
+ - Rakefile
69
+ - VERSION
70
+ - lib/snippet.rb
71
+ - lib/snippet/any.rb
72
+ - lib/snippet/facebook.rb
73
+ - snippet.gemspec
74
+ - spec/lib/snippet_spec.rb
75
+ - spec/spec_helper.rb
76
+ homepage: http://github.com/kiote/snippet
77
+ licenses:
78
+ - MIT
79
+ post_install_message:
80
+ rdoc_options: []
81
+ require_paths:
82
+ - lib
83
+ required_ruby_version: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ segments:
90
+ - 0
91
+ hash: -2621209020786483623
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ none: false
94
+ requirements:
95
+ - - ! '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ requirements: []
99
+ rubyforge_project:
100
+ rubygems_version: 1.8.17
101
+ signing_key:
102
+ specification_version: 3
103
+ summary: Creates little snippet like facebook or Google+ does from given uri.
104
+ test_files: []