polskie_stringi 0.0.4 → 0.0.5

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. 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