auto_html-contrib 0.0.1 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c4baef4df2f6ac499cf8ba96ba49fb9e78121cf2
4
- data.tar.gz: 9ea3c439894d1fb9c5eed110545e1abd2d4377c0
3
+ metadata.gz: 7fbfe9692fc95c2068d2105decb9be1e4e17bda1
4
+ data.tar.gz: 18244880bc20ba1316cc3957985fbbfb591d0dc8
5
5
  SHA512:
6
- metadata.gz: a58fce48b1d35166bf772c3acbf22c10bb4b5caabe949e89ca2eb88d55608d04f854ece1c6268be7f90aecb812a5bb807edd8e625a104862a78ae3aeb4d526a3
7
- data.tar.gz: f9b1bc92845b04e868530448a77880b41f6d23497afdab4726813499b7ab5cb1630b3cdaec8824c207005ccbb296db4fc7d5429e12a9e1a0fe717046a145abc2
6
+ metadata.gz: 1b65ac54f8078558f52e04a05f065e6d7b686181f6b11c2f8fa445b5e735ff6b89206594e772e84b6f406266d1b9fcca912210e10cf04dffff8393251ea11def
7
+ data.tar.gz: a589a917d0376eeb661794783104ac432c0760815364a3475a8d2e36cbbac2620900e4596919f0c4c7bc9cca229943143e3623cbb9916ff08d83a0757d46bd15
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ /*.gem
1
2
  /.bundle/
2
3
  /.yardoc
3
4
  /Gemfile.lock
data/.rubocop.yml ADDED
@@ -0,0 +1,5 @@
1
+ Metrics/MethodLength:
2
+ Enabled: false
3
+
4
+ Metrics/LineLength:
5
+ Enabled: false
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+ require 'rubocop/rake_task'
3
4
 
4
5
  RSpec::Core::RakeTask.new(:spec)
6
+ RuboCop::RakeTask.new
5
7
 
6
- task :default => :spec
8
+ task default: [:rubocop, :spec]
@@ -1,25 +1,26 @@
1
1
  # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'auto_html/contrib/version'
5
2
 
6
3
  Gem::Specification.new do |spec|
7
- spec.name = "auto_html-contrib"
8
- spec.version = AutoHtml::Contrib::VERSION
9
- spec.authors = ["Dejan Simic"]
10
- spec.email = ["desimic@gmail.com"]
4
+ spec.name = 'auto_html-contrib'
5
+ spec.version = '0.1.0'
6
+ spec.authors = ['Dejan Simic']
7
+ spec.email = ['desimic@gmail.com']
11
8
 
12
- spec.summary = %q{Filters for `auto_html` gem}
13
- spec.description = %q{Filters for `auto_html` gem}
14
- spec.homepage = "https://github.com/dejan/auto_html-contrib"
15
- spec.license = "MIT"
9
+ spec.summary = 'Filters for `auto_html` gem'
10
+ spec.description = 'Filters for `auto_html` gem'
11
+ spec.homepage = 'https://github.com/dejan/auto_html-contrib'
12
+ spec.license = 'MIT'
16
13
 
17
14
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
- spec.bindir = "exe"
15
+ spec.bindir = 'exe'
19
16
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
- spec.require_paths = ["lib"]
17
+ spec.require_paths = ['lib']
21
18
 
22
- spec.add_development_dependency "bundler", "~> 1.10"
23
- spec.add_development_dependency "rake", "~> 10.0"
24
- spec.add_development_dependency "rspec"
19
+ spec.add_dependency 'tag_helper', '~> 0.5'
20
+
21
+ spec.add_development_dependency 'bundler', '~> 1.10'
22
+ spec.add_development_dependency 'rake', '~> 10.0'
23
+ spec.add_development_dependency 'rspec', '~> 3.3'
24
+ spec.add_development_dependency 'rubocop', '~> 0.33'
25
+ spec.add_development_dependency 'fakeweb', '~> 1.3'
25
26
  end
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "auto_html/contrib"
3
+ require 'bundler/setup'
4
+ require 'auto_html/contrib'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "auto_html/contrib"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start
data/lib/auto_html.rb ADDED
@@ -0,0 +1,9 @@
1
+ # Filters for AutoHtml
2
+ module AutoHtml
3
+ autoload :Gist, 'auto_html/gist'
4
+ autoload :GoogleMaps, 'auto_html/google_maps'
5
+ autoload :Instagram, 'auto_html/instagram'
6
+ autoload :Vimeo, 'auto_html/vimeo'
7
+ autoload :YouTube, 'auto_html/youtube'
8
+ autoload :Twitter, 'auto_html/twitter'
9
+ end
@@ -0,0 +1,22 @@
1
+ require 'tag_helper'
2
+
3
+ module AutoHtml
4
+ # Gist filter
5
+ class Gist
6
+ include TagHelper
7
+
8
+ def call(text)
9
+ regex = %r{https?://gist\.github\.com/(\w+/)?(\d+)}
10
+ text.gsub(regex) do
11
+ gist_id = Regexp.last_match(2)
12
+ tag(:script, type: 'text/javascript', src: gist_url(gist_id)) { '' }
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ def gist_url(id)
19
+ "https://gist.github.com/#{id}.js"
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,68 @@
1
+ require 'tag_helper'
2
+
3
+ module AutoHtml
4
+ # Google Maps filter
5
+ class GoogleMaps
6
+ include TagHelper
7
+
8
+ def initialize(width: 420, height: 315, type: :normal, zoom: 18, show_info: false)
9
+ @width = width
10
+ @height = height
11
+ @type = type
12
+ @zoom = zoom
13
+ @show_info = show_info
14
+ end
15
+
16
+ def call(text)
17
+ regex = %r{(https?)://maps\.google\.([a-z\.]+)/maps\?(.*)}
18
+ text.gsub(regex) do
19
+ country = Regexp.last_match(2)
20
+ path = "//maps.google.#{country}/maps"
21
+ query = Regexp.last_match(3)
22
+ link = link_tag(path, query)
23
+ iframe_tag(path, query) << tag(:br) << tag(:small) { link }
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def iframe_tag(path, map_query)
30
+ params = ['f=q', 'source=s_q', map_query, 'output=embed'] + map_options
31
+ tag(
32
+ :iframe,
33
+ width: @width,
34
+ height: @height,
35
+ frameborder: 0,
36
+ scrolling: 'no',
37
+ marginheight: 0,
38
+ marginwidth: 0,
39
+ src: path + '?' + params.join('&amp;')) { '' }
40
+ end
41
+
42
+ def link_tag(path, map_query)
43
+ params = ['f=q', 'source=embed', map_query]
44
+ tag(
45
+ :a,
46
+ href: path + '?' + params.join('&amp;'),
47
+ style: 'color:#000;text-align:left') do
48
+ 'View Larger Map'
49
+ end
50
+ end
51
+
52
+ def map_options
53
+ map_options = []
54
+ map_options << 'iwloc=near' if @show_info
55
+ map_options << map_types[@type]
56
+ map_options << "z=#{@zoom}"
57
+ end
58
+
59
+ def map_types
60
+ @map_types ||= {
61
+ normal: 't=m',
62
+ satellite: 't=k',
63
+ terrain: 't=p',
64
+ hibrid: 't=h'
65
+ }
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,32 @@
1
+ require 'tag_helper'
2
+
3
+ module AutoHtml
4
+ # Instagram filter
5
+ class Instagram
6
+ include TagHelper
7
+
8
+ def initialize(width: 616, height: 714)
9
+ @width = width
10
+ @height = height
11
+ end
12
+
13
+ def call(text)
14
+ text << '/' unless text.end_with?('/')
15
+ text.gsub(instagram_pattern) do
16
+ tag(
17
+ :iframe,
18
+ src: "#{text}embed",
19
+ height: @height,
20
+ width: @width,
21
+ frameborder: 0,
22
+ scrolling: 'no') { '' }
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def instagram_pattern
29
+ @instagram_pattern ||= %r{https?:\/\/(www.)?instagr(am\.com|\.am)/p/.+}
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,25 @@
1
+ require 'uri'
2
+ require 'net/http'
3
+ require 'json'
4
+
5
+ module AutoHtml
6
+ # Twitter filter
7
+ class Twitter
8
+ def call(text)
9
+ text.gsub(twitter_pattern) do |match|
10
+ uri = URI('https://api.twitter.com/1/statuses/oembed.json')
11
+ uri.query = URI.encode_www_form(url: match)
12
+ http = Net::HTTP.new(uri.host, uri.port)
13
+ http.use_ssl = true
14
+ response = JSON.parse(http.get(uri.request_uri).body)
15
+ response['html']
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ def twitter_pattern
22
+ @twitter_pattern ||= %r{(?<!href=")https://twitter\.com(/#!)?/[A-Za-z0-9_]{1,15}/status(es)?/\d+}
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,49 @@
1
+ require 'tag_helper'
2
+
3
+ module AutoHtml
4
+ # Vimeo filter
5
+ class Vimeo
6
+ include TagHelper
7
+
8
+ def initialize(width: 420, height: 315, allow_fullscreen: true)
9
+ @width = width
10
+ @height = height
11
+ @allow_fullscreen = allow_fullscreen
12
+ end
13
+
14
+ def call(text)
15
+ text.gsub(vimeo_pattern) do
16
+ vimeo_id = Regexp.last_match(2)
17
+ src = src_url(vimeo_id)
18
+ tag(:iframe, { src: src }.merge(iframe_attributes)) { '' }
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def vimeo_pattern
25
+ @vimeo_pattern ||= %r{https?://(www.)?vimeo\.com/([A-Za-z0-9._%-]*)((\?|#)\S+)?}
26
+ end
27
+
28
+ def src_url(vimeo_id)
29
+ "//player.vimeo.com/video/#{vimeo_id}"
30
+ end
31
+
32
+ def iframe_attributes
33
+ {}.tap do |attrs|
34
+ attrs[:width] = @width
35
+ attrs[:height] = @height
36
+ attrs[:frameborder] = 0
37
+ attrs.merge!(fullscreen_attributes) if @allow_fullscreen
38
+ end
39
+ end
40
+
41
+ def fullscreen_attributes
42
+ {
43
+ webkitallowfullscreen: 'yes',
44
+ mozallowfullscreen: 'yes',
45
+ allowfullscreen: 'yes'
46
+ }
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,49 @@
1
+ require 'tag_helper'
2
+
3
+ module AutoHtml
4
+ # YouTube filter
5
+ class YouTube
6
+ include TagHelper
7
+
8
+ def initialize(width: 420, height: 315)
9
+ @width = width
10
+ @height = height
11
+ end
12
+
13
+ def call(text)
14
+ text.gsub(youtube_pattern) do
15
+ youtube_id = Regexp.last_match(4)
16
+ tag(:div, class: 'video youtube') do
17
+ tag(:iframe, iframe_attributes(youtube_id)) { '' }
18
+ end
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def youtube_pattern
25
+ @youtube_pattern ||=
26
+ %r{
27
+ (https?://)?
28
+ (www.)?
29
+ (
30
+ youtube\.com/watch\?v=|
31
+ youtu\.be/|
32
+ youtube\.com/watch\?feature=player_embedded&v=
33
+ )
34
+ ([A-Za-z0-9_-]*)(\&\S+)?(\?\S+)?
35
+ }x
36
+ end
37
+
38
+ def iframe_attributes(youtube_id)
39
+ src = "//www.youtube.com/embed/#{youtube_id}"
40
+ {
41
+ width: @width,
42
+ height: @height,
43
+ src: src,
44
+ frameborder: 0,
45
+ allowfullscreen: 'yes'
46
+ }
47
+ end
48
+ end
49
+ end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auto_html-contrib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dejan Simic
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-21 00:00:00.000000000 Z
11
+ date: 2015-12-24 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: tag_helper
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.5'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.5'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -42,16 +56,44 @@ dependencies:
42
56
  name: rspec
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - ">="
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
46
74
  - !ruby/object:Gem::Version
47
- version: '0'
75
+ version: '0.33'
48
76
  type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
- - - ">="
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.33'
83
+ - !ruby/object:Gem::Dependency
84
+ name: fakeweb
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
53
95
  - !ruby/object:Gem::Version
54
- version: '0'
96
+ version: '1.3'
55
97
  description: Filters for `auto_html` gem
56
98
  email:
57
99
  - desimic@gmail.com
@@ -61,6 +103,7 @@ extra_rdoc_files: []
61
103
  files:
62
104
  - ".gitignore"
63
105
  - ".rspec"
106
+ - ".rubocop.yml"
64
107
  - CODE_OF_CONDUCT.md
65
108
  - Gemfile
66
109
  - LICENSE
@@ -70,8 +113,13 @@ files:
70
113
  - auto_html-contrib.gemspec
71
114
  - bin/console
72
115
  - bin/setup
73
- - lib/auto_html/contrib.rb
74
- - lib/auto_html/contrib/version.rb
116
+ - lib/auto_html.rb
117
+ - lib/auto_html/gist.rb
118
+ - lib/auto_html/google_maps.rb
119
+ - lib/auto_html/instagram.rb
120
+ - lib/auto_html/twitter.rb
121
+ - lib/auto_html/vimeo.rb
122
+ - lib/auto_html/youtube.rb
75
123
  homepage: https://github.com/dejan/auto_html-contrib
76
124
  licenses:
77
125
  - MIT
@@ -1,7 +0,0 @@
1
- require "auto_html/contrib/version"
2
-
3
- module AutoHtml
4
- module Contrib
5
- # Your code goes here...
6
- end
7
- end
@@ -1,5 +0,0 @@
1
- module AutoHtml
2
- module Contrib
3
- VERSION = "0.0.1"
4
- end
5
- end