js_rails_routes 0.9.0 → 0.10.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,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ff931b1b9f29b4a86444a8613d653a32961bc378e86d44fdc25cf319bcd9cc86
4
- data.tar.gz: ce054504cf1e89cde6d76bca05f5fb03834740e8ff0a2e9acdea76326ef3e8ce
3
+ metadata.gz: eb3bb6c9a267324041904e5ba8e8418a61e8d64fac6273caaabb1f5c4c9699f4
4
+ data.tar.gz: d3e2cf66c91f3b3d063127b5d38969d2533fad8b27eb1c7586b1689403936534
5
5
  SHA512:
6
- metadata.gz: 932d0666655cf343988cdd19730ed038b662d6efa86c36a1e97c63a9f98a7c1cbe51a4abdc5a14903814f6a578e597a123e782ebb85a5c3dfa9e0807f7fbca25
7
- data.tar.gz: b6c2ad6c62c1c95b6db17386468801a1fc543c60fed064b253a36458c3b14cb3614b9928c495a1f26d53e02946735a452106388ad5f46ebd8af96b494b5578a6
6
+ metadata.gz: 1dbfa99a9a37cac5d3f0e6412f29828bff8b0464c52d0e88e4ca7b6c4161e2f785a67b7831bdaecb9eb6c12894e80c6f3a3eae31f5246dede0088e7b2a86537d
7
+ data.tar.gz: c07b6a657b44e15d84a792fbd5095cc947cd52501d2f862bb5e818ab20a61b12e91ee44be134169dae1826138dbbb1d68e6d820ea6e15adadf0e9999307089d5
data/CHANGELOG.md CHANGED
@@ -6,6 +6,10 @@ This change log adheres to [keepachangelog.com](http://keepachangelog.com).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.10.0] - 2018-10-29
10
+ ### Added
11
+ - Enable to change route's name
12
+
9
13
  ## [0.9.0] - 2018-08-24
10
14
  ### Added
11
15
  - Improved TypeScript params typing support
@@ -70,7 +74,8 @@ This change log adheres to [keepachangelog.com](http://keepachangelog.com).
70
74
  ### Added
71
75
  - Implement "js:rails:routes" task
72
76
 
73
- [Unreleased]: https://github.com/yuku-t/js_rails_routes/compare/v0.9.0...HEAD
77
+ [Unreleased]: https://github.com/yuku-t/js_rails_routes/compare/v0.10.0...HEAD
78
+ [0.10.0]: https://github.com/yuku-t/js_rails_routes/compare/v0.9.0...v0.10.0
74
79
  [0.9.0]: https://github.com/yuku-t/js_rails_routes/compare/v0.8.1...v0.9.0
75
80
  [0.8.1]: https://github.com/yuku-t/js_rails_routes/compare/v0.8.0...v0.8.1
76
81
  [0.8.0]: https://github.com/yuku-t/js_rails_routes/compare/v0.7.1...v0.8.0
data/README.md CHANGED
@@ -110,6 +110,21 @@ rake js:routes exclude_paths='^/rails'
110
110
 
111
111
  The command still ignores "/rails" but includes "/sidekiq".
112
112
 
113
+ ### Rename route
114
+
115
+ You can rename route in `route_filter`:
116
+
117
+ ```rb
118
+ # Rakefile
119
+ JSRailsRoutes.configure do |c|
120
+ c.route_filter = -> (route) do
121
+ # Remove common prefix if route's name starts with it.
122
+ route.name = route.name[4..-1] if route.name.start_with?('foo_')
123
+ true
124
+ end
125
+ end
126
+ ```
127
+
113
128
  ## Install
114
129
 
115
130
  Your Rails Gemfile:
@@ -20,8 +20,8 @@ Gem::Specification.new do |spec|
20
20
  spec.add_development_dependency 'bundler', '~> 1.16'
21
21
  spec.add_development_dependency 'codeclimate-test-reporter', '~> 1.0'
22
22
  spec.add_development_dependency 'rake', '~> 12.3'
23
- spec.add_development_dependency 'rspec', '~> 3.7'
24
- spec.add_development_dependency 'rubocop', '~> 0.58.1'
25
- spec.add_development_dependency 'rubocop-rspec', '~> 1.27'
23
+ spec.add_development_dependency 'rspec', '~> 3.8'
24
+ spec.add_development_dependency 'rubocop', '~> 0.60.0'
25
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.30.0'
26
26
  spec.add_development_dependency 'simplecov', '~> 0.16.1'
27
27
  end
@@ -3,8 +3,8 @@
3
3
  module JSRailsRoutes
4
4
  # Encapsulate a single routing rule
5
5
  class Route
6
- # @return [String]
7
- attr_reader :name
6
+ # @return [String] route name. It becomes JavaScript function name.
7
+ attr_accessor :name
8
8
 
9
9
  # @return [String]
10
10
  attr_reader :path
@@ -25,6 +25,7 @@ module JSRailsRoutes
25
25
  return false if config.exclude_paths =~ path
26
26
  return false if config.include_names !~ name
27
27
  return false if config.exclude_names =~ name
28
+
28
29
  config.route_filter.call(self)
29
30
  end
30
31
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JSRailsRoutes
4
- VERSION = '0.9.0'
4
+ VERSION = '0.10.0'
5
5
  end
@@ -8,7 +8,7 @@ require 'js_rails_routes/language/javascript'
8
8
  require 'js_rails_routes/language/typescript'
9
9
 
10
10
  module JSRailsRoutes
11
- PARAM_REGEXP = %r{:(.*?)(/|$)}
11
+ PARAM_REGEXP = %r{:(.*?)(/|$)}.freeze
12
12
 
13
13
  module_function
14
14
 
@@ -35,6 +35,7 @@ module JSRailsRoutes
35
35
  # @yield
36
36
  def sandbox
37
37
  raise 'Already in a sandbox' if @sandbox
38
+
38
39
  @sandbox = true
39
40
  prev = @config
40
41
  @config = Configuration.new
@@ -31,7 +31,7 @@ RSpec.describe JSRailsRoutes::Builder do
31
31
  subject { builder.build }
32
32
 
33
33
  it 'returns an array of artifacts' do
34
- is_expected.to contain_exactly(
34
+ expect(subject).to contain_exactly(
35
35
  an_object_having_attributes(engine_name: rails_route_set.name, body: body),
36
36
  an_object_having_attributes(engine_name: engine_route_set.name, body: body)
37
37
  )
@@ -9,7 +9,7 @@ RSpec.describe JSRailsRoutes::Language::JavaScript do
9
9
  subject { described_class::PROCESS_FUNC }
10
10
 
11
11
  it 'returns a javascript function' do
12
- is_expected.to eq <<~JAVASCRIPT
12
+ expect(subject).to eq <<~JAVASCRIPT
13
13
  function process(route, params, keys) {
14
14
  var query = [];
15
15
  for (var param in params) if (params.hasOwnProperty(param)) {
@@ -37,7 +37,7 @@ RSpec.describe JSRailsRoutes::Language::JavaScript do
37
37
 
38
38
  context 'without camelize option' do
39
39
  it 'returns a javascript with snake_case functions' do
40
- is_expected.to eq <<~JAVASCRIPT
40
+ expect(subject).to eq <<~JAVASCRIPT
41
41
  #{described_class::PROCESS_FUNC}
42
42
  export function articles_path(params) { return process('/articles', params, []); }
43
43
  export function new_article_path(params) { return process('/articles/new', params, []); }
@@ -55,7 +55,7 @@ RSpec.describe JSRailsRoutes::Language::JavaScript do
55
55
  end
56
56
 
57
57
  it 'returns a javascript with lowerCamelCase functions' do
58
- is_expected.to eq <<~JAVASCRIPT
58
+ expect(subject).to eq <<~JAVASCRIPT
59
59
  #{described_class::PROCESS_FUNC}
60
60
  export function articlesPath(params) { return process('/articles', params, []); }
61
61
  export function newArticlePath(params) { return process('/articles/new', params, []); }
@@ -73,7 +73,7 @@ RSpec.describe JSRailsRoutes::Language::JavaScript do
73
73
  end
74
74
 
75
75
  it 'returns a javascript with UpperCamelCase functions' do
76
- is_expected.to eq <<~JAVASCRIPT
76
+ expect(subject).to eq <<~JAVASCRIPT
77
77
  #{described_class::PROCESS_FUNC}
78
78
  export function ArticlesPath(params) { return process('/articles', params, []); }
79
79
  export function NewArticlePath(params) { return process('/articles/new', params, []); }
@@ -91,7 +91,7 @@ RSpec.describe JSRailsRoutes::Language::JavaScript do
91
91
  end
92
92
 
93
93
  it 'returns a javascript matching to the regexp' do
94
- is_expected.to eq <<~JAVASCRIPT
94
+ expect(subject).to eq <<~JAVASCRIPT
95
95
  #{described_class::PROCESS_FUNC}
96
96
  export function new_article_path(params) { return process('/articles/new', params, []); }
97
97
  JAVASCRIPT
@@ -106,7 +106,7 @@ RSpec.describe JSRailsRoutes::Language::JavaScript do
106
106
  end
107
107
 
108
108
  it 'returns a javascript not matching to the regexp' do
109
- is_expected.to eq <<~JAVASCRIPT
109
+ expect(subject).to eq <<~JAVASCRIPT
110
110
  #{described_class::PROCESS_FUNC}
111
111
  export function articles_path(params) { return process('/articles', params, []); }
112
112
  export function edit_article_path(params) { return process('/articles/' + params.id + '/edit', params, ['id']); }
@@ -123,7 +123,7 @@ RSpec.describe JSRailsRoutes::Language::JavaScript do
123
123
  end
124
124
 
125
125
  it 'returns a javascript matching to the regexp' do
126
- is_expected.to eq <<~JAVASCRIPT
126
+ expect(subject).to eq <<~JAVASCRIPT
127
127
  #{described_class::PROCESS_FUNC}
128
128
  export function new_article_path(params) { return process('/articles/new', params, []); }
129
129
  JAVASCRIPT
@@ -138,7 +138,7 @@ RSpec.describe JSRailsRoutes::Language::JavaScript do
138
138
  end
139
139
 
140
140
  it 'returns a javascript not matching to the regexp' do
141
- is_expected.to eq <<~JAVASCRIPT
141
+ expect(subject).to eq <<~JAVASCRIPT
142
142
  #{described_class::PROCESS_FUNC}
143
143
  export function articles_path(params) { return process('/articles', params, []); }
144
144
  export function edit_article_path(params) { return process('/articles/' + params.id + '/edit', params, ['id']); }
@@ -9,7 +9,7 @@ RSpec.describe JSRailsRoutes::Language::TypeScript do
9
9
  subject { described_class::PROCESS_FUNC }
10
10
 
11
11
  it 'returns a typescript function' do
12
- is_expected.to eq <<~TYPESCRIPT
12
+ expect(subject).to eq <<~TYPESCRIPT
13
13
  type Value = string | number
14
14
  type Params<Keys extends string> = { [key in Keys]: Value } & Record<string, Value>
15
15
  function process(route: string, params: Record<string, Value> | undefined, keys: string[]): string {
@@ -40,7 +40,7 @@ RSpec.describe JSRailsRoutes::Language::TypeScript do
40
40
 
41
41
  context 'without camelize option' do
42
42
  it 'returns a typescript with snake_case functions' do
43
- is_expected.to eq <<~TYPESCRIPT
43
+ expect(subject).to eq <<~TYPESCRIPT
44
44
  #{described_class::PROCESS_FUNC}
45
45
  export function articles_path(params?: Record<string, Value>) { return process('/articles', params, []); }
46
46
  export function new_article_path(params?: Record<string, Value>) { return process('/articles/new', params, []); }
@@ -58,7 +58,7 @@ RSpec.describe JSRailsRoutes::Language::TypeScript do
58
58
  end
59
59
 
60
60
  it 'returns a javascript with lowerCamelCase functions' do
61
- is_expected.to eq <<~TYPESCRIPT
61
+ expect(subject).to eq <<~TYPESCRIPT
62
62
  #{described_class::PROCESS_FUNC}
63
63
  export function articlesPath(params?: Record<string, Value>) { return process('/articles', params, []); }
64
64
  export function newArticlePath(params?: Record<string, Value>) { return process('/articles/new', params, []); }
@@ -76,7 +76,7 @@ RSpec.describe JSRailsRoutes::Language::TypeScript do
76
76
  end
77
77
 
78
78
  it 'returns a javascript with UpperCamelCase functions' do
79
- is_expected.to eq <<~TYPESCRIPT
79
+ expect(subject).to eq <<~TYPESCRIPT
80
80
  #{described_class::PROCESS_FUNC}
81
81
  export function ArticlesPath(params?: Record<string, Value>) { return process('/articles', params, []); }
82
82
  export function NewArticlePath(params?: Record<string, Value>) { return process('/articles/new', params, []); }
@@ -94,7 +94,7 @@ RSpec.describe JSRailsRoutes::Language::TypeScript do
94
94
  end
95
95
 
96
96
  it 'returns a javascript matching to the regexp' do
97
- is_expected.to eq <<~TYPESCRIPT
97
+ expect(subject).to eq <<~TYPESCRIPT
98
98
  #{described_class::PROCESS_FUNC}
99
99
  export function new_article_path(params?: Record<string, Value>) { return process('/articles/new', params, []); }
100
100
  TYPESCRIPT
@@ -109,7 +109,7 @@ RSpec.describe JSRailsRoutes::Language::TypeScript do
109
109
  end
110
110
 
111
111
  it 'returns a javascript not matching to the regexp' do
112
- is_expected.to eq <<~TYPESCRIPT
112
+ expect(subject).to eq <<~TYPESCRIPT
113
113
  #{described_class::PROCESS_FUNC}
114
114
  export function articles_path(params?: Record<string, Value>) { return process('/articles', params, []); }
115
115
  export function edit_article_path(params: Params<'id'>) { return process('/articles/' + params.id + '/edit', params, ['id']); }
@@ -126,7 +126,7 @@ RSpec.describe JSRailsRoutes::Language::TypeScript do
126
126
  end
127
127
 
128
128
  it 'returns a javascript matching to the regexp' do
129
- is_expected.to eq <<~TYPESCRIPT
129
+ expect(subject).to eq <<~TYPESCRIPT
130
130
  #{described_class::PROCESS_FUNC}
131
131
  export function new_article_path(params?: Record<string, Value>) { return process('/articles/new', params, []); }
132
132
  TYPESCRIPT
@@ -141,7 +141,7 @@ RSpec.describe JSRailsRoutes::Language::TypeScript do
141
141
  end
142
142
 
143
143
  it 'returns a javascript not matching to the regexp' do
144
- is_expected.to eq <<~TYPESCRIPT
144
+ expect(subject).to eq <<~TYPESCRIPT
145
145
  #{described_class::PROCESS_FUNC}
146
146
  export function articles_path(params?: Record<string, Value>) { return process('/articles', params, []); }
147
147
  export function edit_article_path(params: Params<'id'>) { return process('/articles/' + params.id + '/edit', params, ['id']); }
@@ -20,7 +20,7 @@ RSpec.describe JSRailsRoutes::RouteSet do
20
20
 
21
21
  it 'returns an array of matching route sets' do
22
22
  # See spec/support/test_app.rb
23
- is_expected.to match [
23
+ expect(subject).to match [
24
24
  be_a(described_class).and(have_attributes(name: 'Rails')).and(be_match),
25
25
  be_a(described_class).and(have_attributes(name: 'Admin::Engine')).and(be_match)
26
26
  ]
@@ -46,8 +46,8 @@ RSpec.describe JSRailsRoutes::RouteSet do
46
46
  end
47
47
 
48
48
  it "doesn't include the excluded route" do
49
- is_expected.to include be_a(JSRailsRoutes::Route).and(have_attributes(name: /articles/))
50
- is_expected.not_to include be_a(JSRailsRoutes::Route).and(have_attributes(name: /users/))
49
+ expect(subject).to include be_a(JSRailsRoutes::Route).and(have_attributes(name: /articles/))
50
+ expect(subject).not_to include be_a(JSRailsRoutes::Route).and(have_attributes(name: /users/))
51
51
  end
52
52
  end
53
53
  end
@@ -19,6 +19,14 @@ RSpec.describe JSRailsRoutes::Route do
19
19
  it { is_expected.to eq 'articles' }
20
20
  end
21
21
 
22
+ describe '#name=' do
23
+ subject { route.name = value }
24
+
25
+ let(:value) { 'foo' }
26
+
27
+ it { expect { subject }.to change(route, :name).to(value) }
28
+ end
29
+
22
30
  describe '#path' do
23
31
  subject { route.path }
24
32
 
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.9.0
4
+ version: 0.10.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-08-24 00:00:00.000000000 Z
11
+ date: 2018-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -72,42 +72,42 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '3.7'
75
+ version: '3.8'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '3.7'
82
+ version: '3.8'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rubocop
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.58.1
89
+ version: 0.60.0
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.58.1
96
+ version: 0.60.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rubocop-rspec
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '1.27'
103
+ version: 1.30.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '1.27'
110
+ version: 1.30.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: simplecov
113
113
  requirement: !ruby/object:Gem::Requirement