shortcode 1.0.0 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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=>".././"