roger 1.5.0 → 1.6.0

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