roger 1.5.0 → 1.6.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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MTExNTllMmViNTJmMjIwNDJkZmQ3NWIyM2RiNDZmNWMzNDA2MDNiMw==
5
- data.tar.gz: !binary |-
6
- MjRlNGI2OWY2NTJmY2YxMTMyYjdkYzUyZTljN2Q5MTk1NGMxNWJhNg==
2
+ SHA1:
3
+ metadata.gz: 9aa7b1fae76209ccfb5300d71b9bfc1c0a2c4ec7
4
+ data.tar.gz: d8ba78beae86ccad4f13c897dcad096c3e909c8e
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZDBlYWNhNzc3Zjk2YjMwY2RlYTBiYTZiZTkwYThmZTZmZGZiODNkM2QzMjE5
10
- YjdlMDZhY2VhZjFjNDBmMTVhNDQ1YzhkOTg2MjEyZGQ5ZjA4N2M3NGY5YjVl
11
- N2YyNDM5NTUyNmZmZTk2ODQyZDE3ZDcyNmQ2MTcxZjVhMDUzMWU=
12
- data.tar.gz: !binary |-
13
- ZTcxYWI2MGJlMWU0YTZmYTVmNjAxMDdiOGE1MzAxYzI0ZTFjZmFhMWY1MmQ1
14
- YmRhNzMzMjczZDA1NTJiOTY1MjEwN2NhZGVlY2QwYjE1MDVjZWVhYTBmMWJi
15
- ODAxZTFmNjNhYzQwMjc0MmYyMjMzNGJlMmJiNjU0NTVmNmRiZTU=
6
+ metadata.gz: 4c153e06e6af491d328830095840778aad088ef65141369d9066c41cfc1e7ec5c9da1092994e0010f770e7db41f50e053476ddd019741c2e00eaba37d6447c4f
7
+ data.tar.gz: f6edd854bc25ef440f412eb23cdd4157b9fedf10859f1d68cdcfab8a4b5cf70efdd9e444460dddf9adb9a21d6a5b609d2d16c892363442cb599215a32c6d7d2c
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## Version 1.6.0
4
+ * Change the way template resolving works so if you have a file and directory with the same basename it will prefer to use the file instead of looking for name/index.xyz
5
+ * Add `content_for?(:xyz)` helper so you can check if a `content_for` block exists in templates.
6
+ * Fix bug with resolving of trailing slashes.
7
+
8
+ ## Version 1.5.1
9
+ * Add MockShell object to stub out shell interactions. MockShell is also used by MockProject. This means all tests are silent on STDOUT/STDERR now.
10
+
3
11
  ## Version 1.5.0
4
12
  * Roger won't be tested on Ruby 1.9.x anymore
5
13
  * The way we render templates has been revamped. It is now possible to have multi-pass templates so you can do `.md.erb` which will first be processed by `erb` and then by the `md` tilt template handler.
@@ -1,3 +1,3 @@
1
- source :rubygems
1
+ source "https://rubygems.org/"
2
2
 
3
3
  gem "roger"
@@ -39,7 +39,7 @@ module Roger::Release::Finalizers
39
39
 
40
40
  release.log(self, "Working git magic in #{clone_dir}")
41
41
 
42
- commit_and_push_release(clone_dir, release, @options)
42
+ commit_and_push_release(clone_dir, release, branch, @options)
43
43
 
44
44
  if @options[:cleanup]
45
45
  FileUtils.rm_rf(tmp_dir)
@@ -50,7 +50,7 @@ module Roger::Release::Finalizers
50
50
 
51
51
  protected
52
52
 
53
- def commit_and_push_release(clone_dir, release, options)
53
+ def commit_and_push_release(clone_dir, release, branch, options)
54
54
  ::Dir.chdir(clone_dir) do
55
55
  # 3. Copy changes
56
56
  FileUtils.rm_rf("*")
@@ -135,8 +135,13 @@ module Roger
135
135
 
136
136
  results = filter_files(files, path, path_without_extension, template_extensions)
137
137
 
138
- # Our result if any
139
- results[0] && Pathname.new(results[0])
138
+ if !results[0]
139
+ # No results found, but maybe there is a directory
140
+ # with the same name and it contains an index.XYZ
141
+ find_template_path(File.join(name, "index")) if File.directory?(name)
142
+ else
143
+ Pathname.new(results[0])
144
+ end
140
145
  end
141
146
 
142
147
  # Filter a list of files to see wether or not we can process them.
@@ -175,9 +180,6 @@ module Roger
175
180
  def sanitize_name(name, prefer = nil)
176
181
  path = name.to_s
177
182
 
178
- # If it's a directory append "index"
179
- path = File.join(path, "index") if File.directory?(name)
180
-
181
183
  # Check if we haven't got an extension
182
184
  # we'll assume you're looking for prefer or "html" otherwise
183
185
  path += ".#{prefer || 'html'}" unless File.basename(path).include?(".")
@@ -188,7 +190,7 @@ module Roger
188
190
  # Split path in to extension an path without extension
189
191
  def split_path(path)
190
192
  path = path.to_s
191
- extension = File.extname(path)[1..-1]
193
+ extension = File.extname(path)[1..-1] || ""
192
194
  path_without_extension = path.sub(/\.#{Regexp.escape(extension)}\Z/, "")
193
195
  [extension, path_without_extension]
194
196
  end
@@ -25,6 +25,15 @@ module Roger
25
25
  @_content_for_blocks[block_name] = capture(&block)
26
26
  end
27
27
 
28
+ # Check if a block will yield content
29
+ #
30
+ # ```
31
+ # <% if content_for? :name %> bla bla <% end %>
32
+ # ```
33
+ def content_for?(block_name)
34
+ (!_content_for_blocks[block_name].nil? && !_content_for_blocks[block_name].empty?)
35
+ end
36
+
28
37
  # rubocop:disable Lint/Eval
29
38
  def capture(&block)
30
39
  unless template.current_tilt_template == Tilt::ERBTemplate
@@ -1,4 +1,5 @@
1
1
  require File.dirname(__FILE__) + "/../project"
2
+ require File.dirname(__FILE__) + "/mock_shell"
2
3
  require "test_construct"
3
4
 
4
5
  module Roger
@@ -30,7 +31,6 @@ module Roger
30
31
  construct.directory dir
31
32
  end
32
33
  end
33
-
34
34
  # Call super to initialize
35
35
  super(path, config)
36
36
  end
@@ -39,6 +39,10 @@ module Roger
39
39
  def destroy
40
40
  teardown_construct(construct) if construct
41
41
  end
42
+
43
+ def shell
44
+ @shell ||= MockShell.new
45
+ end
42
46
  end
43
47
  end
44
48
  end
@@ -0,0 +1,18 @@
1
+ require "stringio"
2
+
3
+ module Roger
4
+ # A shell that does not output to stdout but will
5
+ # just have two StringIO objects which can be accessed by using
6
+ # #stdout and #stderr methods.
7
+ class MockShell < Thor::Shell::Basic
8
+ public :stdout, :stderr
9
+
10
+ def stdout
11
+ @_stdout ||= StringIO.new
12
+ end
13
+
14
+ def stderr
15
+ @_stderr ||= StringIO.new
16
+ end
17
+ end
18
+ end
data/lib/roger/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # Roger main namespace
2
2
  module Roger
3
- VERSION = "1.5.0"
3
+ VERSION = "1.6.0"
4
4
  end
File without changes
File without changes
@@ -46,5 +46,21 @@ module Roger
46
46
 
47
47
  assert_equal "BAB-CONTENT-A", @renderer.render(@source_path, source: template_string)
48
48
  end
49
+
50
+ def test_content_for_check
51
+ # Is false when undefined
52
+ template = 'B<% if content_for? :one %><%= "one" %><% end %>A'
53
+ assert_equal "BA", @renderer.render(@source_path, source: template)
54
+
55
+ # Is false when empty
56
+ template = "<% content_for :one do %><% end %>"
57
+ template << 'B<% if content_for? :one %><%= "one" %><% end %>A'
58
+ assert_equal "BA", @renderer.render(@source_path, source: template)
59
+
60
+ # Is true when set
61
+ template = "<% content_for :one do %>one<% end %>"
62
+ template << "B<% if content_for? :one %><%= yield(:one) %><% end %>A"
63
+ assert_equal "BoneA", @renderer.render(@source_path, source: template)
64
+ end
49
65
  end
50
66
  end
@@ -76,6 +76,10 @@ module Roger
76
76
  )
77
77
  end
78
78
 
79
+ def test_trailing_slashes_break
80
+ assert !@resolver.url_to_relative_url("/de/", "/")
81
+ end
82
+
79
83
  def test_path_to_url_relative_to_absolute_path
80
84
  assert_equal(
81
85
  @resolver.path_to_url(
@@ -85,6 +89,10 @@ module Roger
85
89
  "../formats/erb.html.erb"
86
90
  )
87
91
  end
92
+
93
+ def test_return_filepath_when_dirname_and_filename_are_same
94
+ assert_find "formats/same.html", "formats/same"
95
+ end
88
96
  end
89
97
 
90
98
  # Test resolver with multiple load paths
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roger
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Flurin Egger
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-01-07 00:00:00.000000000 Z
13
+ date: 2016-04-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: thor
@@ -30,14 +30,14 @@ dependencies:
30
30
  name: rack
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - ! '>='
33
+ - - '>='
34
34
  - !ruby/object:Gem::Version
35
35
  version: 1.0.0
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - ! '>='
40
+ - - '>='
41
41
  - !ruby/object:Gem::Version
42
42
  version: 1.0.0
43
43
  - !ruby/object:Gem::Dependency
@@ -86,14 +86,14 @@ dependencies:
86
86
  name: redcarpet
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
- - - ! '>='
89
+ - - '>='
90
90
  - !ruby/object:Gem::Version
91
91
  version: 3.1.1
92
92
  type: :runtime
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
- - - ! '>='
96
+ - - '>='
97
97
  - !ruby/object:Gem::Version
98
98
  version: 3.1.1
99
99
  - !ruby/object:Gem::Dependency
@@ -256,6 +256,7 @@ files:
256
256
  - lib/roger/test.rb
257
257
  - lib/roger/testing/mock_project.rb
258
258
  - lib/roger/testing/mock_release.rb
259
+ - lib/roger/testing/mock_shell.rb
259
260
  - lib/roger/version.rb
260
261
  - roger.gemspec
261
262
  - test/helpers/cli.rb
@@ -271,6 +272,8 @@ files:
271
272
  - test/project/html/formats/markdown.md
272
273
  - test/project/html/formats/preferred.html.erb
273
274
  - test/project/html/formats/preferred.json.erb
275
+ - test/project/html/formats/same.html
276
+ - test/project/html/formats/same/.gitkeep
274
277
  - test/project/html/front_matter/erb.html.erb
275
278
  - test/project/html/front_matter/markdown.md
276
279
  - test/project/html/layouts/content-for.html.erb
@@ -346,17 +349,17 @@ require_paths:
346
349
  - lib
347
350
  required_ruby_version: !ruby/object:Gem::Requirement
348
351
  requirements:
349
- - - ! '>='
352
+ - - '>='
350
353
  - !ruby/object:Gem::Version
351
354
  version: '0'
352
355
  required_rubygems_version: !ruby/object:Gem::Requirement
353
356
  requirements:
354
- - - ! '>='
357
+ - - '>='
355
358
  - !ruby/object:Gem::Version
356
359
  version: '0'
357
360
  requirements: []
358
361
  rubyforge_project:
359
- rubygems_version: 2.4.8
362
+ rubygems_version: 2.2.2
360
363
  signing_key:
361
364
  specification_version: 4
362
365
  summary: Roger is a set of tools to create self-containing HTML mockups.
@@ -374,6 +377,8 @@ test_files:
374
377
  - test/project/html/formats/markdown.md
375
378
  - test/project/html/formats/preferred.html.erb
376
379
  - test/project/html/formats/preferred.json.erb
380
+ - test/project/html/formats/same.html
381
+ - test/project/html/formats/same/.gitkeep
377
382
  - test/project/html/front_matter/erb.html.erb
378
383
  - test/project/html/front_matter/markdown.md
379
384
  - test/project/html/layouts/content-for.html.erb