byk 0.4.0 → 1.1.0

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