breadcrumbs_on_rails 2.3.0 → 4.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.
data/Rakefile CHANGED
@@ -1,64 +1,14 @@
1
- require 'rubygems'
2
- require 'bundler'
3
- require 'appraisal'
1
+ require "bundler/gem_tasks"
2
+ require "appraisal"
4
3
 
5
- $:.unshift(File.dirname(__FILE__) + "/lib")
6
- require 'breadcrumbs_on_rails/version'
7
-
8
-
9
- PKG_NAME = ENV['PKG_NAME'] || "breadcrumbs_on_rails"
10
- PKG_VERSION = ENV['PKG_VERSION'] || BreadcrumbsOnRails::VERSION
11
-
12
-
13
- # Run test by default.
14
- task :default => :test
15
-
16
- spec = Gem::Specification.new do |s|
17
- s.name = PKG_NAME
18
- s.version = PKG_VERSION
19
- s.summary = "A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation."
20
- s.description = "BreadcrumbsOnRails is a simple Ruby on Rails plugin for creating and managing a breadcrumb navigation for a Rails project."
21
-
22
- s.author = "Simone Carletti"
23
- s.email = "weppos@weppos.net"
24
- s.homepage = "http://www.simonecarletti.com/code/breadcrumbs_on_rails"
25
-
26
- s.files = `git ls-files`.split("\n")
27
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
28
- s.require_paths = %w( lib )
29
-
30
- s.add_development_dependency "rails", ">= 3.0"
31
- s.add_development_dependency "appraisal"
32
- s.add_development_dependency "mocha", "~> 0.9.10"
33
- s.add_development_dependency "yard"
34
- end
35
-
36
-
37
- require 'rubygems/package_task'
38
-
39
- Gem::PackageTask.new(spec) do |pkg|
40
- pkg.gem_spec = spec
41
- end
42
-
43
- desc "Build the gemspec file #{spec.name}.gemspec"
44
- task :gemspec do
45
- file = File.dirname(__FILE__) + "/#{spec.name}.gemspec"
46
- File.open(file, "w") {|f| f << spec.to_ruby }
47
- end
48
-
49
- desc "Remove any temporary products, including gemspec."
50
- task :clean => [:clobber] do
51
- rm "#{spec.name}.gemspec"
4
+ if !ENV["APPRAISAL_INITIALIZED"] && !ENV["TRAVIS"]
5
+ task default: :appraisal
6
+ else
7
+ task default: :test
52
8
  end
53
9
 
54
- desc "Remove any generated file"
55
- task :clobber => [:clobber_package]
56
-
57
- desc "Package the library and generates the gemspec"
58
- task :package => [:gemspec]
59
-
60
10
 
61
- require 'rake/testtask'
11
+ require "rake/testtask"
62
12
 
63
13
  Rake::TestTask.new do |t|
64
14
  t.libs << "test"
@@ -68,18 +18,10 @@ Rake::TestTask.new do |t|
68
18
  end
69
19
 
70
20
 
71
- require 'yard'
72
- require 'yard/rake/yardoc_task'
21
+ require "yard/rake/yardoc_task"
73
22
 
74
23
  YARD::Rake::YardocTask.new(:yardoc) do |y|
75
24
  y.options = ["--output-dir", "yardoc"]
76
25
  end
77
26
 
78
- namespace :yardoc do
79
- desc "Remove YARD products"
80
- task :clobber do
81
- rm_r "yardoc" rescue nil
82
- end
83
- end
84
-
85
- task :clobber => "yardoc:clobber"
27
+ CLOBBER.include "yardoc"
data/SECURITY.md ADDED
@@ -0,0 +1,104 @@
1
+ # Security Policy
2
+
3
+ ## Supported Versions
4
+
5
+ Security updates are provided only for the current minor version.
6
+
7
+ If you are using a previous minor version, we recommend to upgrade to the current minor version.
8
+ This project uses [semantic versioning](https://semver.org/), therefore you can upgrade to a more recent minor version without incurring into breaking changes.
9
+
10
+ Exceptionally, we may support previous minor versions upon request if there are significant reasons preventing to immediately switch the latest minor version.
11
+
12
+ Older major versions are no longer supported.
13
+
14
+
15
+ ## Reporting a Vulnerability
16
+
17
+ To make a report, please email weppos@weppos.net.
18
+
19
+ Please consider encrypting your report with GPG using the key [0x420da82a989398df](https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x420da82a989398df).
20
+
21
+ ```
22
+ -----BEGIN PGP PUBLIC KEY BLOCK-----
23
+
24
+ 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
97
+ =j6Xr
98
+ -----END PGP PUBLIC KEY BLOCK-----
99
+ ```
100
+
101
+
102
+ ## Tracking Security Updates
103
+
104
+ Information about security vulnerabilities are published in the [Security Advisories](https://github.com/weppos/breadcrumbs_on_rails/security/advisories) page.
@@ -1,39 +1,23 @@
1
1
  # -*- encoding: utf-8 -*-
2
+ $LOAD_PATH.push File.expand_path("../lib", __FILE__)
3
+ require "breadcrumbs_on_rails/version"
2
4
 
3
- Gem::Specification.new do |s|
4
- s.name = "breadcrumbs_on_rails"
5
- s.version = "2.3.0"
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "breadcrumbs_on_rails"
7
+ spec.version = BreadcrumbsOnRails::VERSION
8
+ spec.authors = ["Simone Carletti"]
9
+ spec.email = ["weppos@weppos.net"]
10
+ spec.homepage = "https://simonecarletti.com/code/breadcrumbs_on_rails"
11
+ spec.summary = "A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation"
12
+ spec.description = "BreadcrumbsOnRails is a simple Ruby on Rails plugin for creating and managing a breadcrumb navigation for a Rails project."
13
+ spec.licenses = ["MIT"]
6
14
 
7
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Simone Carletti"]
9
- s.date = "2012-12-25"
10
- s.description = "BreadcrumbsOnRails is a simple Ruby on Rails plugin for creating and managing a breadcrumb navigation for a Rails project."
11
- s.email = "weppos@weppos.net"
12
- s.files = [".gitignore", ".rvmrc", ".travis.yml", "Appraisals", "CHANGELOG.md", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "breadcrumbs_on_rails.gemspec", "gemfiles/3.0.gemfile", "gemfiles/3.0.gemfile.lock", "gemfiles/3.1.gemfile", "gemfiles/3.1.gemfile.lock", "gemfiles/3.2.gemfile", "gemfiles/3.2.gemfile.lock", "init.rb", "lib/breadcrumbs_on_rails.rb", "lib/breadcrumbs_on_rails/action_controller.rb", "lib/breadcrumbs_on_rails/breadcrumbs.rb", "lib/breadcrumbs_on_rails/railtie.rb", "lib/breadcrumbs_on_rails/version.rb", "test/dummy.rb", "test/test_helper.rb", "test/unit/action_controller_test.rb", "test/unit/builder_test.rb", "test/unit/element_test.rb", "test/unit/simple_builder_test.rb", "test/views/example/default.html.erb"]
13
- s.homepage = "http://www.simonecarletti.com/code/breadcrumbs_on_rails"
14
- s.require_paths = ["lib"]
15
- s.rubygems_version = "1.8.24"
16
- s.summary = "A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation."
17
- s.test_files = ["test/dummy.rb", "test/test_helper.rb", "test/unit/action_controller_test.rb", "test/unit/builder_test.rb", "test/unit/element_test.rb", "test/unit/simple_builder_test.rb", "test/views/example/default.html.erb"]
15
+ spec.required_ruby_version = ">= 2.4"
18
16
 
19
- if s.respond_to? :specification_version then
20
- s.specification_version = 3
17
+ spec.require_paths = ["lib"]
18
+ spec.files = `git ls-files`.split("\n")
19
+ spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ spec.extra_rdoc_files = %w( LICENSE.txt )
21
21
 
22
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
23
- s.add_development_dependency(%q<rails>, [">= 3.0"])
24
- s.add_development_dependency(%q<appraisal>, [">= 0"])
25
- s.add_development_dependency(%q<mocha>, ["~> 0.9.10"])
26
- s.add_development_dependency(%q<yard>, [">= 0"])
27
- else
28
- s.add_dependency(%q<rails>, [">= 3.0"])
29
- s.add_dependency(%q<appraisal>, [">= 0"])
30
- s.add_dependency(%q<mocha>, ["~> 0.9.10"])
31
- s.add_dependency(%q<yard>, [">= 0"])
32
- end
33
- else
34
- s.add_dependency(%q<rails>, [">= 3.0"])
35
- s.add_dependency(%q<appraisal>, [">= 0"])
36
- s.add_dependency(%q<mocha>, ["~> 0.9.10"])
37
- s.add_dependency(%q<yard>, [">= 0"])
38
- end
22
+ spec.add_dependency "railties", ">= 5.0"
39
23
  end
@@ -0,0 +1,12 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake"
6
+ gem "bundler"
7
+ gem "appraisal"
8
+ gem "rails", "~> 5.0.0"
9
+ gem "mocha", ">= 1.0"
10
+ gem "yard"
11
+
12
+ gemspec :path => "../"
@@ -0,0 +1,12 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake"
6
+ gem "bundler"
7
+ gem "appraisal"
8
+ gem "rails", "~> 5.1.0"
9
+ gem "mocha", ">= 1.0"
10
+ gem "yard"
11
+
12
+ gemspec :path => "../"
@@ -0,0 +1,12 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake"
6
+ gem "bundler"
7
+ gem "appraisal"
8
+ gem "rails", "~> 5.2.0"
9
+ gem "mocha", ">= 1.0"
10
+ gem "yard"
11
+
12
+ gemspec :path => "../"
@@ -0,0 +1,12 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake"
6
+ gem "bundler"
7
+ gem "appraisal"
8
+ gem "rails", "~> 6.0.0"
9
+ gem "mocha", ">= 1.0"
10
+ gem "yard"
11
+
12
+ gemspec :path => "../"
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation.
5
5
  #
6
- # Copyright (c) 2009-2012 Simone Carletti <weppos@weppos.net>
6
+ # Copyright (c) 2009-2020 Simone Carletti <weppos@weppos.net>
7
7
  #++
8
8
 
9
9
  require 'breadcrumbs_on_rails/breadcrumbs'
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation.
5
5
  #
6
- # Copyright (c) 2009-2012 Simone Carletti <weppos@weppos.net>
6
+ # Copyright (c) 2009-2020 Simone Carletti <weppos@weppos.net>
7
7
  #++
8
8
 
9
9
  module BreadcrumbsOnRails
@@ -11,73 +11,56 @@ module BreadcrumbsOnRails
11
11
  module ActionController
12
12
  extend ActiveSupport::Concern
13
13
 
14
- included do
14
+ included do |base|
15
15
  extend ClassMethods
16
16
  helper HelperMethods
17
- helper_method :add_breadcrumb, :breadcrumbs
17
+ helper_method :add_breadcrumb_on_rails, :add_breadcrumb,
18
+ :breadcrumbs_on_rails, :breadcrumbs
19
+
20
+ unless base.respond_to?(:before_action)
21
+ base.alias_method :before_action, :before_filter
22
+ end
18
23
  end
19
24
 
20
25
  protected
21
26
 
22
- def add_breadcrumb(name, path = nil, options = {})
23
- self.breadcrumbs << Breadcrumbs::Element.new(name, path, options)
27
+ # Pushes a new breadcrumb element into the collection.
28
+ #
29
+ # @param name [String]
30
+ # @param path [String, nil]
31
+ # @param options [Hash]
32
+ # @return [void]
33
+ def add_breadcrumb_on_rails(name, path = nil, options = {})
34
+ breadcrumbs_on_rails << Breadcrumbs::Element.new(name, path, options)
24
35
  end
36
+ alias add_breadcrumb add_breadcrumb_on_rails
25
37
 
26
- def breadcrumbs
27
- @breadcrumbs ||= []
38
+ # Gets the list of all breadcrumb element in the collection.
39
+ #
40
+ # @return [Array<Breadcrumbs::Element>]
41
+ def breadcrumbs_on_rails
42
+ @breadcrumbs_on_rails ||= []
28
43
  end
44
+ alias breadcrumbs breadcrumbs_on_rails
29
45
 
30
- module Utils
31
-
32
- def self.instance_proc(string)
33
- if string.kind_of?(String)
34
- proc { |controller| controller.instance_eval(string) }
35
- else
36
- string
37
- end
38
- end
39
-
40
- # This is an horrible method with an horrible name.
41
- #
42
- # convert_to_set_of_strings(nil, [:foo, :bar])
43
- # # => nil
44
- # convert_to_set_of_strings(true, [:foo, :bar])
45
- # # => ["foo", "bar"]
46
- # convert_to_set_of_strings(:foo, [:foo, :bar])
47
- # # => ["foo"]
48
- # convert_to_set_of_strings([:foo, :bar, :baz], [:foo, :bar])
49
- # # => ["foo", "bar", "baz"]
50
- #
51
- def self.convert_to_set_of_strings(value, keys)
52
- if value == true
53
- keys.map(&:to_s).to_set
54
- elsif value
55
- Array(value).map(&:to_s).to_set
56
- end
57
- end
58
-
59
- end
60
46
 
61
47
  module ClassMethods
62
48
 
63
- def add_breadcrumb(name, path = nil, filter_options = {})
64
- # This isn't really nice here
65
- if eval = Utils.convert_to_set_of_strings(filter_options.delete(:eval), %w(name path))
66
- name = Utils.instance_proc(name) if eval.include?("name")
67
- path = Utils.instance_proc(path) if eval.include?("path")
68
- end
49
+ def add_breadcrumb_on_rails(name, path = nil, filter_options = {})
50
+ element_options = filter_options.delete(:options) || {}
69
51
 
70
- before_filter(filter_options) do |controller|
71
- controller.send(:add_breadcrumb, name, path)
52
+ before_action(filter_options) do |controller|
53
+ controller.send(:add_breadcrumb, name, path, element_options)
72
54
  end
73
55
  end
56
+ alias add_breadcrumb add_breadcrumb_on_rails
74
57
 
75
58
  end
76
59
 
77
60
  module HelperMethods
78
61
 
79
62
  def render_breadcrumbs(options = {}, &block)
80
- builder = (options.delete(:builder) || Breadcrumbs::SimpleBuilder).new(self, breadcrumbs, options)
63
+ builder = (options.delete(:builder) || Breadcrumbs::SimpleBuilder).new(self, breadcrumbs_on_rails, options)
81
64
  content = builder.render.html_safe
82
65
  if block_given?
83
66
  capture(content, &block)
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation.
5
5
  #
6
- # Copyright (c) 2009-2012 Simone Carletti <weppos@weppos.net>
6
+ # Copyright (c) 2009-2020 Simone Carletti <weppos@weppos.net>
7
7
  #++
8
8
 
9
9
  module BreadcrumbsOnRails
@@ -93,7 +93,7 @@ module BreadcrumbsOnRails
93
93
  if @options[:tag]
94
94
  @context.content_tag(@options[:tag], content)
95
95
  else
96
- content
96
+ ERB::Util.h(content)
97
97
  end
98
98
  end
99
99
 
@@ -108,14 +108,14 @@ module BreadcrumbsOnRails
108
108
  attr_accessor :name
109
109
  # @return [String] The element/link URL.
110
110
  attr_accessor :path
111
- # @return [Hash] The element/link URL.
111
+ # @return [Hash] The element/link options.
112
112
  attr_accessor :options
113
113
 
114
114
  # Initializes the Element with given parameters.
115
115
  #
116
116
  # @param [String] name The element/link name.
117
117
  # @param [String] path The element/link URL.
118
- # @param [Hash] options The element/link URL.
118
+ # @param [Hash] options The element/link options.
119
119
  # @return [Element]
120
120
  #
121
121
  def initialize(name, path = nil, options = {})