byk 0.4.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 2fb4e839b91bf3348e5c59e0e52b97bbbaec43de
4
- data.tar.gz: 1a5d496e1fe684cba330eed517c3b8de5ad573a0
2
+ SHA256:
3
+ metadata.gz: 5cb843eb31c5c618dc10608759b5668bd8db46eb38911381bacd693f9b4635bf
4
+ data.tar.gz: '0085a83cbf114273d5fc9b64cca6d8d4c19542a36614eb8d89c80eb0b036176f'
5
5
  SHA512:
6
- metadata.gz: 9fc2e29e20dad1e0c517afd3c35d60340f256ce44bcda71a9e2fb344be4b685c2fa3b85350dd347e890143c6f9a84a94896eec9df0bfb8ec9b7be8811907053f
7
- data.tar.gz: c81f02b4075cdc5b82b3f17f47fb4ea74dbcfa29bbe466731c685ec5a7b3d1c54b329075eb8c2d1731b76f03b9bf9b24646ea3aeff88f8ab17577297d0bae960
6
+ metadata.gz: 4fc4c750b29da3cf64b5d0cea0275f41e7f5cae4192a223e0d1f344505e8ab6c045b1b772f29d954ca4310062b9ff7ac1b07d1d6dc17a5c6d8969f03f7f94340
7
+ data.tar.gz: f8909c3816411619ca8a2239b07d0bc9aa48663ac5395f4a8d6fd6735d5c8f252ff98977dcba970b5a3c21eae9bf55f63fd40e75ad0918f4f670a5e2b24ca239
data/CHANGELOG.md CHANGED
@@ -1,9 +1,29 @@
1
1
  # Changelog
2
2
 
3
+ ### Byk 1.1.0 (2022-02-02)
4
+
5
+ * Removed string tainting, it is deprecated and planned for removal
6
+ * Upgraded development dependencies and required Ruby version
7
+
8
+ ### Byk 1.0.0 (2016-04-09)
9
+
10
+ * Introduced `#to_cyrillic` and `#to_cyrillic!`
11
+ * Introduced console utility
12
+
13
+ ### Byk 0.6.0 (2015-04-25)
14
+
15
+ * Introduced module methods and the optional safe require
16
+ * Documented the methods
17
+ * Upgraded spec suite
18
+
19
+ ### Byk 0.5.0 (2015-04-18)
20
+
21
+ * Performance tuning and refactoring, up to 5x speedup
22
+ * Dropped the unused optional arg
23
+
3
24
  ### Byk 0.4.0 (2015-04-17)
4
25
 
5
- * Performance tuning and refactoring, ~10% speedup
6
- * Updated benchmark
26
+ * Performance tuning and refactoring
7
27
  * Introduced changelog
8
28
 
9
29
  ### Byk 0.3.0 (2015-04-16)
data/README.md CHANGED
@@ -2,100 +2,151 @@ Byk
2
2
  ===
3
3
 
4
4
  [![Gem Version](https://badge.fury.io/rb/byk.svg)](https://rubygems.org/gems/byk)
5
- [![Build Status](https://travis-ci.org/topalovic/byk.svg?branch=master)](https://travis-ci.org/topalovic/byk)
5
+ [![tests](https://github.com/topalovic/byk/actions/workflows/tests.yml/badge.svg)](https://github.com/topalovic/byk/actions/workflows/tests.yml)
6
6
 
7
- Ruby gem for fast transliteration of Serbian Cyrillic into Latin
8
- <br />
9
- <sub>Inspired by @dejan's
10
- [nice little gem](https://github.com/dejan/srbovanje),
11
- this one comes with a C-optimized twist</sub>
7
+ Руби пакет за брзо пресловљавање ћирилице у латиницу и обратно
12
8
 
13
9
  ![byk](https://cloud.githubusercontent.com/assets/626128/7155207/07545960-e35d-11e4-804e-5fdee70a3e30.png)
14
10
 
11
+ [[English, please!](README.en.md)]
15
12
 
16
- ## Installation
13
+ ## Инсталација
17
14
 
18
- Add this line to your application's Gemfile:
15
+ Byk се може користити као самостални конзолни алат или као `String` додатак у Руби програмима. Не зависи ни од каквих пакета поред програмског језика Руби и стандардних алата за компајлирање <sup>1</sup>.
16
+
17
+ Можеш га инсталирати директно:
18
+
19
+ ```ruby
20
+ $ gem install byk
21
+ ```
22
+
23
+ или додати у `Gemfile` своје апликације:
19
24
 
20
25
  ```ruby
21
26
  gem "byk"
22
27
  ```
23
28
 
24
- And then execute:
29
+ <sub><sup>1</sup> За Windows, види [DevKit](https://github.com/oneclick/rubyinstaller/wiki/Development-Kit)</sub>
30
+
31
+
32
+ ## Употреба
33
+
34
+ ### Као самостални алат
35
+
36
+ Ево прегледа могућности конзолног алата:
25
37
 
26
38
  ```
27
- $ bundle
39
+ $ byk --help
40
+ usage: byk [options] [files]
41
+
42
+ options:
43
+ -c, --cyrillic convert input to Cyrillic (default)
44
+ -l, --latin convert input to Latin
45
+ -a, --ascii convert input to "ASCII Latin"
46
+ -v, --version show version
28
47
  ```
29
48
 
30
- Or install it yourself as:
49
+ За превод лету", проследи текст команди:
31
50
 
51
+ ```sh
52
+ $ byk -a <<< "Вук Стефановић Караџић"
53
+ Vuk Stefanovic Karadzic
32
54
  ```
33
- $ gem install byk
55
+
56
+ Алтернативно, позови команду, унеси текст за превод и обележи крај уноса помоћу <kbd>Ctrl</kbd> <kbd>D</kbd>:
57
+
58
+ ```sh
59
+ $ byk
60
+ a u ruke Mandušića Vuka
61
+ biće svaka puška ubojita!
62
+ ^D
63
+ а у руке Мандушића Вука
64
+ биће свака пушка убојита!
65
+ ```
66
+
67
+ Превод се шаље на стандардни излаз, те га можеш преусмерити по потреби. На пример, за превод текстуалне датотеке на ћирилицу и чување превода:
68
+
69
+ ```sh
70
+ $ byk lat.txt > cir.txt
34
71
  ```
35
72
 
36
73
 
37
- ## Usage
74
+ ### Као `String` додатак
38
75
 
39
- First, make sure to require the gem in your initializer:
76
+ У случају да не користиш Bundler, увези пакет "ручно":
40
77
 
41
78
  ```ruby
42
79
  require "byk"
43
80
  ```
44
81
 
45
- This will extend `String` with a couple of simple methods:
82
+ што ће проширити `String` новим методама:
46
83
 
47
84
  ```ruby
48
- "Шеширџија".to_latin # => "Šeširdžija"
49
- "Шеширџија".to_ascii_latin # => "Sesirdzija"
50
- "Šeširdžija".to_ascii_latin # => "Sesirdzija"
85
+ "Šeširdžija".to_cyrillic #=> "Шеширџија"
86
+ "Шеширџија".to_latin #=> "Šeširdžija"
87
+ "Шеширџија".to_ascii_latin #=> "Sesirdzija"
51
88
  ```
52
89
 
53
- There's also a destructive variant of each:
90
+ и њиховим деструктивним верзијама:
54
91
 
55
92
  ```ruby
56
- text = "Жвазбука"
57
- text.to_latin! # => "Žvazbuka"
58
- text # => "Žvazbuka"
59
- text.to_ascii_latin! # => "Zvazbuka"
60
- text # => "Zvazbuka"
93
+ text = "Šeširdžija"
94
+ text.to_ascii_latin! #=> "Sesirdzija"
95
+ text #=> "Sesirdzija"
61
96
  ```
62
97
 
63
- Note that these methods take into account the
64
- [two-letter capitalization rules](http://sr.wikipedia.org/wiki/Gajica#Abeceda):
98
+ #### "Безбедан" увоз
99
+
100
+ У случају да не желиш да проширујеш `String`, можеш извршити "безбедан" увоз:
101
+
102
+ ```ruby
103
+ # унутар Gemfile-а:
104
+ gem "byk", require: "byk/safe"
105
+
106
+ # иначе:
107
+ require "byk/safe"
108
+ ```
109
+
110
+ па се ослонити на методе модула:
65
111
 
66
112
  ```ruby
67
- "ЉИЉА Љиљановић".to_latin # => "LJILJA Ljiljanović"
68
- "ĐORĐE Đorđević".to_ascii_latin # => "DJORDJE Djordjevic"
113
+ Byk.to_latin("Жвазбука") #=> "Žvazbuka"
69
114
  ```
70
115
 
71
116
 
72
- ## How fast is fast?
117
+ ## Напомене
73
118
 
74
- About [7-8x faster](benchmark) than the baseline Ruby implementation on
75
- my hardware. YMMV of course.
119
+ Ретки случајеви диграфа које треба сачувати код превођења у ћирилицу нису узети у разматрање: _Танјуг_, _надживети_ и слично.
76
120
 
121
+ С друге стране, методе за латинизацију исправно преводе [велике диграфе](http://sr.wikipedia.org/wiki/Гајица#.D0.94.D0.B8.D0.B3.D1.80.D0.B0.D1.84.D0.B8):
77
122
 
78
- ## Raison d'être
123
+ ```ruby
124
+ "ЉИЉА Љ. Љиљановић".to_latin #=> "LJILJA Lj. Ljiljanović"
125
+ "ĐORĐE Đ. Đorđević".to_ascii_latin #=> "DJORDJE Dj. Djordjevic"
126
+ ```
79
127
 
80
- This kind of speed-up might be worthwhile for massive localization
81
- projects, e.g. sites supporting dual script content. Remember,
82
- `Benchmark` is your friend.
83
128
 
84
- I found transliteration to be a straightforward little problem that
85
- lends itself well to optimization. It also gave me an excuse to play
86
- with Ruby extensions, so there :smile_cat:
129
+ ## Колико брзо је "брзо" пресловљавање?
130
+
131
+ Byk је [10-30x бржи](benchmark) од [наивне Руби имплементације](https://github.com/dejan/srbovanje), у зависности од састава улаза и смера превођења.
132
+
133
+
134
+ ## Тестирање
135
+
136
+ Клонирај пројекат и покрени тестове:
137
+
138
+ ```
139
+ $ bundle && bundle exec rake
140
+ ```
87
141
 
88
142
 
89
- ## Compatibility
143
+ ## Компатибилност
90
144
 
91
- Byk is supported under MRI Ruby >= 1.9.2. I don't plan to support
92
- 1.8.7 or older due to substantial C API changes between 1.8 and
93
- 1.9. It doesn't build under Rubinius currently, but I intend to
94
- support it in future releases.
145
+ Byk је подржан само на стандардном Рубију (MRI).
95
146
 
96
147
 
97
- ## License
148
+ ## Лиценца
98
149
 
99
- This gem is released under the [MIT License](http://www.opensource.org/licenses/MIT).
150
+ Овај пакет је објављен под [МИТ лиценцом](LICENSE).
100
151
 
101
152
  Уздравље!
data/exe/byk ADDED
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "byk/safe"
4
+ require "optparse"
5
+
6
+ trap "SIGINT" do
7
+ exit 130
8
+ end
9
+
10
+ method_name = :to_cyrillic
11
+
12
+ opts = OptionParser.new do |opt|
13
+ opt.banner = "usage: byk [options] [files]"
14
+ opt.summary_width = 20
15
+
16
+ opt.separator ""
17
+ opt.separator "options:"
18
+
19
+ opt.on("-c", "--cyrillic", "convert input to Cyrillic (default)") do
20
+ method_name = :to_cyrillic
21
+ end
22
+
23
+ opt.on("-l", "--latin", "convert input to Latin") do
24
+ method_name = :to_latin
25
+ end
26
+
27
+ opt.on("-a", "--ascii", 'convert input to "ASCII Latin"') do
28
+ method_name = :to_ascii_latin
29
+ end
30
+
31
+ opt.on_tail("-v", "--version", "show version") do
32
+ puts Byk::VERSION
33
+ exit
34
+ end
35
+ end
36
+
37
+ begin
38
+ opts.parse!
39
+ rescue OptionParser::InvalidOption => e
40
+ puts e
41
+ puts
42
+ puts opts
43
+ exit 1
44
+ end
45
+
46
+ begin
47
+ puts Byk.send(method_name, ARGF.read)
48
+ rescue => e
49
+ puts e
50
+ exit 1
51
+ end