gem_sort 0.1.0 → 0.2.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: 43e2aea74fffa7d6d1ee951ff0c5719b5bf381ad
4
- data.tar.gz: 1d0b932a15839d0328d7c6b9c52f2907378b29f3
3
+ metadata.gz: 63039423becb32baf6af0079b3115773ca1f4470
4
+ data.tar.gz: fccd096f8892c4dc81bb7ac9d95d43e215068a4a
5
5
  SHA512:
6
- metadata.gz: 1f87d4b87ce1143496a93ce24aa1b7e6895f28131eed07ed1d5f33962ddc5a5a13ac462ba92212e56f2b8218ff99a6fd540280d92bf01331451e1596900b88f2
7
- data.tar.gz: 22e3b116d0ee344817089e9d06ee5022bbf71012b4718f4d4fbc6afcc0a7def43e1753bbd9c61e3fffff096b9a00099b5edf40fb080356aec75f4fd757d90d41
6
+ metadata.gz: 7af44040ab3643dc6211bec7a2ddeeb67e578b8b4ec40b9e79e82d40fe2c65c7b2c9abbe3c75117d4adda5dafa42671a8a22564d85d74a66481f887456bd787c
7
+ data.tar.gz: 754d0c308019d4920c723d2b27a78a5fcc34397819e1b9940e7f8ea1f6cd9e13f7271125a6644fa22883aaa20396e642b1f07d5a38fa3baf24888ee93e182a5c
@@ -55,8 +55,16 @@ module GemSort
55
55
  source_gemfile.read.split("\n").select{ |line| line != "" }
56
56
  end
57
57
 
58
+ def removal_comment_and_blank(text)
59
+ text.gsub(/#.*$/,'').gsub(/\n(\s| )*\n/, "\n")
60
+ end
61
+
62
+ def magic_comment
63
+ "# frozen_string_literal: true\n"
64
+ end
65
+
58
66
  def write_gemfile(text)
59
- source_gemfile.write(text)
67
+ source_gemfile.write(magic_comment + removal_comment_and_blank(text))
60
68
  end
61
69
 
62
70
  def sort!
@@ -1,3 +1,3 @@
1
1
  module GemSort
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -1,26 +1,22 @@
1
1
  require File.expand_path('../boot', __FILE__)
2
2
 
3
- require 'rails/all'
3
+ require 'rails'
4
+ # Pick the frameworks you want:
5
+ require 'active_model/railtie'
6
+ # require 'active_record/railtie'
7
+ require 'action_controller/railtie'
8
+ require 'action_mailer/railtie'
9
+ require 'action_view/railtie'
10
+ require 'sprockets/railtie'
11
+ require 'rails/test_unit/railtie'
12
+
13
+
4
14
 
5
15
  Bundler.require(*Rails.groups)
6
16
  require "gem_sort"
7
17
 
8
18
  module Dummy
9
19
  class Application < Rails::Application
10
- # Settings in config/environments/* take precedence over those specified here.
11
- # Application configuration should go into files in config/initializers
12
- # -- all .rb files in that directory are automatically loaded.
13
-
14
- # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
15
- # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
16
- # config.time_zone = 'Central Time (US & Canada)'
17
-
18
- # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
19
- # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
20
- # config.i18n.default_locale = :de
21
-
22
- # Do not swallow errors in after_commit/after_rollback callbacks.
23
- config.active_record.raise_in_transactional_callbacks = true
24
20
  end
25
21
  end
26
22
 
data/test/test_helper.rb CHANGED
@@ -2,8 +2,6 @@
2
2
  ENV["RAILS_ENV"] = "test"
3
3
 
4
4
  require File.expand_path("../../test/dummy/config/environment.rb", __FILE__)
5
- ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)]
6
- ActiveRecord::Migrator.migrations_paths << File.expand_path('../../db/migrate', __FILE__)
7
5
  require "rails/test_help"
8
6
 
9
7
  # Filter out Minitest backtrace while allowing backtrace from other libraries
metadata CHANGED
@@ -1,37 +1,23 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem_sort
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - kozo yamagata
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-02 00:00:00.000000000 Z
11
+ date: 2016-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '4.2'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '4.2'
27
- - !ruby/object:Gem::Dependency
28
- name: sqlite3
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
17
  - - ">="
32
18
  - !ruby/object:Gem::Version
33
19
  version: '0'
34
- type: :development
20
+ type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
@@ -57,11 +43,8 @@ files:
57
43
  - lib/gem_sort.rb
58
44
  - lib/gem_sort/engine.rb
59
45
  - lib/gem_sort/sorter.rb
60
- - lib/gem_sort/sorter.rb~
61
46
  - lib/gem_sort/version.rb
62
- - lib/gem_sort/version.rb~
63
47
  - lib/tasks/gem_sort_tasks.rake
64
- - lib/tasks/gem_sort_tasks.rake~
65
48
  - test/dummy/README.rdoc
66
49
  - test/dummy/Rakefile
67
50
  - test/dummy/app/assets/javascripts/application.js
@@ -119,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
102
  version: '0'
120
103
  requirements: []
121
104
  rubyforge_project:
122
- rubygems_version: 2.4.5
105
+ rubygems_version: 2.5.1
123
106
  signing_key:
124
107
  specification_version: 4
125
108
  summary: Sorting your gems in Gemfile (for Rails)
@@ -1,108 +0,0 @@
1
- module GemSort
2
- class Sorter
3
- def extract_blocks!(lines, begin_block_condition, nested = false)
4
- end_block_condition = -> (line) {
5
- (nested ? line.strip : line).start_with?("end")
6
- }
7
- blocks = []
8
-
9
- while lines.select(&begin_block_condition).length > 0
10
- begin_block_index = lines.index(&begin_block_condition)
11
- block_length = lines
12
- .slice(begin_block_index..lines.length)
13
- .index(&end_block_condition)
14
- block_length += 1
15
- blocks << lines.slice!(begin_block_index, block_length)
16
- end
17
- blocks
18
- end
19
-
20
- def extract_line!(lines, condition)
21
- target_line = lines.select(&condition).first
22
- lines.delete_if{ |line| line == target_line } if target_line != nil
23
- target_line
24
- end
25
-
26
- def sort_block_gems(block)
27
- wrap_block(block, unwrap_block(block).sort)
28
- end
29
-
30
- def wrap_block(block, inside)
31
- [
32
- block.first,
33
- *inside,
34
- block.last
35
- ]
36
- end
37
-
38
- def unwrap_block(block)
39
- block[1..block.length - 2]
40
- end
41
-
42
- def inject_between(array, divider)
43
- array.each_with_index.inject([]) { |acc, (item, i)|
44
- acc << item
45
- acc << divider if array.last != item
46
- acc
47
- }
48
- end
49
-
50
- def source_gemfile
51
- ::Rails.root.join('Gemfile').open('r+')
52
- end
53
-
54
- def read_gemfile
55
- source_gemfile.read.split("\n").select{ |line| line != "" }
56
- end
57
-
58
- def write_gemfile(text)
59
- source_gemfile.write(text)
60
- end
61
-
62
- def sort!
63
- gemfile = read_gemfile
64
-
65
- group_blocks = extract_blocks!(gemfile, -> (line) {
66
- line.start_with?("group")
67
- }).map{ |group_block|
68
- sort_block_gems(group_block)
69
- }
70
-
71
- source_blocks = extract_blocks!(gemfile, -> (line) {
72
- line.start_with?("source ") && line.end_with?("do")
73
- }).map{ |source_block|
74
- source_inside = unwrap_block(source_block)
75
- inside_group_blocks = extract_blocks!(source_inside, -> (line) {
76
- line.strip.start_with?("group")
77
- }, true).map{ |inside_group_block|
78
- sort_block_gems(inside_group_block)
79
- }
80
- inside = source_inside.sort + inject_between(inside_group_blocks, nil)
81
- wrap_block(source_block, inside)
82
- }
83
-
84
- source_line = extract_line!(gemfile, -> (line) {
85
- line.start_with?('source') && !line.end_with?('do')
86
- })
87
-
88
- ruby_line = extract_line!(gemfile, -> (line) {
89
- line.start_with?('ruby')
90
- })
91
-
92
- rails_line = extract_line!(gemfile, -> (line) {
93
- line.start_with?('gem "rails"') || line.start_with?("gem 'rails'")
94
- })
95
-
96
- sorted_text = inject_between([
97
- source_line,
98
- [ruby_line, rails_line],
99
- gemfile.sort,
100
- inject_between(group_blocks, nil),
101
- inject_between(source_blocks, nil)
102
- ], nil).flatten.join("\n")
103
-
104
- write_gemfile(sorted_text)
105
- =end
106
- end
107
- end
108
- end
@@ -1,3 +0,0 @@
1
- module GemSort
2
- VERSION = "0.0.1"
3
- end
@@ -1,7 +0,0 @@
1
- require 'gem_sort/sorter'
2
-
3
- namespace :gem do
4
- task :sort do
5
- puts Rails.root.join('Gemfile')
6
- end
7
- end