polskie_stringi 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/Rakefile +1 -2
  2. data/lib/polskie_stringi.rb +27 -21
  3. metadata +3 -3
data/Rakefile CHANGED
@@ -36,13 +36,12 @@ PKG_FILES = FileList[
36
36
 
37
37
  spec = Gem::Specification.new do |s|
38
38
  s.name = "polskie_stringi"
39
- s.version = "0.0.4"
39
+ s.version = "0.0.5"
40
40
  s.author = "v1x100r"
41
41
  s.email = "v1x100r@gmail.com"
42
42
  s.homepage = ""
43
43
  s.platform = Gem::Platform::RUBY
44
44
  s.summary = "Rozszerza funkcje klasy String o obsługę polskich znaków"
45
- s.description = "Funkcje upcase, downcase, capitalize, upcase!, downcase!, capitalize! obsługują od teraz polskie znaki. Dodatkowo 2 nowe funkcje no_pl i no_pl! które czyszczą ogonki ze znaków, oraz metoda String.polish_chars pobierająca tablicę z polskimi literami."
46
45
  s.files = PKG_FILES.to_a
47
46
  s.require_path = "lib"
48
47
  s.has_rdoc = false
@@ -2,47 +2,46 @@
2
2
 
3
3
  class ::String
4
4
 
5
- # zmień wszystkie litery na duże (łącznie z polskimi)
6
5
  def upcase
7
- # znajdź małe litery w łańcuchu, wyszukaj ich indeks w tablicy małych liter i podmień na wartość z tablicy dużych liter
8
- gsub(/[a-z#{String.polish_chars('small').join('')}]/) { |s| (('A'..'Z').to_a + String.polish_chars('big'))[(('a'..'z').to_a + String.polish_chars('small')).index(s)] }
6
+ # pl_replace z tablicy małych liter na tablicę dużych liter
7
+ pl_replace(String.polish_chars('small') + ('a'..'z').to_a, String.polish_chars('big') + ('A'..'Z').to_a)
8
+ end
9
+
10
+ def upcase!
11
+ replace upcase
9
12
  end
10
13
 
11
- # zmień wszystkie litery na małe (łącznie z polskimi)
12
14
  def downcase
13
- # jak wyżej, ale odwrotnie
14
- gsub(/[A-Z#{String.polish_chars('big').join('')}]/) { |s| (('a'..'z').to_a + String.polish_chars('small'))[(('A'..'Z').to_a + String.polish_chars('big')).index(s)] }
15
+ # pl_replace z tablicy dużych liter na tablicę małych liter
16
+ pl_replace(String.polish_chars('small') + ('A'..'Z').to_a, String.polish_chars('small') + ('A'..'Z').to_a)
17
+ end
18
+
19
+ def downcase!
20
+ replace downcase
15
21
  end
16
22
 
17
- # usuń polskie ogonki (łącznie z polskimi)
18
23
  def no_pl
19
- # jak wyżej, ale tablicami polskie znaki małe i duże, oraz ich odpowiedniki ASCII
20
- gsub(/[#{String.polish_chars.join('')}]/) { |s| %w[a e s c z z o l n A E S C Z Z O L N][String.polish_chars.index(s)] }
24
+ # pl_replace z tablicy polskich małych i dużych liter na tablicę odpowiadających im kodów ascii
25
+ pl_replace(String.polish_chars, ('a'..'z').to_a + ('A'..'Z').to_a)
21
26
  end
22
27
 
23
28
  def no_pl!
24
29
  replace no_pl
25
30
  end
26
31
 
27
- # pierwsza litera duża, reszta mała
32
+ # pierwsza litera upcase, reszta downcase
28
33
  def capitalize
29
- self[0].to_s.upcase + self[1..size].to_s.downcase
30
- end
31
-
32
- def upcase!
33
- replace upcase
34
- end
35
-
36
- def downcase!
37
- replace downcase
34
+ s = self.downcase
35
+ s[0] = s[0].upcase if s.size > 0
36
+ s
38
37
  end
39
38
 
40
39
  def capitalize!
41
40
  replace capitalize
42
41
  end
43
42
 
44
- # polskie znaki, np do użycia z regexp
45
- # ('small' => tylko małe, 'big' => tylko duże, 'all' lub pusty => wszystkie)
43
+ # tablica polskich znaków, np do użycia z regexpami jako zakres
44
+ # ('small' => tylko małe, 'big' => tylko duże, 'all' lub brak => wszystkie)
46
45
  def self.polish_chars(size = 'all')
47
46
  small = %w[ą ę ś ć ź ż ó ł ń]
48
47
  big = %w[Ą Ę Ś Ć Ź Ż Ó Ł Ń]
@@ -55,4 +54,11 @@ class ::String
55
54
  small + big
56
55
  end
57
56
  end
57
+
58
+ protected
59
+
60
+ # zamienia znaki z tablicy search na tablicę replace
61
+ def pl_replace(search, replace)
62
+ self.chars.collect{|c| (id = search.index(c)) ? replace[id] : c}.join('')
63
+ end
58
64
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 4
9
- version: 0.0.4
8
+ - 5
9
+ version: 0.0.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - v1x100r
@@ -18,7 +18,7 @@ date: 2011-02-18 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
21
- description: "Funkcje upcase, downcase, capitalize, upcase!, downcase!, capitalize! obs\xC5\x82uguj\xC4\x85 od teraz polskie znaki. Dodatkowo 2 nowe funkcje no_pl i no_pl! kt\xC3\xB3re czyszcz\xC4\x85 ogonki ze znak\xC3\xB3w, oraz metoda String.polish_chars pobieraj\xC4\x85ca tablic\xC4\x99 z polskimi literami."
21
+ description:
22
22
  email: v1x100r@gmail.com
23
23
  executables: []
24
24