textp 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 +7 -0
- data/.document +4 -0
- data/.gitignore +2 -0
- data/.rspec +2 -0
- data/ChangeLog.rdoc +4 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +65 -0
- data/Guardfile +24 -0
- data/LICENSE +21 -0
- data/README.md +4 -0
- data/README.rdoc +27 -0
- data/Rakefile +41 -0
- data/lib/textp.rb +4 -0
- data/lib/textp/html_helper.rb +51 -0
- data/lib/textp/parser.rb +33 -0
- data/lib/textp/version.rb +4 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/textp_spec.rb +50 -0
- data/textp.gemspec +25 -0
- metadata +120 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c9ec25aed20285779879b2fbbab6c7f511f45ca9
|
4
|
+
data.tar.gz: cfc263582f1c2088e22446f488c17132287ea7ca
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0b57e9f92de5ab8ec96fc87966d4edbc84c8141edc5be053046e1e4d1fc9f3eecb062ffbdbd8d0315da9fa270929b7389458dff50f3b09338cee9b9343f06beb
|
7
|
+
data.tar.gz: adffd381cd01d04e829356cd49fa088b159752534c07336150de480649363e81fe96a3938315176b909eda122a060137ec520c582a62775fa4cab069539a9e1c
|
data/.document
ADDED
data/.gitignore
ADDED
data/.rspec
ADDED
data/ChangeLog.rdoc
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
celluloid (0.15.2)
|
5
|
+
timers (~> 1.1.0)
|
6
|
+
coderay (1.1.0)
|
7
|
+
diff-lcs (1.2.5)
|
8
|
+
ffi (1.9.3)
|
9
|
+
formatador (0.2.4)
|
10
|
+
guard (2.6.1)
|
11
|
+
formatador (>= 0.2.4)
|
12
|
+
listen (~> 2.7)
|
13
|
+
lumberjack (~> 1.0)
|
14
|
+
pry (>= 0.9.12)
|
15
|
+
thor (>= 0.18.1)
|
16
|
+
guard-rspec (4.2.9)
|
17
|
+
guard (~> 2.1)
|
18
|
+
rspec (>= 2.14, < 4.0)
|
19
|
+
json (1.8.1)
|
20
|
+
listen (2.7.5)
|
21
|
+
celluloid (>= 0.15.2)
|
22
|
+
rb-fsevent (>= 0.9.3)
|
23
|
+
rb-inotify (>= 0.9)
|
24
|
+
lumberjack (1.0.5)
|
25
|
+
method_source (0.8.2)
|
26
|
+
nyan-cat-formatter (0.6.0)
|
27
|
+
rspec (>= 2.99.0.beta1, >= 2.14.2, < 4)
|
28
|
+
pry (0.9.12.6)
|
29
|
+
coderay (~> 1.0)
|
30
|
+
method_source (~> 0.8)
|
31
|
+
slop (~> 3.4)
|
32
|
+
rb-fsevent (0.9.4)
|
33
|
+
rb-inotify (0.9.4)
|
34
|
+
ffi (>= 0.5.0)
|
35
|
+
rdoc (3.12.2)
|
36
|
+
json (~> 1.4)
|
37
|
+
rspec (3.0.0.beta2)
|
38
|
+
rspec-core (= 3.0.0.beta2)
|
39
|
+
rspec-expectations (= 3.0.0.beta2)
|
40
|
+
rspec-mocks (= 3.0.0.beta2)
|
41
|
+
rspec-core (3.0.0.beta2)
|
42
|
+
rspec-support (= 3.0.0.beta2)
|
43
|
+
rspec-expectations (3.0.0.beta2)
|
44
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
45
|
+
rspec-support (= 3.0.0.beta2)
|
46
|
+
rspec-mocks (3.0.0.beta2)
|
47
|
+
rspec-support (= 3.0.0.beta2)
|
48
|
+
rspec-support (3.0.0.beta2)
|
49
|
+
ruby-oembed (0.8.9)
|
50
|
+
rubygems-tasks (0.2.4)
|
51
|
+
slop (3.5.0)
|
52
|
+
thor (0.19.1)
|
53
|
+
timers (1.1.0)
|
54
|
+
|
55
|
+
PLATFORMS
|
56
|
+
ruby
|
57
|
+
|
58
|
+
DEPENDENCIES
|
59
|
+
guard
|
60
|
+
guard-rspec
|
61
|
+
nyan-cat-formatter
|
62
|
+
rdoc (~> 3.0)
|
63
|
+
rspec (~> 3.0.0.beta2)
|
64
|
+
ruby-oembed (~> 0.8.9)
|
65
|
+
rubygems-tasks (~> 0.2)
|
data/Guardfile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
guard :rspec do
|
5
|
+
watch(%r{^spec/.+_spec\.rb$})
|
6
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
7
|
+
watch('spec/spec_helper.rb') { "spec" }
|
8
|
+
|
9
|
+
# Rails example
|
10
|
+
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
11
|
+
watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
|
12
|
+
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
|
13
|
+
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
|
14
|
+
watch('config/routes.rb') { "spec/routing" }
|
15
|
+
watch('app/controllers/application_controller.rb') { "spec/controllers" }
|
16
|
+
|
17
|
+
# Capybara features specs
|
18
|
+
watch(%r{^app/views/(.+)/.*\.(erb|haml|slim)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
|
19
|
+
|
20
|
+
# Turnip features and steps
|
21
|
+
watch(%r{^spec/acceptance/(.+)\.feature$})
|
22
|
+
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
|
23
|
+
end
|
24
|
+
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2014 Oovre
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
= textp
|
2
|
+
|
3
|
+
* {Homepage}[https://rubygems.org/gems/textp]
|
4
|
+
* {Documentation}[http://rubydoc.info/gems/textp/frames]
|
5
|
+
* {Email}[mailto:kidd.josh.343 at gmail.com]
|
6
|
+
|
7
|
+
== Description
|
8
|
+
|
9
|
+
TODO: Description
|
10
|
+
|
11
|
+
== Features
|
12
|
+
|
13
|
+
== Examples
|
14
|
+
|
15
|
+
require 'textp'
|
16
|
+
|
17
|
+
== Requirements
|
18
|
+
|
19
|
+
== Install
|
20
|
+
|
21
|
+
$ gem install textp
|
22
|
+
|
23
|
+
== Copyright
|
24
|
+
|
25
|
+
Copyright (c) 2014
|
26
|
+
|
27
|
+
See LICENSE.txt for details.
|
data/Rakefile
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'rake'
|
5
|
+
|
6
|
+
begin
|
7
|
+
gem 'rubygems-tasks', '~> 0.2'
|
8
|
+
require 'rubygems/tasks'
|
9
|
+
|
10
|
+
Gem::Tasks.new
|
11
|
+
rescue LoadError => e
|
12
|
+
warn e.message
|
13
|
+
warn "Run `gem install rubygems-tasks` to install Gem::Tasks."
|
14
|
+
end
|
15
|
+
|
16
|
+
begin
|
17
|
+
gem 'rdoc', '~> 3.0'
|
18
|
+
require 'rdoc/task'
|
19
|
+
|
20
|
+
RDoc::Task.new do |rdoc|
|
21
|
+
rdoc.title = "textp"
|
22
|
+
end
|
23
|
+
rescue LoadError => e
|
24
|
+
warn e.message
|
25
|
+
warn "Run `gem install rdoc` to install 'rdoc/task'."
|
26
|
+
end
|
27
|
+
task :doc => :rdoc
|
28
|
+
|
29
|
+
begin
|
30
|
+
gem 'rspec', '~> 3.0.0.beta2'
|
31
|
+
require 'rspec/core/rake_task'
|
32
|
+
|
33
|
+
RSpec::Core::RakeTask.new
|
34
|
+
rescue LoadError => e
|
35
|
+
task :spec do
|
36
|
+
abort "Please run `gem install rspec` to install RSpec."
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
task :test => :spec
|
41
|
+
task :default => :spec
|
data/lib/textp.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'oembed'
|
3
|
+
|
4
|
+
module Textp
|
5
|
+
|
6
|
+
class HtmlHelper
|
7
|
+
def initialize(text)
|
8
|
+
@text = text
|
9
|
+
@parser = Parser.new(text)
|
10
|
+
end
|
11
|
+
|
12
|
+
def links
|
13
|
+
links = { :links => @parser.links }
|
14
|
+
end
|
15
|
+
|
16
|
+
def links_content
|
17
|
+
oembed_data = {}
|
18
|
+
OEmbed::Providers.register(OEmbed::Providers::Youtube)
|
19
|
+
@parser.links.each do |link|
|
20
|
+
resource = OEmbed::Providers.get(link)
|
21
|
+
oembed_data[link] ||= {}
|
22
|
+
oembed_data[link][:html] ||= resource.html
|
23
|
+
oembed_data[link][:provider] ||= {
|
24
|
+
:endpoint => resource.provider.endpoint
|
25
|
+
}
|
26
|
+
end
|
27
|
+
oembed_data
|
28
|
+
end
|
29
|
+
|
30
|
+
def parser
|
31
|
+
@parser
|
32
|
+
end
|
33
|
+
|
34
|
+
def response
|
35
|
+
json_string = {
|
36
|
+
:links => @parser.links,
|
37
|
+
:oembed_data => links_content
|
38
|
+
}.to_json
|
39
|
+
end
|
40
|
+
|
41
|
+
def replacement_content
|
42
|
+
content = @text
|
43
|
+
@parser.links.each do |link|
|
44
|
+
html_content = links_content[link][:html]
|
45
|
+
content.gsub!(link, html_content)
|
46
|
+
end
|
47
|
+
content
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
data/lib/textp/parser.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'uri'
|
2
|
+
|
3
|
+
module Textp
|
4
|
+
class Parser
|
5
|
+
|
6
|
+
# Pass in some text and all things that
|
7
|
+
# can be parsed will be parsed and seperated into
|
8
|
+
# individual parts.
|
9
|
+
#
|
10
|
+
# Usage:
|
11
|
+
# => Parser.new("Meeting tomorrow at 3:30 PM.")
|
12
|
+
# => Parser.new("This embeded video is cool: youtube_link")
|
13
|
+
|
14
|
+
def initialize(text)
|
15
|
+
@text = text
|
16
|
+
end
|
17
|
+
|
18
|
+
def parse
|
19
|
+
(!@text.nil?) ? @text : nil
|
20
|
+
end
|
21
|
+
|
22
|
+
def has_links?
|
23
|
+
urls = URI.extract(@text)
|
24
|
+
(urls.empty?) ? false : true
|
25
|
+
end
|
26
|
+
|
27
|
+
def links
|
28
|
+
links = URI.extract(@text)
|
29
|
+
links
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
data/spec/spec_helper.rb
ADDED
data/spec/textp_spec.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'textp'
|
3
|
+
|
4
|
+
describe Textp do
|
5
|
+
it "should have a VERSION constant" do
|
6
|
+
expect(subject.const_get('VERSION')).to_not be_empty
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "Parser" do
|
10
|
+
before(:each) do
|
11
|
+
@text = "I have a link http://www.google.com"
|
12
|
+
@parser = Parser.new(@text)
|
13
|
+
end
|
14
|
+
it "should output text" do
|
15
|
+
expect(@parser.parse).to eq(@text)
|
16
|
+
end
|
17
|
+
it "should find urls in text" do
|
18
|
+
expect(@parser.has_links?).to_not be(false)
|
19
|
+
end
|
20
|
+
it "should return links as json" do
|
21
|
+
expect(@parser.links).to eq(["http://www.google.com"])
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "HTML Helper" do
|
26
|
+
|
27
|
+
before(:each) do
|
28
|
+
@text = "I have a youtube link https://www.youtube.com/watch?v=9Nxq-5jt10Q"
|
29
|
+
@html = HtmlHelper.new(@text)
|
30
|
+
end
|
31
|
+
|
32
|
+
context "Links" do
|
33
|
+
it "should have a valid links array" do
|
34
|
+
expect(@html.parser.links).to eq(["https://www.youtube.com/watch?v=9Nxq-5jt10Q"])
|
35
|
+
end
|
36
|
+
it "should convert links to hash" do
|
37
|
+
expected = {:links => ["https://www.youtube.com/watch?v=9Nxq-5jt10Q"]}
|
38
|
+
expect(@html.links).to eq(expected)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context "Html Replacement Content" do
|
43
|
+
it "should replace links with html fetched from oembed api" do
|
44
|
+
expect(@html.replacement_content).to_not eq("I have a youtube link https://www.youtube.com/watch?v=9Nxq-5jt10Q")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
data/textp.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require File.expand_path('../lib/textp/version', __FILE__)
|
4
|
+
|
5
|
+
Gem::Specification.new do |gem|
|
6
|
+
gem.name = "textp"
|
7
|
+
gem.version = Textp::VERSION
|
8
|
+
gem.summary = "Simple Text parsing for html or just text."
|
9
|
+
gem.description = "Give a string of text with a link and it will replace the link with the embeded HTML content."
|
10
|
+
gem.license = "MIT"
|
11
|
+
gem.authors = ["Joshua Kidd"]
|
12
|
+
gem.email = "kidd.josh.343@gmail.com"
|
13
|
+
gem.homepage = "https://rubygems.org/gems/textp"
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ['lib']
|
19
|
+
|
20
|
+
gem.add_dependency 'ruby-oembed', '~> 0.8.9'
|
21
|
+
|
22
|
+
gem.add_development_dependency 'rdoc', '~> 3.0'
|
23
|
+
gem.add_development_dependency 'rspec', '~> 3.0.0.beta2'
|
24
|
+
gem.add_development_dependency 'rubygems-tasks', '~> 0.2'
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: textp
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Joshua Kidd
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-05-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: ruby-oembed
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.8.9
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.8.9
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rdoc
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.0.0.beta2
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.0.0.beta2
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubygems-tasks
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.2'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.2'
|
69
|
+
description: Give a string of text with a link and it will replace the link with the
|
70
|
+
embeded HTML content.
|
71
|
+
email: kidd.josh.343@gmail.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- .document
|
77
|
+
- .gitignore
|
78
|
+
- .rspec
|
79
|
+
- ChangeLog.rdoc
|
80
|
+
- Gemfile
|
81
|
+
- Gemfile.lock
|
82
|
+
- Guardfile
|
83
|
+
- LICENSE
|
84
|
+
- README.md
|
85
|
+
- README.rdoc
|
86
|
+
- Rakefile
|
87
|
+
- lib/textp.rb
|
88
|
+
- lib/textp/html_helper.rb
|
89
|
+
- lib/textp/parser.rb
|
90
|
+
- lib/textp/version.rb
|
91
|
+
- spec/spec_helper.rb
|
92
|
+
- spec/textp_spec.rb
|
93
|
+
- textp.gemspec
|
94
|
+
homepage: https://rubygems.org/gems/textp
|
95
|
+
licenses:
|
96
|
+
- MIT
|
97
|
+
metadata: {}
|
98
|
+
post_install_message:
|
99
|
+
rdoc_options: []
|
100
|
+
require_paths:
|
101
|
+
- lib
|
102
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - '>='
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '0'
|
107
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - '>='
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
requirements: []
|
113
|
+
rubyforge_project:
|
114
|
+
rubygems_version: 2.2.2
|
115
|
+
signing_key:
|
116
|
+
specification_version: 4
|
117
|
+
summary: Simple Text parsing for html or just text.
|
118
|
+
test_files:
|
119
|
+
- spec/spec_helper.rb
|
120
|
+
- spec/textp_spec.rb
|