content-pipeline 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 55c0d469321e4e6b79286994aa83543cd22a1240
4
- data.tar.gz: 179a18c1fd8cc5768391d76e2f63533cf8da504c
3
+ metadata.gz: 99982146710eb42b199f6f0d9af72351654c2477
4
+ data.tar.gz: 93180e18ff0229a46cd1d21cc78ddf42b4d4e780
5
5
  SHA512:
6
- metadata.gz: 4fa0edd425a2aba990865bbd7756af610e8ae64f777d757bb0a24f6c361ed5ee7520c0dcb3c263c83a0baf61be9125dd41eb0acbc5e0561aee1636eb3849882b
7
- data.tar.gz: 08ebb13c9783c5b3f75c16541388d7238423a417f45e631eb7b53ceb71bd2180940a5bd0cadce0eebc5e72d66d8603e4eb7a577e1d1a0f97119752d174b66385
6
+ metadata.gz: 24cef63ca9907370b1f6809eef8464806e75a97df2370100681d33aac94245d31108623f9db673ed7353f6849468de1c8bbd98351df59c71a249c29b85877210
7
+ data.tar.gz: bf3541baf1aa6e64118515e75a3e17b2ec18acc2d5c5cdf3c35bdd1f3b00161c20b60bf32d3e498de548bee18632ccc9540e0949832bf35258760c0d3d459542
data/Gemfile CHANGED
@@ -10,5 +10,6 @@ group :development do
10
10
  unless RbConfig::CONFIG["ruby_install_name"] == "jruby"
11
11
  gem "pygments.rb"
12
12
  gem "github-markdown"
13
+ gem "redcarpet"
13
14
  end
14
15
  end
@@ -6,11 +6,6 @@ module Content
6
6
  require_relative "pipeline/filters"
7
7
  attr_reader :filters, :opts
8
8
 
9
- # -------------------------------------------------------------------------
10
- # @arg Array: The filters you would like to use or next:
11
- # @arg Hash : Your "default options" that should be "global."
12
- # -------------------------------------------------------------------------
13
-
14
9
  def initialize(filters = nil, opts = nil)
15
10
  if filters.is_a?(Hash) && opts.nil?
16
11
  opts = filters
@@ -23,11 +18,6 @@ module Content
23
18
  @opts, @filters = opts.freeze, [ filters ].flatten.freeze
24
19
  end
25
20
 
26
- # -------------------------------------------------------------------------
27
- # @arg String: The incomming string that will be modified.
28
- # @arg Hash : The secondary opts to override the "defaults".
29
- # -------------------------------------------------------------------------
30
-
31
21
  def filter(out, opts = {})
32
22
  return out if out.nil? || out.empty? || @filters.empty?
33
23
 
@@ -42,10 +32,6 @@ module Content
42
32
  out
43
33
  end
44
34
 
45
- # -------------------------------------------------------------------------
46
- # @arg Object: An object (preferably a class or module.)
47
- # -------------------------------------------------------------------------
48
-
49
35
  private
50
36
  def to_opt(cls)
51
37
  cls = cls.name.split(/::/).last
@@ -55,10 +41,6 @@ module Content
55
41
  underscore_cls(cls) ].uniq.map(&:to_sym)
56
42
  end
57
43
 
58
- # -------------------------------------------------------------------------
59
- # @arg String: The name of the class you wish to adjust.
60
- # -------------------------------------------------------------------------
61
-
62
44
  private
63
45
  def underscore_cls(cls)
64
46
  (cls[0].downcase + cls[1..-1]).gsub(/([A-Z])/) do
@@ -6,8 +6,6 @@ module CoreExtensions
6
6
  RbConfig::CONFIG["ruby_install_name"] == "jruby"
7
7
  end
8
8
 
9
- # -------------------------------------------------------------------------
10
-
11
9
  def to_nokogiri_fragment
12
10
  return self if self.is_a?(Nokogiri::HTML::DocumentFragment)
13
11
  Nokogiri::HTML.fragment(self.to_s)
@@ -10,16 +10,10 @@ class Content::Pipeline
10
10
  def_delegator "self.class.filters", :[]
11
11
  def_delegator "self.class", :filters
12
12
 
13
- # -------------------------------------------------------------------------
14
-
15
13
  def initialize(str, opts = nil)
16
14
  @opts, @str = (opts || {}), str
17
15
  end
18
16
 
19
- # -------------------------------------------------------------------------
20
- # @arg Array: The next filter in the chain, to check the types.
21
- # -------------------------------------------------------------------------
22
-
23
17
  def run(next_filter = nil)
24
18
  return @str unless size > 0
25
19
 
@@ -44,10 +38,6 @@ class Content::Pipeline
44
38
  class << self
45
39
  attr_reader :filters
46
40
 
47
- # -----------------------------------------------------------------------
48
- # @arg Hash: The filters and the type of input they prefer.
49
- # -----------------------------------------------------------------------
50
-
51
41
  def add_filter(*filters)
52
42
  @filters ||= []
53
43
 
@@ -69,8 +59,6 @@ class Content::Pipeline
69
59
  end
70
60
  end
71
61
 
72
- # ---------------------------------------------------------------------------
73
-
74
62
  module Filters
75
63
  require_relative "filters/markdown"
76
64
  DEFAULT_FILTERS = [ Markdown ].freeze
@@ -5,8 +5,6 @@ class Content::Pipeline::Filters::CodeHighlight < Content::Pipeline::Filter
5
5
  :highlight => :nokogiri
6
6
  })
7
7
 
8
- # ---------------------------------------------------------------------------
9
-
10
8
  Matcher = /<pre>(.+)<\/pre>/m
11
9
  Templates = {
12
10
  :numb => %Q{<span class="line-number">%s</span>\n},
@@ -35,15 +33,11 @@ class Content::Pipeline::Filters::CodeHighlight < Content::Pipeline::Filter
35
33
  HTML
36
34
  }
37
35
 
38
- # ---------------------------------------------------------------------------
39
-
40
36
  def initialize(*args)
41
37
  super(*args)
42
38
  @opts[:gutter] = true if @opts[:gutter].nil?
43
39
  end
44
40
 
45
- # ---------------------------------------------------------------------------
46
-
47
41
  private
48
42
  def highlight
49
43
  @str = @str.to_nokogiri_fragment
@@ -53,11 +47,6 @@ class Content::Pipeline::Filters::CodeHighlight < Content::Pipeline::Filter
53
47
  end
54
48
  end
55
49
 
56
- # ---------------------------------------------------------------------------
57
- # @arg String: The "multi-line" string you wish to parse.
58
- # @arg String: The "programming language" you wish to highlight as.
59
- # ---------------------------------------------------------------------------
60
-
61
50
  private
62
51
  def wrap(str, lang)
63
52
  lines, numbs = "", ""
@@ -81,11 +70,6 @@ class Content::Pipeline::Filters::CodeHighlight < Content::Pipeline::Filter
81
70
  end
82
71
  end
83
72
 
84
- # ---------------------------------------------------------------------------
85
- # @arg String: The "multi-line" string you wish to highlight.
86
- # @arg String: The lang you wish to use when highlighting the string.
87
- # ---------------------------------------------------------------------------
88
-
89
73
  private
90
74
  def pygments(str, lang)
91
75
  return str if jruby? || ! Pygments::Lexer[lang]
@@ -10,22 +10,12 @@ class Content::Pipeline::Filters::Gemoji < Content::Pipeline::Filter
10
10
  :gemoji => :nokogiri
11
11
  })
12
12
 
13
- # ---------------------------------------------------------------------------
14
- # This is a simple wrapper method around the default initialize.
15
- # ---------------------------------------------------------------------------
16
-
17
13
  def initialize(*args)
18
14
  super(*args)
19
15
  # I should make this an addon.
20
16
  @opts[:asset_path] ||= "/assets"
21
17
  end
22
18
 
23
- # ---------------------------------------------------------------------------
24
- # Because of the way that Nokogiri behaves we need to go out of our
25
- # way and ensure that we capture both text nodes in the root and
26
- # text nodes in elements (such as paragraphs and shit like that...)
27
- # ---------------------------------------------------------------------------
28
-
29
19
  private
30
20
  def gemoji
31
21
  @str = @str.to_nokogiri_fragment
@@ -36,10 +26,6 @@ class Content::Pipeline::Filters::Gemoji < Content::Pipeline::Filter
36
26
  end
37
27
  end
38
28
 
39
- # ---------------------------------------------------------------------------
40
- # @arg Nokogiri::XML::Text: The Text node you wish to parse.
41
- # ---------------------------------------------------------------------------
42
-
43
29
  def parse_node(node)
44
30
  return node if node.ancestors.any? do |n|
45
31
  n.node_name == "code" || n.node_name == "pre"
@@ -20,11 +20,14 @@ class Content::Pipeline::Filters::Markdown < Content::Pipeline::Filter
20
20
  @type = @opts.fetch(:type, default)
21
21
  @str = backtick(@str)
22
22
  @str = case
23
+ when @type =~ /\Akramdown\Z/ then parse_kramdown
23
24
  when @type =~ /\Agithub|gfm\Z/ then parse_github
24
- when @type =~ /\Akramdown\Z/ then parse_kramdown
25
+ when @type =~ /\Aredcarpet\Z/ then parse_redcarpet
25
26
  when @type =~ /\Amarkdown|md\Z/
26
- begin parse_github; rescue LoadError
27
- parse_kramdown
27
+ begin parse_redcarpet; rescue LoadError
28
+ begin parse_kramdown; rescue LoadError
29
+ parse_github
30
+ end
28
31
  end
29
32
  else
30
33
  # Actually needed now days.
@@ -32,6 +35,19 @@ class Content::Pipeline::Filters::Markdown < Content::Pipeline::Filter
32
35
  end
33
36
  end
34
37
 
38
+ private
39
+ def parse_redcarpet
40
+ require "redcarpet"
41
+ with = Redcarpet::Render::HTML
42
+ (@opts[:parser_opts] ||= {}).merge!({
43
+ :fenced_code_blocks => true
44
+ })
45
+
46
+ Redcarpet::Markdown.new(with, @opts[:parser_opts]).render(
47
+ @str
48
+ )
49
+ end
50
+
35
51
  private
36
52
  def parse_github
37
53
  require "github/markdown"
@@ -40,8 +56,12 @@ class Content::Pipeline::Filters::Markdown < Content::Pipeline::Filter
40
56
 
41
57
  private
42
58
  def parse_kramdown
59
+ (@opts[:parser_opts] ||= {}).merge!({
60
+ :enable_coderay => false
61
+ })
62
+
43
63
  require "kramdown"
44
- str = Kramdown::Document.new(@str, :enable_coderay => false)
64
+ str = Kramdown::Document.new(@str, @opts[:parser_opts])
45
65
  normalize_kramdown(str.to_html).strip
46
66
  end
47
67
 
@@ -2,26 +2,18 @@ require "content/pipeline"
2
2
 
3
3
  module Content::Pipeline::Jekyll
4
4
  class Converter < Jekyll::Converter
5
- CONTENT_PIPELINE = Content::Pipeline.new
5
+ ContentPipeline = Content::Pipeline.new
6
6
 
7
7
  def matches(ext)
8
8
  ext =~ /\.(md|markdown)\Z/
9
9
  end
10
10
 
11
- # -------------------------------------------------------------------------
12
-
13
11
  def output_ext(ext)
14
12
  ".html"
15
13
  end
16
14
 
17
- # -------------------------------------------------------------------------
18
- # It should be noted that MARKDOWN_CONVERTOR uses the default options
19
- # provided by Content::Pipeline at:
20
- # https://github.com/envygeeks/content-pipeline
21
- # -------------------------------------------------------------------------
22
-
23
15
  def convert(data)
24
- CONTENT_PIPELINE.filter(data)
16
+ ContentPipeline.filter(data)
25
17
  end
26
18
  end
27
19
  end
@@ -1,5 +1,5 @@
1
1
  module Content
2
2
  class Pipeline
3
- VERSION = "1.2.0"
3
+ VERSION = "1.3.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,126 +1,126 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: content-pipeline
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordon Bedwell
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-20 00:00:00.000000000 Z
11
+ date: 2014-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
15
- version_requirements: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ~>
18
- - !ruby/object:Gem::Version
19
- version: '1.6'
20
15
  requirement: !ruby/object:Gem::Requirement
21
16
  requirements:
22
- - - ~>
17
+ - - "~>"
23
18
  - !ruby/object:Gem::Version
24
19
  version: '1.6'
25
- prerelease: false
26
20
  type: :runtime
27
- - !ruby/object:Gem::Dependency
28
- name: rspec
21
+ prerelease: false
29
22
  version_requirements: !ruby/object:Gem::Requirement
30
23
  requirements:
31
- - - ~>
24
+ - - "~>"
32
25
  - !ruby/object:Gem::Version
33
- version: '3.0'
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
34
29
  requirement: !ruby/object:Gem::Requirement
35
30
  requirements:
36
- - - ~>
31
+ - - "~>"
37
32
  - !ruby/object:Gem::Version
38
33
  version: '3.0'
39
- prerelease: false
40
34
  type: :development
41
- - !ruby/object:Gem::Dependency
42
- name: envygeeks-coveralls
35
+ prerelease: false
43
36
  version_requirements: !ruby/object:Gem::Requirement
44
37
  requirements:
45
- - - ~>
38
+ - - "~>"
46
39
  - !ruby/object:Gem::Version
47
- version: '0.2'
40
+ version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: envygeeks-coveralls
48
43
  requirement: !ruby/object:Gem::Requirement
49
44
  requirements:
50
- - - ~>
45
+ - - "~>"
51
46
  - !ruby/object:Gem::Version
52
47
  version: '0.2'
53
- prerelease: false
54
48
  type: :development
55
- - !ruby/object:Gem::Dependency
56
- name: rspec-collection_matchers
49
+ prerelease: false
57
50
  version_requirements: !ruby/object:Gem::Requirement
58
51
  requirements:
59
- - - ~>
52
+ - - "~>"
60
53
  - !ruby/object:Gem::Version
61
- version: 1.0.0
54
+ version: '0.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec-collection_matchers
62
57
  requirement: !ruby/object:Gem::Requirement
63
58
  requirements:
64
- - - ~>
59
+ - - "~>"
65
60
  - !ruby/object:Gem::Version
66
- version: 1.0.0
67
- prerelease: false
61
+ version: '1.0'
68
62
  type: :development
69
- - !ruby/object:Gem::Dependency
70
- name: luna-rspec-formatters
63
+ prerelease: false
71
64
  version_requirements: !ruby/object:Gem::Requirement
72
65
  requirements:
73
- - - ~>
66
+ - - "~>"
74
67
  - !ruby/object:Gem::Version
75
- version: '1'
68
+ version: '1.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: luna-rspec-formatters
76
71
  requirement: !ruby/object:Gem::Requirement
77
72
  requirements:
78
- - - ~>
73
+ - - "~>"
79
74
  - !ruby/object:Gem::Version
80
75
  version: '1'
81
- prerelease: false
82
76
  type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1'
83
83
  description: A less restrictive version of html-pipeline for content.
84
84
  email: envygeeks@gmail.com
85
85
  executables: []
86
86
  extensions: []
87
87
  extra_rdoc_files: []
88
88
  files:
89
- - Readme.md
89
+ - Gemfile
90
90
  - License
91
91
  - Rakefile
92
- - Gemfile
92
+ - Readme.md
93
93
  - lib/content/pipeline.rb
94
- - lib/content/pipeline/filters.rb
95
- - lib/content/pipeline/version.rb
96
- - lib/content/pipeline/core_extensions/object_ext.rb
97
94
  - lib/content/pipeline/core_extensions/hash_ext.rb
98
- - lib/content/pipeline/jekyll/converter.rb
95
+ - lib/content/pipeline/core_extensions/object_ext.rb
96
+ - lib/content/pipeline/filters.rb
99
97
  - lib/content/pipeline/filters/code_highlight.rb
100
98
  - lib/content/pipeline/filters/gemoji.rb
101
99
  - lib/content/pipeline/filters/markdown.rb
100
+ - lib/content/pipeline/jekyll/converter.rb
101
+ - lib/content/pipeline/version.rb
102
102
  homepage: https://github.com/envygeeks/content-pipeline
103
103
  licenses:
104
104
  - Apache 2.0
105
105
  metadata: {}
106
- post_install_message:
106
+ post_install_message:
107
107
  rdoc_options: []
108
108
  require_paths:
109
109
  - lib
110
110
  required_ruby_version: !ruby/object:Gem::Requirement
111
111
  requirements:
112
- - - '>='
112
+ - - ">="
113
113
  - !ruby/object:Gem::Version
114
114
  version: '0'
115
115
  required_rubygems_version: !ruby/object:Gem::Requirement
116
116
  requirements:
117
- - - '>='
117
+ - - ">="
118
118
  - !ruby/object:Gem::Version
119
119
  version: '0'
120
120
  requirements: []
121
- rubyforge_project:
122
- rubygems_version: 2.1.9
123
- signing_key:
121
+ rubyforge_project:
122
+ rubygems_version: 2.4.1
123
+ signing_key:
124
124
  specification_version: 4
125
125
  summary: Adds a pipeline for your content.
126
126
  test_files: []