middleman-twitter-oembed 0.1.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cf104be4b9895b313d987752c3c99fa96f00b974
4
+ data.tar.gz: 905e1d36b4a0a35e04d4c6bf206f6a8c229069f0
5
+ SHA512:
6
+ metadata.gz: ef6f428322f4c236b1fdf621e6f8a663db2aeb3b0964a79246fa16b0f6f5fc65149743f16deb98d05682ceca8624d56eb1d4dcfdac26dc3b5827e321fb4843d4
7
+ data.tar.gz: 568a4a6d0ce31252fa92088f2aa6e554c2020b055965feaad2efd3af2fbdfc6edddedac15b183405133c150ec81ed0d9d634f4ff7276bf05c29063ce34ab1d0d
@@ -0,0 +1,11 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+
11
+ *~
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 2.0.0
5
+ - 2.2
6
+
7
+ script: "bundle exec rake test"
8
+
9
+ env: TEST=true
@@ -0,0 +1,6 @@
1
+ ## master
2
+
3
+ ### 0.1.0
4
+
5
+ * released 2015-4-25
6
+ * initial version
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in middleman-twitter-oembed.gemspec
4
+ gemspec
5
+
6
+ gem 'coveralls', require: false
@@ -0,0 +1,78 @@
1
+ [![Gem Version](https://badge.fury.io/rb/middleman-twitter-oembed.svg)](http://badge.fury.io/rb/middleman-twitter-oembed)
2
+ [![Build Status](https://travis-ci.org/atarukodaka/middleman-twitter-oembed.svg)](https://travis-ci.org/atarukodaka/middleman-twitter-oembed)
3
+ [![Coverage Status](https://coveralls.io/repos/atarukodaka/middleman-twitter-oembed/badge.svg)](https://coveralls.io/r/atarukodaka/middleman-twitter-oembed)
4
+ [![Code Climate](https://codeclimate.com/github/atarukodaka/middleman-twitter-oembed/badges/gpa.svg)](https://codeclimate.com/github/atarukodaka/middleman-twitter-oembed)
5
+
6
+
7
+ ## Middleman::TwitterOembed
8
+
9
+ An extension to render and/or convert twitter stauts id into e-Embed status.
10
+
11
+
12
+ ## Installation
13
+
14
+ Add this line to your application's Gemfile:
15
+
16
+ ```ruby
17
+ gem 'middleman-twitter-oembed'
18
+ ```
19
+
20
+ And then execute:
21
+
22
+ $ bundle
23
+
24
+ Or install it yourself as:
25
+
26
+ $ gem install middleman-twitter-oembed
27
+
28
+ ## Usage
29
+
30
+ in config.rb:
31
+
32
+ activate :twitter_oembed
33
+
34
+ ### convert before rendering
35
+
36
+ on default, twitter url(like 'http://twitter.com/foo/123456789') will be converted to twitter box before rendering.
37
+
38
+ You can change the regex to match:
39
+
40
+ ```ruby
41
+ activate :twitter_oembed do |twitter|
42
+ twitter.convert_regex = %r{\[\[twitter: *(\d+)\]\]}
43
+ end
44
+ ```
45
+
46
+ If you don't want to convert, set false for enable_convert option:
47
+
48
+ ```ruby
49
+ activate :twitter_oembed do |twitter|
50
+ twitter.enable_convert = false
51
+ end
52
+ ```
53
+
54
+ ### helper
55
+
56
+ in *.erb:
57
+
58
+ ```
59
+ <%= twitter_oembed('123456789') %>
60
+
61
+ or
62
+
63
+ <%= twitter_oembed_by_url('http://twitter.com/foo/status/123456789') %>
64
+ ```
65
+
66
+ ## Development
67
+
68
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
69
+
70
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
71
+
72
+ ## Contributing
73
+
74
+ 1. Fork it ( https://github.com/atarukodaka/middleman-twitter-oembed/fork )
75
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
76
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
77
+ 4. Push to the branch (`git push origin my-new-feature`)
78
+ 5. Create a new Pull Request
@@ -0,0 +1,21 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rake/clean'
3
+
4
+ require 'cucumber/rake/task'
5
+ require 'middleman-core'
6
+
7
+ Cucumber::Rake::Task.new(:cucumber, 'Run features that should pass') do |t|
8
+ ENV["TEST"] = "true"
9
+
10
+ exempt_tags = ""
11
+ exempt_tags << "--tags ~@nojava " if RUBY_PLATFORM == "java"
12
+ exempt_tags << "--tags ~@three_one " unless ::Middleman::VERSION.match(/^3\.1\./)
13
+
14
+ t.cucumber_opts = "--color --tags ~@wip #{exempt_tags} --strict --format #{ENV['CUCUMBER_FORMAT'] || 'pretty'}"
15
+ end
16
+
17
+ require 'rake/clean'
18
+
19
+ desc "Run tests, both RSpec and Cucumber"
20
+ #task :test => [:spec, :cucumber]
21
+ task :test => [:cucumber]
@@ -0,0 +1 @@
1
+ activate :twitter_oembed
@@ -0,0 +1,5 @@
1
+ ---
2
+ title: Top
3
+ ---
4
+
5
+ Welcome
@@ -0,0 +1,7 @@
1
+ require "middleman-twitter-oembed/version"
2
+
3
+ ::Middleman::Extensions.register(:twitter_oembed) do
4
+ require 'middleman-twitter-oembed/extension'
5
+ ::Middleman::TwitterOembed::Extension
6
+ end
7
+
@@ -0,0 +1,46 @@
1
+ require 'middleman-twitter-oembed/helpers'
2
+ require 'middleman-twitter-oembed/interface'
3
+
4
+ module Middleman
5
+ module TwitterOembed
6
+ class Extension < Middleman::Extension
7
+ option :enable_convert, true
8
+ option :convert_regex, %r{^https?://twitter.com/[a-zA-Z0-9_]+/status/(\d+)$}
9
+ option :omit_script, false
10
+ option :use_cache, true
11
+ option :cache_dir, ".caches/twitter_oembed"
12
+
13
+ self.defined_helpers = [::Middleman::TwitterOembed::Helpers]
14
+
15
+ attr_reader :interface
16
+
17
+ def initialize(app, options_hash={}, &block)
18
+ super
19
+ #app.set :twitter_oembed_settings, options
20
+
21
+ opts = {
22
+ use_cache: options.use_cache,
23
+ cache_dir: options.cache_dir,
24
+ omit_script: options.omit_script
25
+ }
26
+ @interface = Middleman::TwitterOembed::Interface.new(opts)
27
+
28
+ extension = self
29
+ app.before_render do |body|
30
+ extension.convert(body)
31
+ end
32
+ end
33
+
34
+ def convert(body)
35
+ return unless options.enable_convert
36
+
37
+ #regex = %r{https?://twitter.com/[a-zA-Z0-9_]+/status/(\d+)}
38
+ regex = options.convert_regex
39
+ body.gsub(regex){
40
+ res = @interface.get_tweet($1)
41
+ res['html']
42
+ }
43
+ end
44
+ end ## class Extension
45
+ end
46
+ end
@@ -0,0 +1,19 @@
1
+ module Middleman::TwitterOembed
2
+ module Helpers
3
+ def twitter_oembed(status_id)
4
+ ext = extensions[:twitter_oembed]
5
+ res = ext.interface.get_tweet(status_id)
6
+ res['html']
7
+ end
8
+ alias_method :twitter_oembed_by_status_id, :twitter_oembed
9
+
10
+ def twitter_oembed_by_url(url)
11
+ regex = %r{https?://twitter.com/[a-zA-Z0-9_]+/status/(\d+)}
12
+ url =~ regex
13
+ status_id = $1
14
+ logger.debug url
15
+ logger.debug status_id
16
+ twitter_oembed(status_id)
17
+ end
18
+ end ## module Helpers
19
+ end
@@ -0,0 +1,47 @@
1
+ module Middleman::TwitterOembed
2
+ class Interface
3
+ include ERB::Util
4
+
5
+ def initialize(options = {})
6
+ @use_cache = options[:use_cache] || true
7
+ @cache_dir = options[:cache_dir] || "./caches/twitter_oembed"
8
+ @omit_script = options[:omit_script] || false
9
+
10
+ @result_cache = {}
11
+ end
12
+ def get_tweet(status_id)
13
+ return @result_cache[status_id] if @result_cache.has_key?(status_id)
14
+ return @result_cache[status_id] = load_cache(status_id) if @use_cache && File.exist?(cache_filename(status_id))
15
+
16
+ url = "https://api.twitter.com/1/statuses/oembed.json?id=#{h(status_id)}"
17
+ url += "&omit_script=true" if @omit_script
18
+ begin
19
+ require 'open-uri'
20
+ require 'json'
21
+
22
+ res = JSON.parse(open(url).read)
23
+ ## yet to rescue
24
+ end
25
+
26
+ @result_cache[status_id] = res
27
+ save_cache(status_id, res) if @use_cache
28
+
29
+ return res
30
+ end
31
+ private
32
+ def cache_filename(status_id)
33
+ File.join(@cache_dir, status_id)
34
+ end
35
+ def load_cache(status_id)
36
+ Marshal.load(File.read(cache_filename(status_id)))
37
+ end
38
+ def save_cache(status_id, res)
39
+ dir = File.dirname(cache_filename(status_id))
40
+
41
+ require 'fileutils'
42
+ FileUtils.mkdir_p(dir) unless File.exists?(dir)
43
+ File.open(cache_filename(status_id), 'wb'){|f| f.write(Marshal.dump(res))}
44
+ end
45
+ end
46
+ end
47
+
@@ -0,0 +1,5 @@
1
+ module Middleman
2
+ module TwitterOembed
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,2 @@
1
+ require 'middleman-twitter-oembed'
2
+
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'middleman-twitter-oembed/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "middleman-twitter-oembed"
8
+ spec.version = Middleman::TwitterOembed::VERSION
9
+ spec.authors = ["Ataru Kodaka"]
10
+ spec.email = ["ataru.kodaka@gmail.com"]
11
+
12
+ spec.summary = %q{An extension for middleman to render twittr oembed status}
13
+ spec.description = %q{An extension for middleman to render twittr oembed status}
14
+ spec.homepage = "http://github.com/atarukodaka/middleman-twitter-oembed"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ spec.bindir = "exe"
19
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_dependency("middleman-core", "~> 3.2")
23
+
24
+ spec.add_development_dependency "bundler", "~> 1.7"
25
+ spec.add_development_dependency "rake", "~> 10.0"
26
+ spec.add_development_dependency "cucumber", "~> 1.3"
27
+ spec.add_development_dependency "aruba", "~> 0.6"
28
+ spec.add_development_dependency "therubyracer", "~>0.12"
29
+ spec.add_development_dependency "pry-byebug", "~>3.1"
30
+ spec.add_development_dependency "rb-readline", "~>0.5"
31
+ spec.add_development_dependency "middleman-pry", "~>0.0"
32
+ end
metadata ADDED
@@ -0,0 +1,186 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: middleman-twitter-oembed
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ataru Kodaka
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-04-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: middleman-core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.7'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.7'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: cucumber
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: aruba
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.6'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.6'
83
+ - !ruby/object:Gem::Dependency
84
+ name: therubyracer
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.12'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.12'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry-byebug
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.1'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.1'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rb-readline
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.5'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.5'
125
+ - !ruby/object:Gem::Dependency
126
+ name: middleman-pry
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.0'
139
+ description: An extension for middleman to render twittr oembed status
140
+ email:
141
+ - ataru.kodaka@gmail.com
142
+ executables: []
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - ".gitignore"
147
+ - ".travis.yml"
148
+ - CHANGELOG.md
149
+ - Gemfile
150
+ - README.md
151
+ - Rakefile
152
+ - fixtures/basic-app/config.rb
153
+ - fixtures/basic-app/source/index.html.erb
154
+ - lib/middleman-twitter-oembed.rb
155
+ - lib/middleman-twitter-oembed/extension.rb
156
+ - lib/middleman-twitter-oembed/helpers.rb
157
+ - lib/middleman-twitter-oembed/interface.rb
158
+ - lib/middleman-twitter-oembed/version.rb
159
+ - lib/middleman_extension.rb
160
+ - middleman-twitter-oembed.gemspec
161
+ homepage: http://github.com/atarukodaka/middleman-twitter-oembed
162
+ licenses:
163
+ - MIT
164
+ metadata: {}
165
+ post_install_message:
166
+ rdoc_options: []
167
+ require_paths:
168
+ - lib
169
+ required_ruby_version: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ required_rubygems_version: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ requirements: []
180
+ rubyforge_project:
181
+ rubygems_version: 2.4.6
182
+ signing_key:
183
+ specification_version: 4
184
+ summary: An extension for middleman to render twittr oembed status
185
+ test_files: []
186
+ has_rdoc: