jekyll-textile-converter 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 +4 -4
- data/.clash.yml +6 -0
- data/.gitignore +1 -0
- data/.travis.yml +14 -0
- data/Gemfile +12 -0
- data/History.markdown +7 -0
- data/README.md +19 -3
- data/jekyll-textile-converter.gemspec +5 -2
- data/lib/jekyll-textile-converter.rb +12 -0
- data/lib/jekyll-textile-converter/filters.rb +18 -0
- data/lib/jekyll-textile-converter/version.rb +5 -0
- data/lib/jekyll/converters/textile.rb +65 -0
- data/script/bootstrap +2 -0
- data/script/cibuild +2 -0
- data/script/clash +2 -0
- data/script/test +2 -0
- data/spec/source/_config.yml +2 -0
- data/spec/source/_expected/2015/01/17/my-textile-post.html +3 -0
- data/spec/source/_expected/index.html +3 -0
- data/spec/source/_posts/2015-01-17-my-textile-post.textile +8 -0
- data/spec/source/index.html +6 -0
- data/spec/spec_helper.rb +25 -0
- data/spec/textile_converter_spec.rb +103 -0
- data/spec/textilize_filter_spec.rb +19 -0
- metadata +58 -5
- data/lib/jekyll/textile/converter.rb +0 -9
- data/lib/jekyll/textile/converter/version.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 09a7dd127ba4921e7b01e404aed9066173cf5d89
|
4
|
+
data.tar.gz: 38717e409e42c815fc070cf343aa43961ad2f6a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d027a553de478371eda41e2b44d4c6f0e01d340124ecdcd471d2a0f53a5b5a3f49957ea2f925b89d827821a0070da6d884d30a7e0066e6867af5e6dde002a20e
|
7
|
+
data.tar.gz: dfb82fa8babb53b16ee6413774f954d5da333191be2f67a66d2e957e89d6dff79f9eeb7ff94d3eb787e2c7f1987cf136fde380e4aef9a6829a4f2039e3fdc550
|
data/.clash.yml
ADDED
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/Gemfile
CHANGED
@@ -2,3 +2,15 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in jekyll-textile-converter.gemspec
|
4
4
|
gemspec
|
5
|
+
|
6
|
+
gem "clash", "~> 1.0"
|
7
|
+
|
8
|
+
if ENV["JEKYLL_VERSION"]
|
9
|
+
if ENV["JEKYLL_VERSION"].eql?("tip")
|
10
|
+
gem "jekyll", github: "jekyll/jekyll", branch: ENV["JEKYLL_BRANCH"]
|
11
|
+
else
|
12
|
+
gem "jekyll", "2.5.3"
|
13
|
+
end
|
14
|
+
else
|
15
|
+
gem "jekyll", ">= 2.0"
|
16
|
+
end
|
data/History.markdown
ADDED
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# Jekyll::Textile::Converter
|
2
2
|
|
3
|
-
|
3
|
+
Convert your `.textile` Jekyll content. For Jekyll 3.0 and up.
|
4
|
+
|
5
|
+
[](https://travis-ci.org/jekyll/jekyll-textile-converter)
|
4
6
|
|
5
7
|
## Installation
|
6
8
|
|
@@ -18,13 +20,27 @@ Or install it yourself as:
|
|
18
20
|
|
19
21
|
$ gem install jekyll-textile-converter
|
20
22
|
|
23
|
+
Lastly, add it to your `_config.yml` file:
|
24
|
+
|
25
|
+
gems:
|
26
|
+
- jekyll-textile-converter
|
27
|
+
|
21
28
|
## Usage
|
22
29
|
|
23
|
-
|
30
|
+
Plop in a file with YAML front matter and watch Jekyll gobble it up and spit out beautiful HTML.
|
31
|
+
|
32
|
+
If you'd like to use a file extension other than `.textile`, you may
|
33
|
+
specify a comma-separated list of extensions in your `_config.yml`, like this:
|
34
|
+
|
35
|
+
textile_ext: "textile,txtl,tl"
|
36
|
+
|
37
|
+
If that is the given configuration, then all files with `.textile`,
|
38
|
+
`.txtl`, and `.tl` file extensions will be read in and interpreted as
|
39
|
+
Textile. They must still contain YAML front matter.
|
24
40
|
|
25
41
|
## Contributing
|
26
42
|
|
27
|
-
1. Fork it ( https://github.com/
|
43
|
+
1. Fork it ( https://github.com/jekyll/jekyll-textile-converter/fork )
|
28
44
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
29
45
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
30
46
|
4. Push to the branch (`git push origin my-new-feature`)
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'jekyll
|
4
|
+
require 'jekyll-textile-converter/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "jekyll-textile-converter"
|
8
|
-
spec.version = Jekyll::
|
8
|
+
spec.version = Jekyll::TextileConverter::VERSION
|
9
9
|
spec.authors = ["Parker Moore"]
|
10
10
|
spec.email = ["parkrmoore@gmail.com"]
|
11
11
|
spec.summary = %q{Textile converter for Jekyll.}
|
@@ -17,6 +17,9 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
|
+
spec.add_runtime_dependency "RedCloth", "~> 4.0"
|
21
|
+
|
20
22
|
spec.add_development_dependency "bundler", "~> 1.7"
|
21
23
|
spec.add_development_dependency "rake", "~> 10.0"
|
24
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
22
25
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'jekyll'
|
2
|
+
|
3
|
+
root = File.expand_path('jekyll-textile-converter', File.dirname(__FILE__))
|
4
|
+
require "#{root}/filters"
|
5
|
+
require "#{root}/version"
|
6
|
+
|
7
|
+
require File.expand_path('jekyll/converters/textile', File.dirname(__FILE__))
|
8
|
+
|
9
|
+
module Jekyll
|
10
|
+
module TextileConverter
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module Filters
|
3
|
+
# Convert a Textile string into HTML output.
|
4
|
+
#
|
5
|
+
# input - The Textile String to convert.
|
6
|
+
#
|
7
|
+
# Returns the HTML formatted String.
|
8
|
+
def textilize(input)
|
9
|
+
site = @context.registers[:site]
|
10
|
+
converter = if site.respond_to?(:find_converter_instance)
|
11
|
+
site.find_converter_instance(Jekyll::Converters::Textile)
|
12
|
+
else
|
13
|
+
site.getConverterImpl(Jekyll::Converters::Textile)
|
14
|
+
end
|
15
|
+
converter.convert(input)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module Converters
|
3
|
+
class Textile < Converter
|
4
|
+
safe true
|
5
|
+
|
6
|
+
highlighter_prefix '<notextile>'
|
7
|
+
highlighter_suffix '</notextile>'
|
8
|
+
|
9
|
+
DEFAULT_CONFIGURATION = {
|
10
|
+
'textile_ext' => 'textile',
|
11
|
+
'redcloth' => {
|
12
|
+
'hard_breaks' => true
|
13
|
+
}
|
14
|
+
}
|
15
|
+
|
16
|
+
def initialize(config = {})
|
17
|
+
@config = Jekyll::Utils.deep_merge_hashes(DEFAULT_CONFIGURATION, config)
|
18
|
+
@setup = false
|
19
|
+
end
|
20
|
+
|
21
|
+
def setup
|
22
|
+
return if @setup
|
23
|
+
require 'redcloth'
|
24
|
+
@setup = true
|
25
|
+
rescue LoadError
|
26
|
+
STDERR.puts 'You are missing a library required for Textile. Please run:'
|
27
|
+
STDERR.puts ' $ [sudo] gem install RedCloth'
|
28
|
+
raise Errors::FatalException.new("Missing dependency: RedCloth")
|
29
|
+
end
|
30
|
+
|
31
|
+
def extname_list
|
32
|
+
@extname_list ||= @config['textile_ext'].split(',').map { |e| ".#{e}" }
|
33
|
+
end
|
34
|
+
|
35
|
+
def matches(ext)
|
36
|
+
extname_list.include? ext.downcase
|
37
|
+
end
|
38
|
+
|
39
|
+
def output_ext(ext)
|
40
|
+
".html"
|
41
|
+
end
|
42
|
+
|
43
|
+
def convert(content)
|
44
|
+
setup
|
45
|
+
|
46
|
+
# Shortcut if config doesn't contain RedCloth section
|
47
|
+
return RedCloth.new(content).to_html if @config['redcloth'].nil?
|
48
|
+
|
49
|
+
# List of attributes defined on RedCloth
|
50
|
+
# (from https://github.com/jgarber/redcloth/blob/master/lib/redcloth/textile_doc.rb)
|
51
|
+
attrs = ['filter_classes', 'filter_html', 'filter_ids', 'filter_styles',
|
52
|
+
'hard_breaks', 'lite_mode', 'no_span_caps', 'sanitize_html']
|
53
|
+
|
54
|
+
r = RedCloth.new(content)
|
55
|
+
|
56
|
+
# Set attributes in r if they are NOT nil in the config
|
57
|
+
attrs.each do |attr|
|
58
|
+
r.instance_variable_set("@#{attr}".to_sym, @config['redcloth'][attr]) unless @config['redcloth'][attr].nil?
|
59
|
+
end
|
60
|
+
|
61
|
+
r.to_html
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/script/bootstrap
ADDED
data/script/cibuild
ADDED
data/script/clash
ADDED
data/script/test
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'jekyll'
|
2
|
+
require File.expand_path('../../lib/jekyll-textile-converter', __FILE__)
|
3
|
+
|
4
|
+
RSpec.configure do |config|
|
5
|
+
config.expect_with :rspec do |expectations|
|
6
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
7
|
+
end
|
8
|
+
|
9
|
+
config.mock_with :rspec do |mocks|
|
10
|
+
mocks.verify_partial_doubles = true
|
11
|
+
end
|
12
|
+
|
13
|
+
config.filter_run :focus
|
14
|
+
config.run_all_when_everything_filtered = true
|
15
|
+
config.disable_monkey_patching!
|
16
|
+
|
17
|
+
config.warnings = false
|
18
|
+
if config.files_to_run.one?
|
19
|
+
config.default_formatter = 'doc'
|
20
|
+
end
|
21
|
+
|
22
|
+
config.profile_examples = 2
|
23
|
+
config.order = :random
|
24
|
+
Kernel.srand config.seed
|
25
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe(Jekyll::Converters::Textile) do
|
4
|
+
let(:configs) { Hash.new }
|
5
|
+
let(:converter) { described_class.new(configs) }
|
6
|
+
|
7
|
+
context "configuration" do
|
8
|
+
|
9
|
+
context "`redcloth`" do
|
10
|
+
context "no explicit config" do
|
11
|
+
it "preserves single line breaks in HTML output" do
|
12
|
+
expect(converter.convert("p. line1\nline2").strip).to eq("<p>line1<br />\nline2</p>")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context "empty redcloth config" do
|
17
|
+
let(:configs) { {'redcloth' => Hash.new} }
|
18
|
+
|
19
|
+
it "preserves single line breaks in HTML output" do
|
20
|
+
expect(converter.convert("p. line1\nline2").strip).to eq("<p>line1<br />\nline2</p>")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context "explicity enabled hard_breaks" do
|
25
|
+
let(:configs) { {'redcloth' => {'hard_breaks' => true}} }
|
26
|
+
|
27
|
+
it "preserves single line breaks in HTML output" do
|
28
|
+
expect(converter.convert("p. line1\nline2").strip).to eq("<p>line1<br />\nline2</p>")
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context "explicity disabled hard_breaks" do
|
33
|
+
let(:configs) { {'redcloth' => {'hard_breaks' => false}} }
|
34
|
+
|
35
|
+
it "does not generate break tags in HTML output" do
|
36
|
+
expect(converter.convert("p. line1\nline2").strip).to eq("<p>line1\nline2</p>")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "explicity disabled no_span_caps" do
|
41
|
+
let(:configs) { {'redcloth' => {'no_span_caps' => false}} }
|
42
|
+
|
43
|
+
it "generates span tags around capitalized words" do
|
44
|
+
expect(converter.convert("NSC").strip).to eq("<p><span class=\"caps\">NSC</span></p>")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context "explicitly enabled no_span_caps" do
|
49
|
+
let(:configs) { {'redcloth' => {'no_span_caps' => true}} }
|
50
|
+
|
51
|
+
it "does generates span tags around capitalized words" do
|
52
|
+
expect(converter.convert("NSC").strip).to eq("<p>NSC</p>")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context "`textile_ext`" do
|
58
|
+
context "with a custom list including the default" do
|
59
|
+
let(:configs) { {'textile_ext' => 'textile,text'} }
|
60
|
+
|
61
|
+
it "matches the new ext" do
|
62
|
+
expect(converter.matches('.text')).to be_truthy
|
63
|
+
end
|
64
|
+
|
65
|
+
it "matches the old ext" do
|
66
|
+
expect(converter.matches('.textile')).to be_truthy
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context "with a replacement ext" do
|
71
|
+
let(:configs) { {'textile_ext' => 'text'} }
|
72
|
+
|
73
|
+
it "matches the new ext" do
|
74
|
+
expect(converter.matches('.text')).to be_truthy
|
75
|
+
end
|
76
|
+
|
77
|
+
it "doesn't match the old ext" do
|
78
|
+
expect(converter.matches('.textile')).to be_falsy
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context "in code blocks" do
|
85
|
+
let(:content) do
|
86
|
+
<<-CONTENT
|
87
|
+
_FIGHT!_
|
88
|
+
|
89
|
+
{% highlight ruby %}
|
90
|
+
puts "3..2..1.."
|
91
|
+
{% endhighlight %}
|
92
|
+
|
93
|
+
*FINISH HIM*
|
94
|
+
CONTENT
|
95
|
+
end
|
96
|
+
|
97
|
+
# Broken in RedCloth 4.1.9
|
98
|
+
it "does not textilize highlight block" do
|
99
|
+
expect(converter.convert(content)).not_to match(%r{3\.\.2\.\.1\.\."</span><br />})
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe(Jekyll::Filters) do
|
4
|
+
class JekyllFilter
|
5
|
+
include Jekyll::Filters
|
6
|
+
attr_accessor :site, :context
|
7
|
+
|
8
|
+
def initialize(opts = {})
|
9
|
+
@site = Jekyll::Site.new(Jekyll::Configuration::DEFAULTS)
|
10
|
+
@context = Liquid::Context.new({}, {}, { :site => @site })
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:filter) { JekyllFilter.new }
|
15
|
+
|
16
|
+
it "should convert textile" do
|
17
|
+
expect(filter.textilize("something *really* simple")).to eq("<p>something <strong>really</strong> simple</p>")
|
18
|
+
end
|
19
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-textile-converter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Parker Moore
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: RedCloth
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,6 +52,20 @@ dependencies:
|
|
38
52
|
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
54
|
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
41
69
|
description:
|
42
70
|
email:
|
43
71
|
- parkrmoore@gmail.com
|
@@ -45,14 +73,31 @@ executables: []
|
|
45
73
|
extensions: []
|
46
74
|
extra_rdoc_files: []
|
47
75
|
files:
|
76
|
+
- ".clash.yml"
|
48
77
|
- ".gitignore"
|
78
|
+
- ".travis.yml"
|
49
79
|
- Gemfile
|
80
|
+
- History.markdown
|
50
81
|
- LICENSE.txt
|
51
82
|
- README.md
|
52
83
|
- Rakefile
|
53
84
|
- jekyll-textile-converter.gemspec
|
54
|
-
- lib/jekyll
|
55
|
-
- lib/jekyll
|
85
|
+
- lib/jekyll-textile-converter.rb
|
86
|
+
- lib/jekyll-textile-converter/filters.rb
|
87
|
+
- lib/jekyll-textile-converter/version.rb
|
88
|
+
- lib/jekyll/converters/textile.rb
|
89
|
+
- script/bootstrap
|
90
|
+
- script/cibuild
|
91
|
+
- script/clash
|
92
|
+
- script/test
|
93
|
+
- spec/source/_config.yml
|
94
|
+
- spec/source/_expected/2015/01/17/my-textile-post.html
|
95
|
+
- spec/source/_expected/index.html
|
96
|
+
- spec/source/_posts/2015-01-17-my-textile-post.textile
|
97
|
+
- spec/source/index.html
|
98
|
+
- spec/spec_helper.rb
|
99
|
+
- spec/textile_converter_spec.rb
|
100
|
+
- spec/textilize_filter_spec.rb
|
56
101
|
homepage: https://github.com/jekyll/jekyll-textile-converter
|
57
102
|
licenses:
|
58
103
|
- MIT
|
@@ -77,4 +122,12 @@ rubygems_version: 2.2.2
|
|
77
122
|
signing_key:
|
78
123
|
specification_version: 4
|
79
124
|
summary: Textile converter for Jekyll.
|
80
|
-
test_files:
|
125
|
+
test_files:
|
126
|
+
- spec/source/_config.yml
|
127
|
+
- spec/source/_expected/2015/01/17/my-textile-post.html
|
128
|
+
- spec/source/_expected/index.html
|
129
|
+
- spec/source/_posts/2015-01-17-my-textile-post.textile
|
130
|
+
- spec/source/index.html
|
131
|
+
- spec/spec_helper.rb
|
132
|
+
- spec/textile_converter_spec.rb
|
133
|
+
- spec/textilize_filter_spec.rb
|