motion-html-pipeline 0.3 → 0.4.2
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 +4 -4
- data/README.md +4 -2
- data/lib/motion-html-pipeline.rb +3 -5
- data/lib/motion-html-pipeline/document_fragment.rb +1 -1
- data/lib/motion-html-pipeline/pipeline.rb +6 -4
- data/lib/motion-html-pipeline/pipeline/absolute_source_filter.rb +2 -0
- data/lib/motion-html-pipeline/pipeline/disabled/@mention_filter.rb +1 -1
- data/lib/motion-html-pipeline/pipeline/disabled/autolink_filter.rb +1 -1
- data/lib/motion-html-pipeline/pipeline/filter.rb +1 -0
- data/lib/motion-html-pipeline/pipeline/image_filter.rb +1 -1
- data/lib/motion-html-pipeline/pipeline/text_filter.rb +1 -0
- data/lib/motion-html-pipeline/pipeline/version.rb +1 -1
- data/spec/motion-html-pipeline/_helpers/mock_instumentation_service.rb +1 -0
- data/spec/motion-html-pipeline/pipeline/absolute_source_filter_spec.rb +4 -4
- data/spec/motion-html-pipeline/pipeline/https_filter_spec.rb +1 -1
- data/spec/spec_helper.rb +9 -5
- metadata +6 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3bcdb20531f70a01428ccebf296156c2983b173e336aaf2d91e13a7140c08058
|
4
|
+
data.tar.gz: b1910202c610ebcc89770226462a00fd80f3d1703cdc02291beab303dba3993a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5c1e1b85ebdf611e50e033c5190f901f5ced19972aa97a83cfd9ac3683dbb2dbc749a4beeea307a5d956118e5fd1121709c4ef59796eb21b0df559978deadd5
|
7
|
+
data.tar.gz: a011de5dac1c3d11f8c9dcdaa3506e63083f3037556350ff194bf03c2dc6a5a504560c0746af305af81c73de5ab900cac96e4d0c73d208257833dd8dc0ce7cf7
|
data/README.md
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
[](http://badge.fury.io/rb/motion-html-pipeline)
|
4
4
|
[](https://travis-ci.org/digitalmoksha/motion-html-pipeline)
|
5
|
+
[](https://shields.io/)
|
6
|
+
[](http://www.rubymotion.com)
|
5
7
|
|
6
8
|
_This gem is a port of the [`html-pipeline` gem](https://github.com/jch/html-pipeline) to RubyMotion, for use on iOS and macOS. Currently synced with `html-pipeline` release [`v.2.12.3`](https://github.com/jch/html-pipeline/releases/tag/v2.12.3)_
|
7
9
|
|
@@ -64,7 +66,7 @@ would output
|
|
64
66
|
|
65
67
|
Filters can be combined into a pipeline which causes each filter to hand its
|
66
68
|
output to the next filter's input. So if you wanted to have content be
|
67
|
-
filtered through the `ImageFilter` and then wrap it in an `<a>` tag with
|
69
|
+
filtered through the `ImageFilter` and then wrap it in an `<a>` tag with
|
68
70
|
a max-width inline style:
|
69
71
|
|
70
72
|
```ruby
|
@@ -243,7 +245,7 @@ Here are some extensions people have built:
|
|
243
245
|
|
244
246
|
## Instrumenting
|
245
247
|
|
246
|
-
_Although instrumenting was ported, it has not been used real-world, and may not work
|
248
|
+
_Although instrumenting was ported, it has not been used real-world, and may not work
|
247
249
|
properly at this time._
|
248
250
|
|
249
251
|
Filters and Pipelines can be set up to be instrumented when called. The pipeline
|
data/lib/motion-html-pipeline.rb
CHANGED
@@ -1,16 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
unless defined?(Motion::Project::Config)
|
4
|
-
raise "This file must be required within a RubyMotion project Rakefile."
|
5
|
-
end
|
3
|
+
raise 'This file must be required within a RubyMotion project Rakefile.' unless defined?(Motion::Project::Config)
|
6
4
|
|
7
5
|
require 'motion-cocoapods'
|
8
6
|
|
9
7
|
lib_dir_path = File.dirname(File.expand_path(__FILE__))
|
10
8
|
Motion::Project::App.setup do |app|
|
11
|
-
app.files.unshift(Dir.glob(File.join(lib_dir_path,
|
9
|
+
app.files.unshift(Dir.glob(File.join(lib_dir_path, 'motion-html-pipeline/**/*.rb')))
|
12
10
|
|
13
11
|
app.pods do
|
14
|
-
pod 'HTMLKit', '~>
|
12
|
+
pod 'HTMLKit', '~> 4.2'
|
15
13
|
end
|
16
14
|
end
|
@@ -42,8 +42,10 @@ module MotionHTMLPipeline
|
|
42
42
|
|
43
43
|
# Public: String name for this Pipeline. Defaults to Class name.
|
44
44
|
attr_writer :instrumentation_name
|
45
|
+
|
45
46
|
def instrumentation_name
|
46
47
|
return @instrumentation_name if defined?(@instrumentation_name)
|
48
|
+
|
47
49
|
@instrumentation_name = self.class.name
|
48
50
|
end
|
49
51
|
|
@@ -54,6 +56,7 @@ module MotionHTMLPipeline
|
|
54
56
|
|
55
57
|
def initialize(filters, default_context = {}, result_class = nil)
|
56
58
|
raise ArgumentError, 'default_context cannot be nil' if default_context.nil?
|
59
|
+
|
57
60
|
@filters = filters.flatten.freeze
|
58
61
|
@default_context = default_context.freeze
|
59
62
|
@result_class = result_class || Hash
|
@@ -132,12 +135,11 @@ module MotionHTMLPipeline
|
|
132
135
|
# block, otherwise the block is ran without instrumentation.
|
133
136
|
#
|
134
137
|
# Returns the result of the provided block.
|
135
|
-
def instrument(event, payload = nil)
|
138
|
+
def instrument(event, payload = nil, &block)
|
136
139
|
payload ||= default_payload
|
137
140
|
return yield(payload) unless instrumentation_service
|
138
|
-
|
139
|
-
|
140
|
-
end
|
141
|
+
|
142
|
+
instrumentation_service.instrument event, payload, &block
|
141
143
|
end
|
142
144
|
|
143
145
|
# Internal: Default payload for instrumentation.
|
@@ -19,8 +19,10 @@ module MotionHTMLPipeline
|
|
19
19
|
def call
|
20
20
|
doc.css('img').each do |element|
|
21
21
|
next if element['src'].nil? || element['src'].empty?
|
22
|
+
|
22
23
|
src = element['src'].strip
|
23
24
|
next if src.start_with? 'http'
|
25
|
+
|
24
26
|
base = if src.start_with? '/'
|
25
27
|
image_base_url
|
26
28
|
else
|
@@ -10,7 +10,7 @@ module MotionHTMLPipeline
|
|
10
10
|
|
11
11
|
class ImageFilter < TextFilter
|
12
12
|
def call
|
13
|
-
@text.gsub(
|
13
|
+
@text.gsub(%r{(https|http)?://.+\.(jpg|jpeg|bmp|gif|png)(\?\S+)?}i) do |match|
|
14
14
|
%(<img src="#{match}" alt=""/>)
|
15
15
|
end
|
16
16
|
end
|
@@ -7,6 +7,7 @@ module MotionHTMLPipeline
|
|
7
7
|
|
8
8
|
def initialize(text, context = nil, result = nil)
|
9
9
|
raise TypeError, 'text cannot be HTML' if text.is_a?(DocumentFragment)
|
10
|
+
|
10
11
|
# Ensure that this is always a string
|
11
12
|
@text = text.respond_to?(:to_str) ? text.to_str : text.to_s
|
12
13
|
super nil, context, result
|
@@ -35,15 +35,15 @@ describe 'MotionHTMLPipeline::Pipeline::AbsoluteSourceFilterTest' do
|
|
35
35
|
end
|
36
36
|
|
37
37
|
it 'test_fails_when_context_is_missing' do
|
38
|
-
expect{ AbsoluteSourceFilter.call('<img src="img.png">', {}) }.to raise_error(RuntimeError)
|
39
|
-
expect{ AbsoluteSourceFilter.call('<img src="/img.png">', {}) }.to raise_error(RuntimeError)
|
38
|
+
expect { AbsoluteSourceFilter.call('<img src="img.png">', {}) }.to raise_error(RuntimeError)
|
39
|
+
expect { AbsoluteSourceFilter.call('<img src="/img.png">', {}) }.to raise_error(RuntimeError)
|
40
40
|
end
|
41
41
|
|
42
42
|
it 'test_tells_you_where_context_is_required' do
|
43
|
-
expect{ AbsoluteSourceFilter.call('<img src="img.png">', {}) }
|
43
|
+
expect { AbsoluteSourceFilter.call('<img src="img.png">', {}) }
|
44
44
|
.to raise_error(RuntimeError, 'MotionHTMLPipeline::Pipeline::AbsoluteSourceFilter')
|
45
45
|
|
46
|
-
expect{ AbsoluteSourceFilter.call('<img src="/img.png">', {}) }
|
46
|
+
expect { AbsoluteSourceFilter.call('<img src="/img.png">', {}) }
|
47
47
|
.to raise_error(RuntimeError, 'MotionHTMLPipeline::Pipeline::AbsoluteSourceFilter')
|
48
48
|
end
|
49
49
|
end
|
@@ -48,7 +48,7 @@ describe 'MotionHTMLPipeline::Pipeline::HttpsFilter' do
|
|
48
48
|
it 'test_validates_http_url' do
|
49
49
|
@options.clear
|
50
50
|
|
51
|
-
expect{ filter('') }
|
51
|
+
expect { filter('') }
|
52
52
|
.to raise_error(ArgumentError, 'MotionHTMLPipeline::Pipeline::HttpsFilter: :http_url')
|
53
53
|
end
|
54
54
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -4,10 +4,10 @@
|
|
4
4
|
#
|
5
5
|
# rake spec filter="name of spec" # To filter by spec name
|
6
6
|
# rake spec files=foo_spec filter="name of spec"
|
7
|
-
# rake spec filter_context="this doesn't work yet" # To filter by context name (doesn't work
|
7
|
+
# rake spec filter_context="this doesn't work yet" # To filter by context name (doesn't work
|
8
|
+
# until MacBacon implements it)
|
8
9
|
# rake spec hide_backtraces=yes # Hide backtraces
|
9
10
|
|
10
|
-
|
11
11
|
# From http://chen.do/blog/2013/06/03/running-individual-specs-with-rubymotion/
|
12
12
|
#------------------------------------------------------------------------------
|
13
13
|
def silence_warnings(&block)
|
@@ -24,12 +24,12 @@ end
|
|
24
24
|
silence_warnings do
|
25
25
|
module Bacon
|
26
26
|
if ENV['filter']
|
27
|
-
|
27
|
+
warn "Filtering specs that match: #{ENV['filter']}"
|
28
28
|
RestrictName = Regexp.new(ENV['filter'])
|
29
29
|
end
|
30
30
|
|
31
31
|
if ENV['filter_context']
|
32
|
-
|
32
|
+
warn "Filtering contexts that match: #{ENV['filter_context']}"
|
33
33
|
RestrictContext = Regexp.new(ENV['filter_context'])
|
34
34
|
end
|
35
35
|
|
@@ -40,11 +40,15 @@ end
|
|
40
40
|
#------------------------------------------------------------------------------
|
41
41
|
# TODO total hack - without this, the `bacon-expect` gem doesn't get used, and
|
42
42
|
# on iOS I get errors like
|
43
|
-
# *** Terminating app due to uncaught exception 'NameError',
|
43
|
+
# *** Terminating app due to uncaught exception 'NameError',
|
44
|
+
# reason: '.../bacon-expect/lib/bacon-expect/matchers/eql.rb:2:in `<main>:
|
45
|
+
# uninitialized constant BaconExpect::Matcher::SingleMethod (NameError)
|
44
46
|
# and on macOS it only show up as `*nil description*`
|
47
|
+
# rubocop: disable Lint/EmptyClass
|
45
48
|
module BaconExpect
|
46
49
|
module Matcher
|
47
50
|
class SingleMethod
|
48
51
|
end
|
49
52
|
end
|
50
53
|
end
|
54
|
+
# rubocop: enable Lint/EmptyClass
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: motion-html-pipeline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Tomayko
|
8
8
|
- Jerry Cheung
|
9
9
|
- Garen J. Torikian
|
10
10
|
- Brett Walker
|
11
|
-
autorequire:
|
11
|
+
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2021-05-05 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: motion-cocoapods
|
@@ -27,20 +27,6 @@ dependencies:
|
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: rake
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
requirements:
|
34
|
-
- - ">="
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: '0'
|
37
|
-
type: :development
|
38
|
-
prerelease: false
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
40
|
-
requirements:
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: '0'
|
44
30
|
- !ruby/object:Gem::Dependency
|
45
31
|
name: motion-expect
|
46
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -110,7 +96,7 @@ homepage: https://github.com/digitalmoksha/motion-html-pipeline
|
|
110
96
|
licenses:
|
111
97
|
- MIT
|
112
98
|
metadata: {}
|
113
|
-
post_install_message:
|
99
|
+
post_install_message:
|
114
100
|
rdoc_options: []
|
115
101
|
require_paths:
|
116
102
|
- lib
|
@@ -125,8 +111,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
111
|
- !ruby/object:Gem::Version
|
126
112
|
version: '0'
|
127
113
|
requirements: []
|
128
|
-
rubygems_version: 3.
|
129
|
-
signing_key:
|
114
|
+
rubygems_version: 3.1.4
|
115
|
+
signing_key:
|
130
116
|
specification_version: 4
|
131
117
|
summary: Helpers for processing content through a chain of filters (RubyMotion version,
|
132
118
|
ported from https://github.com/jch/html-pipeline)
|