srbovanje 0.2.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9351fb2b851d7e159a9a63bfd5aaff6919cc2f7053611f3b5e3aeb10534d19b0
4
+ data.tar.gz: 796729f730d2fb9b8543ef41daa19c847671a5eef9932b430e68648a4d285388
5
+ SHA512:
6
+ metadata.gz: a3e19ef6cd872795828934f031c82e008d8a63082b665541b7c45c566221f048272e0ff87c5e44452e78b189d6a53e887ebfdca2642ea278e7b8e9b9baef160c
7
+ data.tar.gz: 53381427a41bec21bf586c3c3054e93df5fb3fc58ffaae5b5f4ff9251d5ded2949a81aabe807d4aa2bad046dd5b45dadced21804d0824638884819a746ccff80
@@ -0,0 +1,30 @@
1
+ ## 2.0.0, 2014-07-13
2
+ * preimenovana metoda na_latinici => latinicom
3
+ * utisan warning "[deprecated] I18n.enforce_available_locales will default to true in the future..."
4
+
5
+ ## 1.0.2, 2013-02-26
6
+ * Railtie za i18n konfigurisanje
7
+
8
+ ## 1.0.1, 2013-02-26
9
+ * Konfigurisanje i18n preslovljavanja
10
+
11
+ ## 1.0.0, 2013-02-25
12
+ * Novi, čistiji API; izbačen slugify
13
+
14
+ ## 0.2.1, 2011-01-05
15
+ * Ruby 1.9.2 fix: upozorenja
16
+ * Ruby 1.9.2 fix: load path za testove
17
+
18
+ ## 0.2.0, 2011-01-05
19
+ * Fix nadogradnje Stringa upotrebom String.class_eval metode
20
+ * Ruby 1.9 podrška
21
+
22
+ ## 0.1.0, 2009-03-14
23
+ * String#slugify
24
+
25
+ ## 0.0.2, 2009-03-12
26
+ * "danger" metode (recode_sr_latin!, recode_sr_ascii_latin!)
27
+ * String.abeceda
28
+
29
+ ## 0.0.1, 2009-03-12
30
+ * Inicijalna verzija
data/README.md CHANGED
@@ -1,33 +1,73 @@
1
1
  srbovanje
2
2
  =========
3
3
 
4
- Ruby gem za transliteraciju ćirilice na latinicu i tzv. ASCII latinicu
4
+ Ruby gem za preslovanjavanje ćirilice na latinicu i tzv. "ošišanu" latinicu
5
5
 
6
6
 
7
7
  ## Instaliranje
8
8
 
9
- gem install srbovanje
9
+ U Gemfile projekta dodajte:
10
+
11
+ gem 'srbovanje'
10
12
 
11
13
 
12
14
  ## Korišćenje
13
15
 
14
- >> "Ђурђевак".recode_sr_latin
16
+ >> "Ђурђевак".latinicom
15
17
  => "Đurđevak"
16
18
 
17
- >> "Железница Србије".recode_sr_ascii_latin
18
- => "Zeleznica Srbije"
19
+ >> "Ђурђевак".latinicom_ascii
20
+ => "DJurdjevak"
19
21
 
20
- >> "Железница Србије".slugify
21
- => "zeleznica-srbije"
22
+ Ako zatreba, tu je i niz sa slovima abecede:
22
23
 
23
- >> String.abeceda
24
+ >> Srbovanje.abeceda
24
25
  => ["A", "B", "C", "Č", "Ć", "D", "DŽ", "Đ", "E", "F", "G", "H", "I", "J", "K", "L", "LJ", "M", "N", "NJ", "O", "P", "R", "S", "Š", "T", "U", "V", "Z", "Ž"]
25
26
 
26
- ## Zašto "recode_sr_latin" kao naziv metode?
27
27
 
28
- Zbog <http://man.he.net/man1/recode-sr-latin>
28
+ Ako koristite Srbovanje uz Rails dobićete setovana pravila za preslovljavanja
29
+ koje koristi i18n gem, tako da će npr. parameterize raditi pravilnije:
30
+
31
+ ## bez Srbovanja
32
+
33
+ >> "Karađorđeva šnicla".parameterize
34
+ => "karadordeva-snicla"
35
+
36
+ >> "Шабан Шаулић".parameterize
37
+ => ""
38
+
39
+ ## uz Srbovanje
40
+
41
+ >> "Karađorđeva šnicla".parameterize
42
+ => "karadjordjeva-snicla"
43
+
44
+ >> "Шабан Шаулић".parameterize
45
+ => "saban-saulic"
46
+
47
+ ## Slični projekti
48
+
49
+ * [Byk](https://github.com/topalovic/byk) - zavidno brža varijanta zahvaljujući C ekstenziji
50
+ * [preslovi](https://github.com/dejan/preslovi) - go paket i šel komanda
51
+
52
+ ## MIT Licence
53
+
54
+ Copyright (c) 2009 Dejan Simic
29
55
 
56
+ Permission is hereby granted, free of charge, to any person obtaining
57
+ a copy of this software and associated documentation files (the
58
+ "Software"), to deal in the Software without restriction, including
59
+ without limitation the rights to use, copy, modify, merge, publish,
60
+ distribute, sublicense, and/or sell copies of the Software, and to
61
+ permit persons to whom the Software is furnished to do so, subject to
62
+ the following conditions:
30
63
 
31
- ## Autor
64
+ The above copyright notice and this permission notice shall be
65
+ included in all copies or substantial portions of the Software.
32
66
 
33
- [Dejan Simić](http://github.com/dejan)
67
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
68
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
69
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
70
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
71
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
72
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
73
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1 @@
1
+ I18n.backend.store_translations(:sr, :i18n => {:transliterate => {:rule => Srbovanje::LATINICA_ASCII_MAP }})
@@ -1,5 +1,15 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  $KCODE = 'UTF8' if RUBY_VERSION.to_f < 1.9
4
4
 
5
- require 'srbovanje/string_ext.rb'
5
+ require 'srbovanje/srbovanje'
6
+ require 'srbovanje/string_ext'
7
+
8
+ if defined?(Rails)
9
+ require 'srbovanje/railtie'
10
+ elsif defined?(I18n)
11
+ require 'i18n_config'
12
+ end
13
+
14
+ module Srbovanje
15
+ end
@@ -0,0 +1,9 @@
1
+ module Srbovanje
2
+ class Railtie < Rails::Railtie
3
+ config.i18n.enforce_available_locales = true
4
+ config.i18n.default_locale = :sr
5
+ config.after_initialize do
6
+ require 'i18n_config'
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,113 @@
1
+ # encoding: utf-8
2
+
3
+ module Srbovanje
4
+
5
+ ABECEDA = %w(A B C Č Ć D DŽ Đ E F G H I J K L LJ M N NJ O P R S Š T U V Z Ž)
6
+
7
+ LATINICA_FULL_MAP = {
8
+ 'а' => 'a',
9
+ 'А' => 'A',
10
+ 'б' => 'b',
11
+ 'Б' => 'B',
12
+ 'в' => 'v',
13
+ 'В' => 'V',
14
+ 'г' => 'g',
15
+ 'Г' => 'G',
16
+ 'д' => 'd',
17
+ 'Д' => 'D',
18
+ 'ђ' => 'đ',
19
+ 'Ђ' => 'Đ',
20
+ 'е' => 'e',
21
+ 'Е' => 'E',
22
+ 'ж' => 'ž',
23
+ 'Ж' => 'Ž',
24
+ 'з' => 'z',
25
+ 'З' => 'Z',
26
+ 'и' => 'i',
27
+ 'И' => 'I',
28
+ 'ј' => 'j',
29
+ 'Ј' => 'J',
30
+ 'к' => 'k',
31
+ 'К' => 'K',
32
+ 'л' => 'l',
33
+ 'Л' => 'L',
34
+ 'љ' => 'lj',
35
+ 'Љ' => 'LJ',
36
+ 'м' => 'm',
37
+ 'М' => 'M',
38
+ 'н' => 'n',
39
+ 'Н' => 'N',
40
+ 'њ' => 'nj',
41
+ 'Њ' => 'NJ',
42
+ 'о' => 'o',
43
+ 'О' => 'O',
44
+ 'п' => 'p',
45
+ 'П' => 'P',
46
+ 'р' => 'r',
47
+ 'Р' => 'R',
48
+ 'с' => 's',
49
+ 'С' => 'S',
50
+ 'т' => 't',
51
+ 'Т' => 'T',
52
+ 'ћ' => 'ć',
53
+ 'Ћ' => 'Ć',
54
+ 'ц' => 'c',
55
+ 'Ц' => 'C',
56
+ 'у' => 'u',
57
+ 'У' => 'U',
58
+ 'ф' => 'f',
59
+ 'Ф' => 'F',
60
+ 'х' => 'h',
61
+ 'Х' => 'H',
62
+ 'ч' => 'č',
63
+ 'Ч' => 'Č',
64
+ 'џ' => 'dž',
65
+ 'Џ' => 'DŽ',
66
+ 'ш' => 'š',
67
+ 'Ш' => 'Š'
68
+ }
69
+
70
+ LATINICA_ASCII_MAP = LATINICA_FULL_MAP.merge(
71
+ 'ћ' => 'c',
72
+ 'ć' => 'c',
73
+ 'ч' => 'c',
74
+ 'č' => 'c',
75
+ 'Ћ' => 'C',
76
+ 'Ć' => 'C',
77
+ 'Ч' => 'C',
78
+ 'Č' => 'C',
79
+ 'ж' => 'z',
80
+ 'ž' => 'z',
81
+ 'Ж' => 'Z',
82
+ 'Ž' => 'Z',
83
+ 'š' => 's',
84
+ 'ш' => 's',
85
+ 'Ш' => 'S',
86
+ 'Š' => 'S',
87
+ 'đ' => 'dj',
88
+ 'ђ' => 'dj',
89
+ 'Ђ' => 'DJ',
90
+ 'Đ' => 'DJ',
91
+ 'џ' => 'dz',
92
+ 'Џ' => 'DZ'
93
+ )
94
+
95
+ LATINICOM_REGEXP = Regexp.union(LATINICA_FULL_MAP.keys)
96
+
97
+ LATINICA_ASCII_REGEXP = Regexp.union(LATINICA_ASCII_MAP.keys)
98
+
99
+ def latinicom(text)
100
+ text.gsub(LATINICOM_REGEXP, LATINICA_FULL_MAP)
101
+ end
102
+
103
+ def latinicom_ascii(text)
104
+ text.gsub(LATINICA_ASCII_REGEXP, LATINICA_ASCII_MAP)
105
+ end
106
+
107
+ def abeceda
108
+ ABECEDA
109
+ end
110
+
111
+ extend self
112
+
113
+ end
@@ -1,154 +1,15 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
3
  String.class_eval do
4
- def self.recode_sr_latin_map
5
- @@recode_sr_latin_map ||= {
6
- 'а' => 'a',
7
- 'А' => 'A',
8
- 'б' => 'b',
9
- 'Б' => 'B',
10
- 'в' => 'v',
11
- 'В' => 'V',
12
- 'г' => 'g',
13
- 'Г' => 'G',
14
- 'д' => 'd',
15
- 'Д' => 'D',
16
- 'ђ' => 'đ',
17
- 'Ђ' => 'Đ',
18
- 'е' => 'e',
19
- 'Е' => 'E',
20
- 'ж' => 'ž',
21
- 'Ж' => 'Ž',
22
- 'з' => 'z',
23
- 'З' => 'Z',
24
- 'и' => 'i',
25
- 'И' => 'I',
26
- 'ј' => 'j',
27
- 'Ј' => 'J',
28
- 'к' => 'k',
29
- 'К' => 'K',
30
- 'л' => 'l',
31
- 'Л' => 'L',
32
- 'љ' => 'lj',
33
- 'Љ' => 'LJ',
34
- 'м' => 'm',
35
- 'М' => 'M',
36
- 'н' => 'n',
37
- 'Н' => 'N',
38
- 'њ' => 'nj',
39
- 'Њ' => 'NJ',
40
- 'о' => 'o',
41
- 'О' => 'O',
42
- 'п' => 'p',
43
- 'П' => 'P',
44
- 'р' => 'r',
45
- 'Р' => 'R',
46
- 'с' => 's',
47
- 'С' => 'S',
48
- 'т' => 't',
49
- 'Т' => 'T',
50
- 'ћ' => 'ć',
51
- 'Ћ' => 'Ć',
52
- 'ц' => 'c',
53
- 'Ц' => 'C',
54
- 'у' => 'u',
55
- 'У' => 'U',
56
- 'ф' => 'f',
57
- 'Ф' => 'F',
58
- 'х' => 'h',
59
- 'Х' => 'H',
60
- 'ч' => 'č',
61
- 'Ч' => 'Č',
62
- 'џ' => 'dž',
63
- 'Џ' => 'DŽ',
64
- 'ш' => 'š',
65
- 'Ш' => 'Š' }
66
- end
67
-
68
- def self.recode_sr_ascii_latin_map
69
- @@recode_sr_ascii_latin_map ||=
70
- recode_sr_latin_map.merge(
71
- 'ћ' => 'c',
72
- 'ć' => 'c',
73
- 'ч' => 'c',
74
- 'č' => 'c',
75
- 'Ћ' => 'C',
76
- 'Ć' => 'C',
77
- 'Ч' => 'C',
78
- 'Č' => 'C',
79
- 'ж' => 'z',
80
- 'ž' => 'z',
81
- 'Ж' => 'Z',
82
- 'Ž' => 'Z',
83
- 'š' => 's',
84
- 'ш' => 's',
85
- 'Ш' => 'S',
86
- 'Š' => 'S',
87
- 'đ' => 'dj',
88
- 'ђ' => 'dj',
89
- 'Ђ' => 'DJ',
90
- 'Đ' => 'DJ',
91
- 'џ' => 'dz',
92
- 'Џ' => 'DZ')
93
- end
94
-
95
- def self.abeceda
96
- @@abeceda ||= %w(A B C Č Ć D DŽ Đ E F G H I J K L LJ M N NJ O P R S Š T U V Z Ž)
97
- end
98
-
99
- def recode_sr_latin
100
- self.class.recode(self.dup, self.class.recode_sr_latin_map)
101
- end
102
-
103
- def recode_sr_latin!
104
- self.class.recode(self, self.class.recode_sr_latin_map)
105
- end
106
-
107
- def recode_sr_ascii_latin
108
- self.class.recode(self.dup, self.class.recode_sr_ascii_latin_map)
109
- end
110
4
 
111
- def recode_sr_ascii_latin!
112
- self.class.recode(self, self.class.recode_sr_ascii_latin_map)
5
+ # Preslovljava na latinicu
6
+ def latinicom
7
+ Srbovanje.latinicom(self)
113
8
  end
114
9
 
115
- def slugify(separator = '-', return_separator_if_empty = true)
116
- s = parameterize(self.recode_sr_ascii_latin, separator)
117
- s.empty? && return_separator_if_empty ? separator : s
10
+ # Preslovljava na ASCII ("ošišanu") latinicu
11
+ def latinicom_ascii
12
+ Srbovanje.latinicom_ascii(self)
118
13
  end
119
14
 
120
- private
121
-
122
- # NOTE: slighlty modified after porting from ActiveSupport
123
- #
124
- # Replaces special characters in a string so that it may be used as part of a 'pretty' URL.
125
- #
126
- # ==== Examples
127
- #
128
- # @person = Person.find(1)
129
- # # => #<Person id: 1, name: "Donald E. Knuth">
130
- #
131
- # <%= link_to(@person.name, person_path(@person)) %>
132
- # # => <a href="/person/1-donald-e-knuth">Donald E. Knuth</a>
133
- #
134
- def parameterize(string, sep = '-')
135
- # nil is same as blank
136
- sep = sep || ''
137
- parameterized_string = string.gsub(/[^a-z0-9\-_\+]+/i, sep)
138
- # Turn unwanted chars into the seperator
139
- unless sep.empty?
140
- re_sep = Regexp.escape(sep)
141
- # No more than one of the separator in a row.
142
- parameterized_string.gsub!(/#{re_sep}{2,}/, sep)
143
- # Remove leading/trailing separator.
144
- parameterized_string.gsub!(/^#{re_sep}|#{re_sep}$/i, '')
145
- end
146
- parameterized_string.downcase
147
- end
148
-
149
- def self.recode(str, mapping)
150
- str.gsub!(/.+?/) do |chr|
151
- mapping[chr] || chr
152
- end
153
- end
154
15
  end
metadata CHANGED
@@ -1,72 +1,49 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: srbovanje
3
- version: !ruby/object:Gem::Version
4
- hash: 21
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 2
9
- - 1
10
- version: 0.2.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.1.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Dejan Simic
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2011-01-05 00:00:00 +01:00
19
- default_executable:
11
+ date: 2020-08-30 00:00:00.000000000 Z
20
12
  dependencies: []
21
-
22
- description: "Ruby gem za transliteraciju \xC4\x87irilice na latinicu i tzv. ASCII latinicu."
13
+ description: Transliteracija ćirilice na latinicu i tzv. ASCII latinicu.
23
14
  email: desimic@gmail.com
24
15
  executables: []
25
-
26
16
  extensions: []
27
-
28
17
  extra_rdoc_files: []
29
-
30
- files:
31
- - Rakefile
32
- - lib/srbovanje/string_ext.rb
33
- - lib/srbovanje.rb
34
- - test/string_ext_test.rb
35
- - test/test_helper.rb
18
+ files:
19
+ - CHANGELOG.md
36
20
  - README.md
37
- has_rdoc: true
38
- homepage: http://github.com/dejan/srbovanje
39
- licenses: []
40
-
21
+ - lib/i18n_config.rb
22
+ - lib/srbovanje.rb
23
+ - lib/srbovanje/railtie.rb
24
+ - lib/srbovanje/srbovanje.rb
25
+ - lib/srbovanje/string_ext.rb
26
+ homepage: https://github.com/dejan/srbovanje
27
+ licenses:
28
+ - MIT
29
+ metadata: {}
41
30
  post_install_message:
42
31
  rdoc_options: []
43
-
44
- require_paths:
32
+ require_paths:
45
33
  - lib
46
- required_ruby_version: !ruby/object:Gem::Requirement
47
- none: false
48
- requirements:
34
+ required_ruby_version: !ruby/object:Gem::Requirement
35
+ requirements:
49
36
  - - ">="
50
- - !ruby/object:Gem::Version
51
- hash: 3
52
- segments:
53
- - 0
54
- version: "0"
55
- required_rubygems_version: !ruby/object:Gem::Requirement
56
- none: false
57
- requirements:
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ required_rubygems_version: !ruby/object:Gem::Requirement
40
+ requirements:
58
41
  - - ">="
59
- - !ruby/object:Gem::Version
60
- hash: 3
61
- segments:
62
- - 0
63
- version: "0"
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
64
44
  requirements: []
65
-
66
- rubyforge_project:
67
- rubygems_version: 1.3.7
45
+ rubygems_version: 3.1.2
68
46
  signing_key:
69
- specification_version: 3
70
- summary: "Ruby gem za transliteraciju \xC4\x87irilice na latinicu i tzv. ASCII latinicu."
47
+ specification_version: 4
48
+ summary: Transliteracija ćirilice na latinicu i tzv. ASCII latinicu.
71
49
  test_files: []
72
-
data/Rakefile DELETED
@@ -1,6 +0,0 @@
1
- require 'rake/testtask'
2
-
3
- desc 'Test srbovanje'
4
- Rake::TestTask.new(:test) do |t|
5
- t.pattern = 'test/**/*_test.rb'
6
- end
@@ -1,65 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- $: << "."
3
-
4
- require File.dirname(__FILE__) + '/test_helper'
5
-
6
- class TestStringExt < Test::Unit::TestCase
7
- def test_recode_sr_latin
8
- # don't change argument
9
- str = "ЊЕГОШ"
10
- assert_equal("NJEGOŠ", str.recode_sr_latin)
11
- assert_equal("ЊЕГОШ", str)
12
-
13
- # plain
14
- assert_equal("NJEGOŠ", "ЊЕГОШ".recode_sr_latin)
15
- assert_equal("Šaban Šaulić", "Шабан Шаулић".recode_sr_latin)
16
- assert_equal("elektrodistribucija", "електродистрибуција".recode_sr_latin)
17
- assert_equal("Đurđevak", "Ђурђевак".recode_sr_latin)
18
-
19
- # non_convertive_characters
20
- assert_equal("Latinica", "Latinica".recode_sr_latin)
21
- assert_equal('[]2#}(,.);2@$"', '[]2#}(,.);2@$"'.recode_sr_latin)
22
- end
23
-
24
- def test_recode_sr_latin!
25
- str = "ноћ"
26
- assert_equal("noć", str.recode_sr_latin!)
27
- assert_equal("noć", str)
28
- end
29
-
30
- def test_recode_sr_ascii_latin
31
- str = "Железница Србије"
32
- assert_equal("Zeleznica Srbije", str.recode_sr_ascii_latin)
33
- assert_equal("Железница Србије", str)
34
- end
35
-
36
- def test_recode_sr_ascii_latin!
37
- str = "ноћ"
38
- assert_equal("noc", str.recode_sr_ascii_latin!)
39
- assert_equal("noc", str)
40
- end
41
-
42
- def test_abeceda
43
- assert_equal(30, String.abeceda.size)
44
- end
45
-
46
- def test_slugify
47
- assert_equal("zeleznica-srbije", "Железница Србије".slugify)
48
- assert_equal("kako-je", "Kako je?".slugify)
49
- assert_equal("mis-zaba", "miš,žaba".slugify)
50
- assert_equal("mis-zaba", "миш, жаба".slugify)
51
- assert_equal("agencija", " aGenCIJa ".slugify)
52
- assert_equal("vamo-tamo", "vamo-tamo".slugify)
53
- assert_equal("vamo-tamo", "vamo tamo".slugify)
54
- assert_equal("pokvarenspejs", "Pokvaren Spejs".slugify(nil))
55
- assert_equal("abcdeavioni", "a b c d e avioni".slugify(''))
56
- assert_equal("-", "び諸芸や奇抜な衣装".slugify)
57
- assert_equal("-", "び諸芸や奇 抜な衣 装 び諸芸や 奇抜な衣装".slugify)
58
- assert_equal("", "び諸芸や奇抜な衣装".slugify('-', false))
59
- assert_equal("-", "び諸芸や奇抜な衣装".slugify('-', true))
60
- assert_equal("+", "び諸芸や奇抜な衣装 び諸芸や奇抜な衣装".slugify('+'))
61
- assert_equal("ako-ako", 'ako, ako'.slugify)
62
- assert_equal("ako-ako", 'ako,ako'.slugify)
63
- assert_equal("ako-ako", 'ako ako'.slugify)
64
- end
65
- end
@@ -1,5 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- require "test/unit"
4
-
5
- require File.dirname(__FILE__) + '/../lib/srbovanje'