filename_cleaner 0.0.2 → 0.0.3

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
  SHA1:
3
- metadata.gz: f3810b52bde9fdd3433144c4574f62bdfb05822e
4
- data.tar.gz: e1bfd0e70e6e7c389a07c72eb4c4fb6e5dfd81af
3
+ metadata.gz: 0bd5137e77cc80734366d70ab66ff7b4bff25c74
4
+ data.tar.gz: b31ecd51ae531972fd2a9421513a8ef02475b40f
5
5
  SHA512:
6
- metadata.gz: a586deae20c6e1eb0ed2acff89c38b70ef663b0e6e0bb57a0e5079407590d7e790e3fe80b5ae33cc4c64b8e13923c0a7f2eb00ea0d0c63bedd097f4cc9bbe430
7
- data.tar.gz: 1766f19d14dd6b22fecbb28dcdee0480034070afb484001b66fc68feec5b163d8ff519f9b5da0da8e51497cde4a8358229d80433ee0a5b23a75a4d582e36ac8d
6
+ metadata.gz: 0b76d5199034e669a1b257018f7b17ac0340c7e129bcc85bd360a894749fcb334eb55575a8d2d4ab45f62b820ec2cf152c3e6ac82a047cef9f06dcf574e5b498
7
+ data.tar.gz: 506c76b7f13c56d937f8bed94d1ee43d26577beda2ca733d4b3b1e20e40dae817d3b2bad2cc4560f5551183f322a213e506eaca4b4c86fb3157b330eb7115853
data/README.md CHANGED
@@ -95,10 +95,14 @@ puts clean_name # => 'some_b_d_fil_name.txt'
95
95
 
96
96
  ### Changelogs
97
97
 
98
+ #### 0.0.3
99
+
100
+ - Remove the namespace and code refactoring
101
+
98
102
  #### 0.0.2
99
103
 
100
104
  - Update gem dependencies to the latest version
101
- - Update gemspec to reflect teh actual feature of the gem
105
+ - Update gemspec to reflect the actual feature of the gem
102
106
  - Update and cleanup README.md
103
107
 
104
108
  #### 0.0.1
@@ -71,7 +71,7 @@ Options:
71
71
  files.each do |file|
72
72
  dirname = File.dirname(File.expand_path(file))
73
73
  filename = File.basename(file)
74
- sanitized_name = FilenameCleaner::Utils.sanitize_filename(filename, options[:sep_char])
74
+ sanitized_name = FilenameCleaner::sanitize_filename(filename, options[:sep_char])
75
75
  old_name = File.expand_path(file)
76
76
  new_name = File.expand_path([dirname, sanitized_name].join(File::SEPARATOR))
77
77
 
@@ -0,0 +1,48 @@
1
+ module FilenameCleaner
2
+ DOT = '.'
3
+ class << self
4
+ # Sanitize filename that have the extension
5
+ #
6
+ # @param [String] filename the input filename with extension
7
+ # @retyrn [String] the output file with special characters replaced.
8
+ def sanitize_filename(filename, sep_char = nil)
9
+ extension = File.extname(filename)
10
+
11
+ if extension.empty?
12
+ replace_dot!(sanitize(filename), sep_char)
13
+ else
14
+ name_only = File.basename(filename, ".*")
15
+ name_only = replace_dot!(sanitize(name_only), sep_char)
16
+ "#{name_only}#{extension}"
17
+ end
18
+ end
19
+
20
+ # Clean the the input string to remove the special characters
21
+ #
22
+ # @param [String] filename input file
23
+ # @return [String] the new file name with special characters replaced or removed.
24
+ def sanitize(filename)
25
+ # remove anything that is not letters, numbers, dash, underscore or space
26
+ # Note: we intentionally ignore dot from the list
27
+ filename.gsub!(/[^0-9A-Za-z\-_ ]/, DOT)
28
+
29
+ # replace multiple occurrences of a given char with a dot
30
+ ['-', '_', ' '].each do |c|
31
+ filename.gsub!(/#{Regexp.quote(c)}+/, DOT)
32
+ end
33
+
34
+ # replace multiple occurrence of dot with one dot
35
+ filename.gsub!(/#{Regexp.quote(DOT)}+/, DOT)
36
+
37
+ filename
38
+ end
39
+
40
+ private
41
+
42
+ # replace 'dot' string with a agiven string if any
43
+ def replace_dot!(string, replace = nil)
44
+ string.gsub!(/#{Regexp.quote(DOT)}+/, replace) if replace
45
+ string
46
+ end
47
+ end
48
+ end
@@ -1,3 +1,3 @@
1
1
  module FilenameCleaner
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -1,4 +1,4 @@
1
1
  require 'uri'
2
2
  require_relative './filename_cleaner/version'
3
3
  require_relative './filename_cleaner/cli'
4
- require_relative './filename_cleaner/utils'
4
+ require_relative './filename_cleaner/filename_cleaner'
@@ -0,0 +1,46 @@
1
+ require_relative '../../test_helper'
2
+ describe FilenameCleaner do
3
+ context '#sanitize' do
4
+ it 'works with simple input' do
5
+ FilenameCleaner.sanitize('any txt').must_equal 'any.txt'
6
+ FilenameCleaner.sanitize('this is a long filename.txt').must_equal 'this.is.a.long.filename.txt'
7
+ end
8
+ it 'works with text with extension' do
9
+ FilenameCleaner.sanitize('filename.txt').must_equal 'filename.txt'
10
+ end
11
+ end
12
+ context '#sanitize_filename' do
13
+ describe 'file with extension' do
14
+ it 'replaces mutilple consecutive chars with one' do
15
+ FilenameCleaner.sanitize_filename('some!!!$file$:%.txt').must_equal 'some.file..txt'
16
+ end
17
+ it 'works with default separator' do
18
+ FilenameCleaner.sanitize_filename('some file.txt').must_equal 'some.file.txt'
19
+ end
20
+ it 'works with non-default separator' do
21
+ FilenameCleaner.sanitize_filename('some file.txt', '_').must_equal 'some_file.txt'
22
+ end
23
+ end
24
+ describe 'file without extension' do
25
+ it 'replaces mutilple consecutive chars with one' do
26
+ FilenameCleaner.sanitize_filename('some!!!$file$:%.').must_equal 'some.file.'
27
+ end
28
+ context 'using default separator' do
29
+ it 'works with simple input' do
30
+ FilenameCleaner.sanitize_filename('Gemfile').must_equal 'Gemfile'
31
+ end
32
+ it 'works with complex input' do
33
+ FilenameCleaner.sanitize_filename('File$without!extension').must_equal 'File.without.extension'
34
+ end
35
+ end
36
+ context 'with non-default separator char' do
37
+ it 'works with simple input' do
38
+ FilenameCleaner.sanitize_filename('Gemfile', '_').must_equal 'Gemfile'
39
+ end
40
+ it 'works with complex input' do
41
+ FilenameCleaner.sanitize_filename('File$without!extension', '-').must_equal 'File-without-extension'
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
data/test/test_helper.rb CHANGED
@@ -3,6 +3,5 @@ require 'minitest/pride'
3
3
  require 'minitest-spec-context'
4
4
  require 'pry'
5
5
  require 'awesome_print'
6
-
7
6
  require_relative '../lib/filename_cleaner'
8
7
  include FilenameCleaner
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filename_cleaner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Burin Choomnuan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-29 00:00:00.000000000 Z
11
+ date: 2014-05-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -214,10 +214,10 @@ files:
214
214
  - filename_cleaner.gemspec
215
215
  - lib/filename_cleaner.rb
216
216
  - lib/filename_cleaner/cli.rb
217
- - lib/filename_cleaner/utils.rb
217
+ - lib/filename_cleaner/filename_cleaner.rb
218
218
  - lib/filename_cleaner/version.rb
219
219
  - rubocop-todo.yml
220
- - test/lib/filename_cleaner/test_utils.rb
220
+ - test/lib/filename_cleaner/test_filename_cleaner.rb
221
221
  - test/test_helper.rb
222
222
  homepage: https://github.com/agilecreativity/filename_cleaner
223
223
  licenses:
@@ -245,6 +245,6 @@ specification_version: 4
245
245
  summary: Bulk rename/remove unwanted characters from list of files in any directory
246
246
  recursively
247
247
  test_files:
248
- - test/lib/filename_cleaner/test_utils.rb
248
+ - test/lib/filename_cleaner/test_filename_cleaner.rb
249
249
  - test/test_helper.rb
250
250
  has_rdoc:
@@ -1,50 +0,0 @@
1
- module FilenameCleaner
2
- class Utils
3
- DOT = '.'
4
- class << self
5
- # Sanitize filename that have the extension
6
- #
7
- # @param [String] filename the input filename with extension
8
- # @retyrn [String] the output file with special characters replaced.
9
- def sanitize_filename(filename, sep_char = nil)
10
- extension = File.extname(filename)
11
-
12
- if extension.empty?
13
- replace_dot!(sanitize(filename), sep_char)
14
- else
15
- name_only = File.basename(filename, ".*")
16
- name_only = replace_dot!(sanitize(name_only), sep_char)
17
- "#{name_only}#{extension}"
18
- end
19
- end
20
-
21
- # Clean the the input string to remove the special characters
22
- #
23
- # @param [String] filename input file
24
- # @return [String] the new file name with special characters replaced or removed.
25
- def sanitize(filename)
26
- # remove anything that is not letters, numbers, dash, underscore or space
27
- # Note: we intentionally ignore dot from the list
28
- filename.gsub!(/[^0-9A-Za-z\-_ ]/, DOT)
29
-
30
- # replace multiple occurrences of a given char with a dot
31
- ['-', '_', ' '].each do |c|
32
- filename.gsub!(/#{Regexp.quote(c)}+/, DOT)
33
- end
34
-
35
- # replace multiple occurrence of dot with one dot
36
- filename.gsub!(/#{Regexp.quote(DOT)}+/, DOT)
37
-
38
- filename
39
- end
40
-
41
- private
42
-
43
- # replace 'dot' string with a agiven string if any
44
- def replace_dot!(string, replace = nil)
45
- string.gsub!(/#{Regexp.quote(DOT)}+/, replace) if replace
46
- string
47
- end
48
- end
49
- end
50
- end
@@ -1,43 +0,0 @@
1
- require_relative '../../test_helper'
2
- describe FilenameCleaner::Utils do
3
- context '#sanitize' do
4
- it 'works with simple input' do
5
- FilenameCleaner::Utils.sanitize('any txt').must_equal 'any.txt'
6
- FilenameCleaner::Utils.sanitize('this is a long filename.txt').must_equal 'this.is.a.long.filename.txt'
7
- end
8
-
9
- it 'works with text with extension' do
10
- FilenameCleaner::Utils.sanitize('filename.txt').must_equal 'filename.txt'
11
- end
12
- end
13
- context '#sanitize_filename' do
14
- describe 'file with extension' do
15
- it 'works with default separator' do
16
- FilenameCleaner::Utils.sanitize_filename('some file.txt').must_equal 'some.file.txt'
17
- end
18
-
19
- it 'works with non-default separator' do
20
- FilenameCleaner::Utils.sanitize_filename('some file.txt', '_').must_equal 'some_file.txt'
21
- end
22
- end
23
- describe 'file without extension' do
24
- context 'using default separator' do
25
- it 'works with simple input' do
26
- FilenameCleaner::Utils.sanitize_filename('Gemfile').must_equal 'Gemfile'
27
- end
28
- it 'works with complex input' do
29
- FilenameCleaner::Utils.sanitize_filename('File$without!extension').must_equal 'File.without.extension'
30
- end
31
- end
32
-
33
- context 'with non-default separator char' do
34
- it 'works with simple input' do
35
- FilenameCleaner::Utils.sanitize_filename('Gemfile', '_').must_equal 'Gemfile'
36
- end
37
- it 'works with complex input' do
38
- FilenameCleaner::Utils.sanitize_filename('File$without!extension', '-').must_equal 'File-without-extension'
39
- end
40
- end
41
- end
42
- end
43
- end