js_rails_routes 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6e515560aeebfbed4c3c9e98602e99e146aaaf3c
4
- data.tar.gz: b78e6b72b763d058d563e888eabf9db8602d8f3f
3
+ metadata.gz: a386d5fc5aec380f0c1747daa37cf0f8da385881
4
+ data.tar.gz: 22e8b29009a14466642bd32795c8aeab3d0a9b0b
5
5
  SHA512:
6
- metadata.gz: e8b6077597f785d6b8a3080b2a68235dd7ee254dfa983ad69fd06ec8b9ca9b2646ce340cb17d5ef821996fb610159354dd17bbdf0f9e1d0597b15712fc9c57ad
7
- data.tar.gz: 7373315966e421c0f0c300c7e14e13fb9e21f4464187d591a745b4783dbda52356a310fbace72aa75310b1d2ea492d4d13489f0c6fc9c9d897944a5a0b8fd568
6
+ metadata.gz: '087716b33ddff3babd4d84cbf6c70ab39bbc5d2c766bb2ae4af803ac74fcbacb2e22e0fdc035811bce993f1f281193250184d6ec7f0e37b55b302ab2cfc8713e'
7
+ data.tar.gz: a75bd8bd4df03ff80cf8d5dc39c6275923b539d8805933f3f1ffa0c3111470d474db3408c3f022e72f9475f2d6d99dfcc6744aa2d888939ba15d5736b5bf8835
data/.rubocop.yml CHANGED
@@ -1,3 +1,6 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.3
3
+
1
4
  Metrics/LineLength:
2
5
  Max: 120
3
6
 
data/.travis.yml CHANGED
@@ -1,10 +1,16 @@
1
1
  language: ruby
2
+
2
3
  rvm:
3
- - 2.3.1
4
+ - 2.3.7
5
+ - 2.4.4
6
+ - 2.5.1
7
+
4
8
  notifications:
5
9
  email: false
10
+
6
11
  script:
7
- - bundle exec rake rubocop
8
- - bundle exec rake spec
12
+ - bundle exec rake rubocop
13
+ - bundle exec rake spec
14
+
9
15
  after_success:
10
- - bundle exec codeclimate-test-reporter
16
+ - bundle exec codeclimate-test-reporter
data/CHANGELOG.md CHANGED
@@ -4,6 +4,22 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  This change log adheres to [keepachangelog.com](http://keepachangelog.com).
6
6
 
7
+ ## [Unreleased]
8
+
9
+ ## [0.7.0] - 2018-07-11
10
+ ### Added
11
+ - Support `camelize` option
12
+
13
+ ### Changed
14
+ - Drop supporting legacy Ruby versions
15
+
16
+ ## [0.6.0] - 2018-07-04
17
+ ### Added
18
+ - Support Rails engine
19
+
20
+ ### Changed
21
+ - Replace `path` with `output_dir`
22
+
7
23
  ## [0.5.0] - 2017-04-08
8
24
  ### Added
9
25
  - Support additional parameters
@@ -35,6 +51,9 @@ This change log adheres to [keepachangelog.com](http://keepachangelog.com).
35
51
  ### Added
36
52
  - Implement "js:rails:routes" task
37
53
 
54
+ [Unreleased]: https://github.com/yuku-t/js_rails_routes/compare/v0.7.0...HEAD
55
+ [0.7.0]: https://github.com/yuku-t/js_rails_routes/compare/v0.6.0...v0.7.0
56
+ [0.6.0]: https://github.com/yuku-t/js_rails_routes/compare/v0.5.0...v0.6.0
38
57
  [0.5.0]: https://github.com/yuku-t/js_rails_routes/compare/v0.4.0...v0.5.0
39
58
  [0.4.0]: https://github.com/yuku-t/js_rails_routes/compare/v0.3.0...v0.4.0
40
59
  [0.3.0]: https://github.com/yuku-t/js_rails_routes/compare/v0.2.1...v0.3.0
data/Gemfile CHANGED
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
  gemspec
data/README.md CHANGED
@@ -75,14 +75,15 @@ rake js:routes
75
75
 
76
76
  JSRailsRoutes supports several parameters:
77
77
 
78
- Name | Type | Description | Default
79
- ------------------|----------|------------------------------------------------|----------------------------------------
80
- `include_paths` | `Regexp` | Paths match to the regexp are included | `/.*/`
81
- `exclude_paths` | `Regexp` | Paths match to the regexp are excluded | `/^$/`
82
- `include_names` | `Regexp` | Names match to the regexp are included | `/.*/`
83
- `exclude_names` | `Regexp` | Names match to the regexp are excluded | `/^$/`
84
- `exclude_engines` | `Regexp` | Rails engines match to the regexp are excluded | `/^$/`
85
- `output_dir` | `String` | Output JS file into the specified directory | `Rails.root.join("app", "assets", "javascripts")`
78
+ Name | Type | Description | Default
79
+ ------------------|-----------|---------------------------------------------------------------------------------------|----------------------------------------
80
+ `include_paths` | `Regexp` | Paths match to the regexp are included | `/.*/`
81
+ `exclude_paths` | `Regexp` | Paths match to the regexp are excluded | `/^$/`
82
+ `include_names` | `Regexp` | Names match to the regexp are included | `/.*/`
83
+ `exclude_names` | `Regexp` | Names match to the regexp are excluded | `/^$/`
84
+ `exclude_engines` | `Regexp` | Rails engines match to the regexp are excluded | `/^$/`
85
+ `output_dir` | `String` | Output JS file into the specified directory | `Rails.root.join("app", "assets", "javascripts")`
86
+ `camelize` | `Symbol` | Output JS file with chosen camelcase type it also avaliable for `:lower` and `:upper` | `nil`
86
87
 
87
88
  You can configure via `JSRailsRoutes.configure`.
88
89
 
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rspec/core/rake_task'
3
5
  require 'rubocop/rake_task'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  $LOAD_PATH << File.expand_path('lib', __dir__)
2
4
 
3
5
  require 'js_rails_routes/version'
@@ -12,6 +14,8 @@ Gem::Specification.new do |spec|
12
14
  spec.license = 'MIT'
13
15
  spec.files = `git ls-files -z`.split("\x0")
14
16
  spec.require_paths = ['lib']
17
+ spec.required_ruby_version = '>= 2.3.0'
18
+
15
19
  spec.add_dependency 'rails', '>= 3.2'
16
20
  spec.add_development_dependency 'bundler', '~> 1.16'
17
21
  spec.add_development_dependency 'codeclimate-test-reporter', '~> 1.0'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails'
2
4
 
3
5
  module JSRailsRoutes
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'singleton'
2
4
 
3
5
  module JSRailsRoutes
@@ -18,7 +20,13 @@ module JSRailsRoutes
18
20
 
19
21
  include Singleton
20
22
 
21
- attr_accessor :include_paths, :exclude_paths, :include_names, :exclude_names, :exclude_engines, :output_dir
23
+ attr_accessor :include_paths,
24
+ :exclude_paths,
25
+ :include_names,
26
+ :exclude_names,
27
+ :exclude_engines,
28
+ :output_dir,
29
+ :camelize
22
30
 
23
31
  def initialize
24
32
  self.include_paths = /.*/
@@ -26,6 +34,7 @@ module JSRailsRoutes
26
34
  self.include_names = /.*/
27
35
  self.exclude_names = /^$/
28
36
  self.exclude_engines = /^$/
37
+ self.camelize = nil
29
38
 
30
39
  self.output_dir = Rails.root.join('app', 'assets', 'javascripts')
31
40
  Rails.application.reload_routes!
@@ -59,13 +68,20 @@ module JSRailsRoutes
59
68
  keys.push("'#{Regexp.last_match(1)}'")
60
69
  route_path.sub!(COMPARE_REGEXP, "' + params.#{Regexp.last_match(1)} + '#{Regexp.last_match(2)}")
61
70
  end
62
- "export function #{route_name}_path(params) { return process('#{route_path}', params, [#{keys.join(',')}]); }"
71
+
72
+ function_name = make_function_name(route_name)
73
+ "export function #{function_name}(params) { return process('#{route_path}', params, [#{keys.join(',')}]); }"
63
74
  end
64
75
 
65
76
  def routes_with_engines
66
77
  @routes_with_engines ||= [default_routes] + subengine_routes
67
78
  end
68
79
 
80
+ def make_function_name(route_name)
81
+ url_helper_name = route_name + '_path'
82
+ camelize.nil? ? url_helper_name : url_helper_name.camelize(camelize)
83
+ end
84
+
69
85
  def make_routes(routes)
70
86
  routes
71
87
  .select(&:name)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module JSRailsRoutes
2
- VERSION = '0.6.0'.freeze
4
+ VERSION = '0.7.0'
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'js_rails_routes/engine'
2
4
  require 'js_rails_routes/generator'
3
5
  require 'js_rails_routes/version'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  desc 'Generate a ES6 module that contains Rails routes'
2
4
  namespace :js do
3
5
  task routes: :environment do |task|
@@ -7,6 +9,7 @@ namespace :js do
7
9
  generator.include_names = Regexp.new(ENV['include_names']) if ENV['include_names']
8
10
  generator.exclude_names = Regexp.new(ENV['exclude_names']) if ENV['exclude_names']
9
11
  generator.output_dir = ENV['output_dir'] if ENV['output_dir']
12
+ generator.camelize = ENV['camelize']&.to_sym if ENV['camelize']
10
13
  generator.generate(task)
11
14
  puts "Routes saved into #{generator.output_dir}."
12
15
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe JSRailsRoutes::Generator do
2
4
  let(:generator) do
3
5
  described_class.clone.instance
@@ -148,5 +150,50 @@ RSpec.describe JSRailsRoutes::Generator do
148
150
  subject
149
151
  end
150
152
  end
153
+
154
+ shared_examples_for 'writes paths that matches expected routes' do
155
+ it do
156
+ expect(generator).to receive(:write)
157
+ .with(be_in(['Rails', 'Admin::Engine']), a_kind_of(String))
158
+ .twice do |_, arg|
159
+ paths = arg.split("\n")[(2 + described_class::PROCESS_FUNC.split("\n").size)..-1]
160
+ expect(paths).not_to be_empty
161
+ expect(paths).to include(match(expected_routes))
162
+ end
163
+ subject
164
+ end
165
+ end
166
+
167
+ context 'when camelize is nil' do
168
+ let(:expected_routes) do
169
+ /blog_path|note_path/
170
+ end
171
+
172
+ it_behaves_like 'writes paths that matches expected routes'
173
+ end
174
+
175
+ context 'when camelize is :lower' do
176
+ before do
177
+ generator.camelize = :lower
178
+ end
179
+
180
+ let(:expected_routes) do
181
+ /blogPath|notePath/
182
+ end
183
+
184
+ it_behaves_like 'writes paths that matches expected routes'
185
+ end
186
+
187
+ context 'when camelize is :upper' do
188
+ before do
189
+ generator.camelize = :upper
190
+ end
191
+
192
+ let(:expected_routes) do
193
+ /BlogPath|NotePath/
194
+ end
195
+
196
+ it_behaves_like 'writes paths that matches expected routes'
197
+ end
151
198
  end
152
199
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe JSRailsRoutes do
2
4
  describe '.configure' do
3
5
  it 'yields with Generator instance' do
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  $LOAD_PATH << File.expand_path('../lib', __dir__)
2
4
 
3
5
  require 'simplecov'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: js_rails_routes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuku Takahashi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-04 00:00:00.000000000 Z
11
+ date: 2018-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -147,7 +147,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
147
147
  requirements:
148
148
  - - ">="
149
149
  - !ruby/object:Gem::Version
150
- version: '0'
150
+ version: 2.3.0
151
151
  required_rubygems_version: !ruby/object:Gem::Requirement
152
152
  requirements:
153
153
  - - ">="