shortcode 1.0.0 → 1.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b80627fe9d3741eb1e8ad562aab6789697b83c98
4
+ data.tar.gz: f495da02fb8c29dfb02e4244dce8724b301c7b10
5
+ SHA512:
6
+ metadata.gz: 99d81eba4857e42a19de407c9930304e34413e21ac60f97f72b9a0d9e31bad8f802bbb1c77e50b710f680be770b553922d159d603cd4617f525bf90e78a7ca58
7
+ data.tar.gz: 6dc1697bb5106c5e37450a82117937393e3e0e1223c57afea3102d02e963413fad9d85316c5909e9b96aae1aa00f21d69d13a258eb3d95b6a587aed3018530ca
@@ -0,0 +1 @@
1
+ 2.1.3
@@ -1,27 +1,26 @@
1
1
  language: ruby
2
+
2
3
  rvm:
3
- - 1.9.2
4
- - 1.9.3
5
- - 2.0.0
6
- - 2.1.0
4
+ - 1.9.3-p551
5
+ - 2.0.0-p598
6
+ - 2.1.5
7
+ - 2.2.0
7
8
  - ruby-head
8
9
  - jruby-19mode
9
10
  - jruby-head
11
+
12
+ sudo: false
13
+
10
14
  script: bundle exec rspec
11
15
 
12
16
  matrix:
13
17
  allow_failures:
14
18
  - rvm: ruby-head
15
19
  - rvm: jruby-head
16
- exclude:
17
- - rvm: 1.9.2
18
- gemfile: gemfiles/rails_4.0.gemfile
19
- - rvm: 1.9.2
20
- gemfile: gemfiles/rails_4.1.gemfile
21
20
 
22
21
  gemfile:
23
- - gemfiles/rails_3.0.gemfile
24
22
  - gemfiles/rails_3.1.gemfile
25
23
  - gemfiles/rails_3.2.gemfile
26
24
  - gemfiles/rails_4.0.gemfile
27
25
  - gemfiles/rails_4.1.gemfile
26
+ - gemfiles/rails_4.2.gemfile
data/Appraisals CHANGED
@@ -1,19 +1,19 @@
1
- appraise "rails-3.0" do
2
- gem "rails", "~> 3.0.20"
3
- end
4
-
5
1
  appraise "rails-3.1" do
6
2
  gem "rails", "~> 3.1.12"
7
3
  end
8
4
 
9
5
  appraise "rails-3.2" do
10
- gem "rails", "~> 3.2.19"
6
+ gem "rails", "~> 3.2.21"
11
7
  end
12
8
 
13
9
  appraise "rails-4.0" do
14
- gem "rails", "~> 4.0.8"
10
+ gem "rails", "~> 4.0.13"
15
11
  end
16
12
 
17
13
  appraise "rails-4.1" do
18
- gem "rails", "~> 4.1.4"
14
+ gem "rails", "~> 4.1.9"
15
+ end
16
+
17
+ appraise "rails-4.2" do
18
+ gem "rails", "4.2.0"
19
19
  end
@@ -1,3 +1,25 @@
1
+ ## 1.0.2 (March 4, 2015)
2
+
3
+ Fixes:
4
+
5
+ - Whitespace after tags is now preserved
6
+
7
+ ## 1.0.1 (January 21, 2015)
8
+
9
+ Features:
10
+
11
+ - Implemented a TemplateBinding class as the binding to templates to provide a clean interface
12
+ - Updated to parslet 1.6.2
13
+ - Updated to rspec 3.1
14
+
15
+ Misc:
16
+
17
+ - Testing against the latest versions of Rails 3.1, 3.2, 4.0, 4.1 & 4.2
18
+ - Testing against the latest versions of Ruby 1.9.3-p551, 2.0.0-p598, 2.1.5 & 2.2.0
19
+ - Dropped test support for Rails 3.0
20
+ - Dropped test support for run 1.9.2
21
+ - README improvements
22
+
1
23
  ## 1.0.0 (July 29, 2014)
2
24
 
3
25
  Features:
data/Gemfile CHANGED
@@ -3,4 +3,4 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in shortcode.gemspec
4
4
  gemspec
5
5
 
6
- gem 'appraisal', '1.0.0.beta3'
6
+ gem 'appraisal', '1.0.2'
@@ -1,70 +1,72 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- shortcode (1.0.0)
5
- parslet (= 1.6.0)
4
+ shortcode (1.0.2)
5
+ parslet (= 1.6.2)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- appraisal (1.0.0.beta3)
10
+ appraisal (1.0.2)
11
11
  bundler
12
12
  rake
13
13
  thor (>= 0.14.0)
14
- blankslate (2.1.2.4)
15
- coveralls (0.7.0)
16
- multi_json (~> 1.3)
17
- rest-client
18
- simplecov (>= 0.7)
19
- term-ansicolor
20
- thor
14
+ blankslate (3.1.3)
15
+ coveralls (0.7.3)
16
+ multi_json (~> 1.10)
17
+ rest-client (~> 1.7)
18
+ simplecov (~> 0.9.1)
19
+ term-ansicolor (~> 1.3)
20
+ thor (~> 0.19.1)
21
21
  diff-lcs (1.2.5)
22
- docile (1.1.3)
23
- haml (4.0.5)
22
+ docile (1.1.5)
23
+ haml (4.0.6)
24
24
  tilt
25
- mime-types (2.2)
25
+ mime-types (2.4.3)
26
26
  multi_json (1.10.1)
27
- parslet (1.6.0)
28
- blankslate (~> 2.0)
29
- rake (10.1.0)
30
- rest-client (1.6.7)
31
- mime-types (>= 1.16)
32
- rspec (3.0.0)
33
- rspec-core (~> 3.0.0)
34
- rspec-expectations (~> 3.0.0)
35
- rspec-mocks (~> 3.0.0)
36
- rspec-core (3.0.0)
37
- rspec-support (~> 3.0.0)
38
- rspec-expectations (3.0.0)
27
+ netrc (0.10.2)
28
+ parslet (1.6.2)
29
+ blankslate (>= 2.0, <= 4.0)
30
+ rake (10.4.2)
31
+ rest-client (1.7.2)
32
+ mime-types (>= 1.16, < 3.0)
33
+ netrc (~> 0.7)
34
+ rspec (3.1.0)
35
+ rspec-core (~> 3.1.0)
36
+ rspec-expectations (~> 3.1.0)
37
+ rspec-mocks (~> 3.1.0)
38
+ rspec-core (3.1.7)
39
+ rspec-support (~> 3.1.0)
40
+ rspec-expectations (3.1.2)
39
41
  diff-lcs (>= 1.2.0, < 2.0)
40
- rspec-support (~> 3.0.0)
41
- rspec-mocks (3.0.0)
42
- rspec-support (~> 3.0.0)
43
- rspec-support (3.0.0)
44
- simplecov (0.8.2)
42
+ rspec-support (~> 3.1.0)
43
+ rspec-mocks (3.1.3)
44
+ rspec-support (~> 3.1.0)
45
+ rspec-support (3.1.2)
46
+ simplecov (0.9.1)
45
47
  docile (~> 1.1.0)
46
- multi_json
48
+ multi_json (~> 1.0)
47
49
  simplecov-html (~> 0.8.0)
48
50
  simplecov-html (0.8.0)
49
- slim (2.0.2)
50
- temple (~> 0.6.6)
51
+ slim (3.0.1)
52
+ temple (~> 0.7.3)
51
53
  tilt (>= 1.3.3, < 2.1)
52
- temple (0.6.7)
54
+ temple (0.7.5)
53
55
  term-ansicolor (1.3.0)
54
56
  tins (~> 1.0)
55
- thor (0.18.1)
57
+ thor (0.19.1)
56
58
  tilt (2.0.1)
57
- tins (1.3.0)
59
+ tins (1.3.3)
58
60
 
59
61
  PLATFORMS
60
62
  ruby
61
63
 
62
64
  DEPENDENCIES
63
- appraisal (= 1.0.0.beta3)
65
+ appraisal (= 1.0.2)
64
66
  bundler (~> 1.3)
65
67
  coveralls
66
68
  haml (~> 4.0)
67
69
  rake
68
- rspec (~> 3.0.0)
70
+ rspec (~> 3.1.0)
69
71
  shortcode!
70
- slim (~> 2.0)
72
+ slim (~> 3.0)
data/README.md CHANGED
@@ -27,8 +27,8 @@ Or install it yourself as:
27
27
  $ gem install shortcode
28
28
  ```
29
29
 
30
- Shortcode is tested against ruby version 1.9.2 and greater as well as jruby, it will not work with ruby 1.8. Shortcode rails integration is tested against
31
- Rails versions 3.0, 3.1, 3.2, 4.0, and 4.1.
30
+ Shortcode is tested against ruby version 1.9.3, 2.0, 2.1, and 2.2 as well as jruby, it will not work with ruby 1.8. Shortcode rails integration is tested against
31
+ Rails versions 3.1, 3.2, 4.0, 4.1 and 4.2.
32
32
 
33
33
  ## Usage
34
34
 
@@ -40,6 +40,17 @@ Shortcode is very simple to use, simply call the `process` method and pass it a
40
40
  Shortcode.process("[quote]Hello World[/quote]")
41
41
  ```
42
42
 
43
+ ### Tags
44
+
45
+ Any tags you wish to use with Shortcode need to be configured in the setup block, there are 2 types of tag, `block_tags` and `self_closing_tags`. Block tags have a matching open and close tag such as `[quote]A quote[/quote]`, self closing tags have no close tag, for example `[gallery]`. To define the tags Shortcode should parse do so in the configuration as follows:
46
+
47
+ ```ruby
48
+ Shortcode.setup do |config|
49
+ config.block_tags = [:quote, :list]
50
+ config.self_closing_tags = [:gallery, :widget]
51
+ end
52
+ ```
53
+
43
54
  ### Templates
44
55
 
45
56
  Each shortcode tag needs a template in order to translate the shortcode into html (or other output). Templates can be written in erb, haml or slim and work in
@@ -83,11 +94,13 @@ block as strings.
83
94
  #### Templates loaded from the file system
84
95
 
85
96
  Simply create files with the extension or .erb, .haml, or .slim with a filename the same as the shortcode tag, e.g. gallery.html.erb would render a [gallery] shortcode tag. The default
86
- location for template files is `app/views/shortcode_templates`, if you want to load tempaltes from a different location use the `template_path` config option.
97
+ location for template files is `app/views/shortcode_templates`, if you want to load templates from a different location use the `template_path` config option.
98
+
99
+ Note: only 1 template parser is supported at a time, if using haml for instance all templates must be haml.
87
100
 
88
101
  #### Templates set as configuration options
89
102
 
90
- The alternative way to define tempaltes is to set them using the `templates` config option, this option can take a hash with keys of the same name as the shortcode tags and
103
+ The alternative way to define templates is to set them using the `templates` config option, this option can take a hash with keys of the same name as the shortcode tags and
91
104
  values containing a template string. For instance:
92
105
 
93
106
  ```ruby
@@ -99,9 +112,11 @@ end
99
112
  If the `templates` config option is set all templates will be loaded from this hash, if a shortcode is encountered without a matching key in the `templates` config option
100
113
  an exception will be raised.
101
114
 
115
+ Note: it's NOT possible to load templates from a config option AND from the file system, you must either load all templates from the file system or define all templates in a config option.
116
+
102
117
  ### Custom Helpers
103
118
 
104
- If you wish to use custom helper modules in templates you can do so by specifying the helpers in a setup block which should be an array. Methods in the helper modules will then become available within all tempaltes.
119
+ If you wish to use custom helper modules in templates you can do so by specifying the helpers in a setup block which should be an array. Methods in the helper modules will then become available within all templates.
105
120
 
106
121
  ```ruby
107
122
  Shortcode.setup do |config|
@@ -204,7 +219,7 @@ Shortcode.setup do |config|
204
219
  # above template_path option. The default is nil
205
220
  config.templates = { gallery: 'template code' }
206
221
 
207
- # an array of helper modules to make available within tempaltes
222
+ # an array of helper modules to make available within templates
208
223
  config.helpers = [CustomerHelper]
209
224
 
210
225
  # a list of block tags to support e.g. [quote]Hello World[/quote]
@@ -216,7 +231,8 @@ Shortcode.setup do |config|
216
231
  # the type of quotes to use for attribute values, default is double quotes (")
217
232
  config.attribute_quote_type = '"'
218
233
 
219
- # Allows quotes around attributes to be omitted. Defaults to true (quotes must be present around the value).
234
+ # Allows quotes around attributes to be omitted
235
+ # Defaults to true, quotes must be present around attribute values
220
236
  config.use_attribute_quotes = true
221
237
  end
222
238
  ```
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "appraisal", "1.0.0.beta3"
5
+ gem "appraisal", "1.0.2"
6
6
  gem "rails", "~> 3.1.12"
7
7
 
8
- gemspec :path=>".././"
8
+ gemspec :path => "../"
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "appraisal", "1.0.0.beta3"
6
- gem "rails", "~> 3.2.19"
5
+ gem "appraisal", "1.0.2"
6
+ gem "rails", "~> 3.2.21"
7
7
 
8
- gemspec :path=>".././"
8
+ gemspec :path => "../"
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "appraisal", "1.0.0.beta3"
6
- gem "rails", "~> 4.0.8"
5
+ gem "appraisal", "1.0.2"
6
+ gem "rails", "~> 4.0.13"
7
7
 
8
- gemspec :path=>".././"
8
+ gemspec :path => "../"
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "appraisal", "1.0.0.beta3"
6
- gem "rails", "~> 4.1.4"
5
+ gem "appraisal", "1.0.2"
6
+ gem "rails", "~> 4.1.9"
7
7
 
8
- gemspec :path=>".././"
8
+ gemspec :path => "../"
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal", "1.0.2"
6
+ gem "rails", "4.2.0"
7
+
8
+ gemspec :path => "../"
@@ -40,6 +40,7 @@ require 'shortcode/configuration'
40
40
  require 'shortcode/parser'
41
41
  require 'shortcode/presenter'
42
42
  require 'shortcode/processor'
43
+ require 'shortcode/template_binding'
43
44
  require 'shortcode/transformer'
44
45
  require 'shortcode/tag'
45
46
  require 'shortcode/exceptions'
@@ -8,8 +8,8 @@ class Shortcode::Parser < Parslet::Parser
8
8
  rule(:space) { str(' ').repeat(1) }
9
9
  rule(:space?) { space.maybe }
10
10
  rule(:newline) { (str("\r\n") | str("\n")) >> space? }
11
+ rule(:newline?) { newline.maybe }
11
12
  rule(:whitespace) { (space | newline).repeat(1) }
12
- rule(:whitespace?) { whitespace.maybe }
13
13
 
14
14
  rule(:key) { match('[a-zA-Z0-9\-_]').repeat(1) }
15
15
 
@@ -21,9 +21,9 @@ class Shortcode::Parser < Parslet::Parser
21
21
  rule(:options) { (str(' ') >> option).repeat(1) }
22
22
  rule(:options?) { options.repeat(0, 1) }
23
23
 
24
- rule(:open) { str('[') >> block_tag.as(:open) >> options?.as(:options) >> str(']') >> whitespace? }
25
- rule(:close) { str('[/') >> block_tag.as(:close) >> str(']') >> whitespace? }
26
- rule(:open_close) { str('[') >> self_closing_tag.as(:open_close) >> options?.as(:options) >> str(']') >> whitespace? }
24
+ rule(:open) { str('[') >> block_tag.as(:open) >> options?.as(:options) >> str(']') >> newline? }
25
+ rule(:close) { str('[/') >> block_tag.as(:close) >> str(']') >> newline? }
26
+ rule(:open_close) { str('[') >> self_closing_tag.as(:open_close) >> options?.as(:options) >> str(']') >> newline? }
27
27
 
28
28
  rule(:text) { ((close | block | open_close).absent? >> any).repeat(1).as(:text) }
29
29
  rule(:block) { (open >> (block | text | open_close).repeat.as(:inner) >> close) }
@@ -1,3 +1,3 @@
1
- class Shortcode::Tag
1
+ class Shortcode::TemplateBinding
2
2
  include ActionView::Helpers
3
3
  end
@@ -1,17 +1,8 @@
1
1
  class Shortcode::Tag
2
2
 
3
3
  def initialize(name, attributes=[], content='', additional_attributes=nil)
4
- include_helper_modules
5
- @name = name.downcase
6
- presenter = Shortcode::Presenter.new name, set_attributes(attributes), content, additional_attributes
7
- @attributes = presenter.attributes
8
- @content = presenter.content
9
- end
10
-
11
- def set_attributes(attributes)
12
- hash = {}
13
- attributes.each { |o| hash[o[:key].to_sym] = o[:value] }
14
- hash
4
+ @name = name.downcase
5
+ @binding = Shortcode::TemplateBinding.new(@name, attributes, content, additional_attributes)
15
6
  end
16
7
 
17
8
  def markup
@@ -28,23 +19,14 @@ class Shortcode::Tag
28
19
 
29
20
  private
30
21
 
31
- def include_helper_modules
32
- return unless Shortcode.configuration.helpers.any?
33
- class << self
34
- Shortcode.configuration.helpers.each do |helper|
35
- include helper
36
- end
37
- end
38
- end
39
-
40
22
  def render_template
41
23
  case Shortcode.configuration.template_parser
42
24
  when :erb
43
- ERB.new(markup).result(binding)
25
+ ERB.new(markup).result(@binding.get_binding)
44
26
  when :haml
45
- Haml::Engine.new(markup, ugly: true).render(binding)
27
+ Haml::Engine.new(markup, ugly: true).render(@binding)
46
28
  when :slim
47
- Slim::Template.new { markup }.render(self)
29
+ Slim::Template.new { markup }.render(@binding)
48
30
  else
49
31
  raise Shortcode::TemplateParserNotSupported, Shortcode.configuration.template_parser
50
32
  end
@@ -0,0 +1,33 @@
1
+ class Shortcode::TemplateBinding
2
+
3
+ def initialize(name, attributes=[], content='', additional_attributes=nil)
4
+ include_helper_modules
5
+ presenter = Shortcode::Presenter.new name, set_attributes(attributes), content, additional_attributes
6
+ @name = name
7
+ @attributes = presenter.attributes
8
+ @content = presenter.content
9
+ end
10
+
11
+ # Expose private binding() method for use with erb templates
12
+ def get_binding
13
+ binding
14
+ end
15
+
16
+ private
17
+
18
+ def set_attributes(attributes)
19
+ hash = {}
20
+ attributes.each { |o| hash[o[:key].to_sym] = o[:value] }
21
+ hash
22
+ end
23
+
24
+ def include_helper_modules
25
+ return unless Shortcode.configuration.helpers.any?
26
+ class << self
27
+ Shortcode.configuration.helpers.each do |helper|
28
+ include helper
29
+ end
30
+ end
31
+ end
32
+
33
+ end
@@ -1,3 +1,3 @@
1
1
  module Shortcode
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.2"
3
3
  end
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Jamie Dyer"]
10
10
  spec.email = ["jamie@kernowsoul.com"]
11
11
  spec.description = "Gem for parsing wordpress style shortcodes"
12
- spec.summary = "Gem for parsing wordpress style shortcodes"
12
+ spec.summary = "Gem for parsing wordpress style shortcodes in ruby projects"
13
13
  spec.homepage = "https://github.com/kernow/shortcode"
14
14
  spec.license = "MIT"
15
15
 
@@ -18,12 +18,12 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "parslet", "1.6.0"
21
+ spec.add_dependency "parslet", "1.6.2"
22
22
 
23
23
  spec.add_development_dependency "bundler", "~> 1.3"
24
- spec.add_development_dependency "rake"
25
- spec.add_development_dependency "rspec", "~> 3.0.0"
26
- spec.add_development_dependency "coveralls"
27
- spec.add_development_dependency "slim", "~> 2.0"
24
+ spec.add_development_dependency "rake", "~> 0"
25
+ spec.add_development_dependency "rspec", "~> 3.1"
26
+ spec.add_development_dependency "coveralls", "~> 0"
27
+ spec.add_development_dependency "slim", "~> 3.0"
28
28
  spec.add_development_dependency "haml", "~> 4.0"
29
29
  end
@@ -118,7 +118,7 @@ describe Shortcode::Parser do
118
118
  inner: [{ text: "A quote" }],
119
119
  close: "quote"
120
120
  },
121
- { text: "<br> blah blah\n" }
121
+ { text: " <br> blah blah\n" }
122
122
  ])
123
123
  end
124
124
 
@@ -259,7 +259,7 @@ describe Shortcode::Parser do
259
259
  }],
260
260
  close: "collapsible_list"
261
261
  },
262
- { text: "<p>Some more text</p>\n" }
262
+ { text: "\n<p>Some more text</p>\n" }
263
263
  ])
264
264
  end
265
265
  end
@@ -0,0 +1,2 @@
1
+ [rails_helper]this is bold[/rails_helper] and this is not bold.
2
+ [rails_helper]this is italic[/rails_helper]without a space.
@@ -0,0 +1,2 @@
1
+ <b>this is bold</b> and this is not bold.
2
+ <b>this is italic</b>without a space.
@@ -4,4 +4,4 @@ Blah blah <blockquote>
4
4
  <span class='author'>Jamie Dyer</span>
5
5
  </p>
6
6
  </blockquote>
7
- <br> blah blah
7
+ <br> blah blah
@@ -7,27 +7,29 @@ describe Shortcode do
7
7
  let(:parser) { Shortcode::Parser.new }
8
8
  let(:transformer) { Shortcode::Transformer.new }
9
9
 
10
- let(:simple_quote) { load_fixture :simple_quote }
11
- let(:full_quote) { load_fixture :full_quote }
12
- let(:quote_with_extras) { load_fixture :quote_with_extras }
13
- let(:simple_list) { load_fixture :simple_list }
14
- let(:timeline_event) { load_fixture :timeline_event }
15
- let(:timeline_info) { load_fixture :timeline_info }
16
- let(:timeline_person) { load_fixture :timeline_person }
17
- let(:complex_snippet) { load_fixture :complex_snippet }
10
+ let(:simple_quote) { load_fixture :simple_quote }
11
+ let(:full_quote) { load_fixture :full_quote }
12
+ let(:quote_with_extras) { load_fixture :quote_with_extras }
13
+ let(:simple_list) { load_fixture :simple_list }
14
+ let(:timeline_event) { load_fixture :timeline_event }
15
+ let(:timeline_info) { load_fixture :timeline_info }
16
+ let(:timeline_person) { load_fixture :timeline_person }
17
+ let(:complex_snippet) { load_fixture :complex_snippet }
18
+ let(:block_with_whitespace) { load_fixture :block_with_whitespace }
18
19
 
19
20
  let(:quotes) { [simple_quote, full_quote, quote_with_extras] }
20
21
  let(:collapsible_lists) { [simple_list] }
21
22
  let(:timelines) { [timeline_event, timeline_info, timeline_person] }
22
23
 
23
- let(:simple_quote_output) { load_fixture :simple_quote_output, :html }
24
- let(:full_quote_output) { load_fixture :full_quote_output, :html }
25
- let(:quote_with_extras_output) { load_fixture :quote_with_extras_output, :html }
26
- let(:simple_list_output) { load_fixture :simple_list_output, :html }
27
- let(:timeline_event_output) { load_fixture :timeline_event_output, :html }
28
- let(:timeline_info_output) { load_fixture :timeline_info_output, :html }
29
- let(:timeline_person_output) { load_fixture :timeline_person_output, :html }
30
- let(:complex_snippet_output) { load_fixture :complex_snippet_output, :html }
24
+ let(:simple_quote_output) { load_fixture :simple_quote_output, :html }
25
+ let(:full_quote_output) { load_fixture :full_quote_output, :html }
26
+ let(:quote_with_extras_output) { load_fixture :quote_with_extras_output, :html }
27
+ let(:simple_list_output) { load_fixture :simple_list_output, :html }
28
+ let(:timeline_event_output) { load_fixture :timeline_event_output, :html }
29
+ let(:timeline_info_output) { load_fixture :timeline_info_output, :html }
30
+ let(:timeline_person_output) { load_fixture :timeline_person_output, :html }
31
+ let(:complex_snippet_output) { load_fixture :complex_snippet_output, :html }
32
+ let(:block_with_whitespace_output) { load_fixture :block_with_whitespace_output, :html }
31
33
 
32
34
  context "simple_quote" do
33
35
 
@@ -108,4 +110,13 @@ describe Shortcode do
108
110
  expect(html.gsub("\n",'')).to eq(simple_quote_output)
109
111
  end
110
112
  end
113
+
114
+ context 'whitespace' do
115
+
116
+ it 'is preserved after a block tag' do
117
+ html = transformer.apply(parser.parse(block_with_whitespace), additional_attributes: nil)
118
+ expect(html.gsub("\n",'')).to eq(block_with_whitespace_output)
119
+ end
120
+
121
+ end
111
122
  end
metadata CHANGED
@@ -1,126 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shortcode
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
5
- prerelease:
4
+ version: 1.0.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jamie Dyer
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-07-29 00:00:00.000000000 Z
11
+ date: 2015-03-04 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: parslet
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - '='
20
18
  - !ruby/object:Gem::Version
21
- version: 1.6.0
19
+ version: 1.6.2
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - '='
28
25
  - !ruby/object:Gem::Version
29
- version: 1.6.0
26
+ version: 1.6.2
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: bundler
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ~>
31
+ - - "~>"
36
32
  - !ruby/object:Gem::Version
37
33
  version: '1.3'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ~>
38
+ - - "~>"
44
39
  - !ruby/object:Gem::Version
45
40
  version: '1.3'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rake
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - "~>"
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - "~>"
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rspec
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ~>
59
+ - - "~>"
68
60
  - !ruby/object:Gem::Version
69
- version: 3.0.0
61
+ version: '3.1'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ~>
66
+ - - "~>"
76
67
  - !ruby/object:Gem::Version
77
- version: 3.0.0
68
+ version: '3.1'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: coveralls
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - "~>"
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - "~>"
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: slim
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ~>
87
+ - - "~>"
100
88
  - !ruby/object:Gem::Version
101
- version: '2.0'
89
+ version: '3.0'
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ~>
94
+ - - "~>"
108
95
  - !ruby/object:Gem::Version
109
- version: '2.0'
96
+ version: '3.0'
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: haml
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ~>
101
+ - - "~>"
116
102
  - !ruby/object:Gem::Version
117
103
  version: '4.0'
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ~>
108
+ - - "~>"
124
109
  - !ruby/object:Gem::Version
125
110
  version: '4.0'
126
111
  description: Gem for parsing wordpress style shortcodes
@@ -130,9 +115,9 @@ executables: []
130
115
  extensions: []
131
116
  extra_rdoc_files: []
132
117
  files:
133
- - .gitignore
134
- - .rbenv-version
135
- - .travis.yml
118
+ - ".gitignore"
119
+ - ".ruby-version"
120
+ - ".travis.yml"
136
121
  - Appraisals
137
122
  - CHANGELOG.md
138
123
  - Gemfile
@@ -140,11 +125,11 @@ files:
140
125
  - LICENSE.txt
141
126
  - README.md
142
127
  - Rakefile
143
- - gemfiles/rails_3.0.gemfile
144
128
  - gemfiles/rails_3.1.gemfile
145
129
  - gemfiles/rails_3.2.gemfile
146
130
  - gemfiles/rails_4.0.gemfile
147
131
  - gemfiles/rails_4.1.gemfile
132
+ - gemfiles/rails_4.2.gemfile
148
133
  - lib/shortcode.rb
149
134
  - lib/shortcode/configuration.rb
150
135
  - lib/shortcode/exceptions.rb
@@ -153,6 +138,7 @@ files:
153
138
  - lib/shortcode/processor.rb
154
139
  - lib/shortcode/railtie.rb
155
140
  - lib/shortcode/tag.rb
141
+ - lib/shortcode/template_binding.rb
156
142
  - lib/shortcode/transformer.rb
157
143
  - lib/shortcode/version.rb
158
144
  - shortcode.gemspec
@@ -163,6 +149,8 @@ files:
163
149
  - spec/shortcode_spec.rb
164
150
  - spec/spec_helper.rb
165
151
  - spec/support/fixtures.rb
152
+ - spec/support/fixtures/block_with_whitespace.txt
153
+ - spec/support/fixtures/block_with_whitespace_output.html
166
154
  - spec/support/fixtures/complex_snippet.txt
167
155
  - spec/support/fixtures/complex_snippet_output.html
168
156
  - spec/support/fixtures/custom_helper.txt
@@ -216,28 +204,27 @@ files:
216
204
  homepage: https://github.com/kernow/shortcode
217
205
  licenses:
218
206
  - MIT
207
+ metadata: {}
219
208
  post_install_message:
220
209
  rdoc_options: []
221
210
  require_paths:
222
211
  - lib
223
212
  required_ruby_version: !ruby/object:Gem::Requirement
224
- none: false
225
213
  requirements:
226
- - - ! '>='
214
+ - - ">="
227
215
  - !ruby/object:Gem::Version
228
216
  version: '0'
229
217
  required_rubygems_version: !ruby/object:Gem::Requirement
230
- none: false
231
218
  requirements:
232
- - - ! '>='
219
+ - - ">="
233
220
  - !ruby/object:Gem::Version
234
221
  version: '0'
235
222
  requirements: []
236
223
  rubyforge_project:
237
- rubygems_version: 1.8.23
224
+ rubygems_version: 2.4.5
238
225
  signing_key:
239
- specification_version: 3
240
- summary: Gem for parsing wordpress style shortcodes
226
+ specification_version: 4
227
+ summary: Gem for parsing wordpress style shortcodes in ruby projects
241
228
  test_files:
242
229
  - spec/parser_spec.rb
243
230
  - spec/performance_spec.rb
@@ -246,6 +233,8 @@ test_files:
246
233
  - spec/shortcode_spec.rb
247
234
  - spec/spec_helper.rb
248
235
  - spec/support/fixtures.rb
236
+ - spec/support/fixtures/block_with_whitespace.txt
237
+ - spec/support/fixtures/block_with_whitespace_output.html
249
238
  - spec/support/fixtures/complex_snippet.txt
250
239
  - spec/support/fixtures/complex_snippet_output.html
251
240
  - spec/support/fixtures/custom_helper.txt
@@ -1 +0,0 @@
1
- 1.9.3-p392
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "appraisal", "1.0.0.beta3"
6
- gem "rails", "~> 3.0.20"
7
-
8
- gemspec :path=>".././"