fixname 0.1.0 → 0.1.1

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/fixname.rb +122 -0
  3. metadata +4 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5d102d45a05e5512c035b8f3ec009034840680b9
4
- data.tar.gz: 0a03f2fe131b2e51bfadbc7266fb411793dc5379
3
+ metadata.gz: f10c0b1dffd71cd83df5c03663747864c2b1e59c
4
+ data.tar.gz: 3c8a52828214a860eef87195d83595b35de252da
5
5
  SHA512:
6
- metadata.gz: eb1d1e5b7c79708c8a34638c1fa720baa72a8956485c6e445fb111fca64e1609c15a5c1cc136773571d06d45090d7f6513989ed7c27dd51777e23d3cf9e5fbe2
7
- data.tar.gz: a0b89633e1a47df962956d9df5133e0d7ef87e9a5165664ef1378995d781fc13f95154b8f732680fe9a937cda62a969f5f5b2ecccf8fb88fc962f48a68baf350
6
+ metadata.gz: 8dee8e58a32822cf614a792f156899f6b75ab184b3736888cdb107e510d05817ec298084d6414b2c8ebdc68ebdd059d56ac158298ba2dd6e0b7e6a0cec4c3c84
7
+ data.tar.gz: 3ed9558f1ee19af560796eb8b72a704cb0fa4c6d20c9710c5e0221a2cbc280ed8591e15ed10b5a332ef81336ca51ad27d04d81e35b8f52c8d4eb4fc7de0bbc38
data/lib/fixname.rb ADDED
@@ -0,0 +1,122 @@
1
+ #encoding: utf-8
2
+ # require "fixname/version"
3
+
4
+ # STDOUT.sync = true
5
+ # ARGV[0] = %q{I:\ebooks\english\_unsorted\A D Koboah - [Darkling 01] - Dark Genesis (mobi).mobi.epub}
6
+
7
+ module Fixname
8
+
9
+ def titleize
10
+ split(/(\W)/).map(&:capitalize).join
11
+ end
12
+
13
+ def author
14
+ #return everything before the first -
15
+ self[/[^-]+/]
16
+ end
17
+
18
+ def title
19
+ self.rpartition('-').last.partition('.').first.strip
20
+ end
21
+
22
+ def normalise
23
+ # self.gsub!(/[^0-9A-Za-z]/, '').downcase
24
+ begin
25
+ self.tr(
26
+ "#{}()'.,;_&0123456789ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž",
27
+ " AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz"
28
+ ).downcase.gsub(/ +/," ").split(" ").sort.join("_")
29
+ rescue
30
+ puts self
31
+ puts $!
32
+ end
33
+ end
34
+
35
+ def self.check_filename file
36
+ basename = File.basename(file)
37
+ path = File.dirname(file)
38
+ ext = basename.rpartition('.').last.downcase
39
+ parts = basename.split(/-/).map!{|part|part.strip}
40
+ parts[0] = parts.first.split(/&/).map! do |author| #wissel voor en achternaam bij ,
41
+ before, after = author.split(/,/).map!{|part|part.strip}
42
+ author = "#{after} #{before}"
43
+ end.join(" & ")
44
+ result = parts.join(" - ")
45
+ begin
46
+ result.gsub!(/\[(.*?)\]/," ") #verwijder alles tussen rechte haken
47
+ result.gsub!(/\(.*\)/i," ") #verwijder alles tussen haken
48
+ result.gsub!(/_+/," ") #vervang _ door spatie
49
+ result.gsub!(/\\\\/,"/") #nodig ? vervang \\ door /
50
+ result.gsub!(/\.mobi|\.pdf|\.prc|\.doc/i,"")
51
+ formats = "(mobi|lit|epub|azw|txt|rtf|lrf|html|htm|azw3)"
52
+ pattern = /\.#{formats}/i
53
+ result.gsub!(pattern,"")
54
+ pattern = /\(#{formats}\)?/i
55
+ result.gsub!(pattern,"")
56
+ result.gsub!(/- *-/," - ") #verwijder opeenvolgende - eventueel gescheiden door spatie
57
+ result.gsub!(/ +/," ") #vervang meerder spaties door één
58
+ result.gsub!(/\(\)/,"") #vervang lege haakjes
59
+ result.gsub!(/ *-*\./,".") #vervang spatie gevolgd door punt
60
+ result.gsub!(/ *- *$/,"") #vervang streepje aan het einde
61
+ result.strip!
62
+ result = result.titleize
63
+ end
64
+ result = path+'/'+result+"."+ext
65
+ result.gsub('?',"'").gsub("./",'')
66
+ end
67
+
68
+ def rename old_name, new_name
69
+ puts %Q{ren "#{old_name}" "#{new_name}"}
70
+ unless system(%Q{move /y "#{old_name}" "#{new_name}"})
71
+ sleep 2 if $solo
72
+ end
73
+ end
74
+
75
+ def self.fix old_name
76
+ result = File.join(File.dirname(old_name), check_filename(File.basename(old_name))).gsub("/",'\\')
77
+ if old_name != result
78
+ old_name = old_name.gsub("/",'\\')
79
+ puts " #{old_name}"
80
+ puts "=>#{result}"
81
+ end
82
+ result
83
+ rescue => e
84
+ puts "Error while renaming #{old_name} to #{result}"
85
+ puts e
86
+ puts e.backtrace
87
+ puts
88
+ sleep 2 if $solo
89
+ end
90
+
91
+ def fixname
92
+ if File.directory?(self)
93
+ old_name = self.gsub(/\\/,'/')
94
+ puts "#{old_name} is a folder"
95
+ Dir.glob("#{old_name}/*.*").each do |old_name|
96
+ begin
97
+ rename old_name, fix(old_name)
98
+ rescue => e
99
+ puts e
100
+ puts e.backtrace
101
+ sleep 2 if $solo
102
+ end
103
+ end
104
+ else
105
+ old_name = self.dup
106
+ $solo = true
107
+ rename old_name, fix(old_name)
108
+ end
109
+ rescue => e
110
+ puts e
111
+ puts e.backtrace
112
+ sleep 2 if $solo
113
+ end
114
+
115
+ end
116
+
117
+ class String
118
+ include Fixname
119
+ end
120
+
121
+ # %q{C:\Users\Gebruiker\BoxSync\ruby_werk\create_gem\Hedlund, Jody - Een lied in de storm (2017).epub}.fixname
122
+ puts Fixname.fix %q{C:\Users\Gebruiker\BoxSync\ruby_werk\create_gem\Hedlund, Jody - Een lied in de storm (2017).epub}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fixname
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Mariën
@@ -58,8 +58,9 @@ email:
58
58
  executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
- files: []
62
- homepage: http://no.homepage
61
+ files:
62
+ - lib/fixname.rb
63
+ homepage: http://rubygems.org/gems/fixname
63
64
  licenses:
64
65
  - MIT
65
66
  metadata: {}