st_tools 0.3.10 → 0.3.11
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 +4 -4
- data/README.md +37 -32
- data/lib/st_tools/fias.rb +37 -0
- data/lib/st_tools/string.rb +1 -1
- data/lib/st_tools/version.rb +1 -1
- data/test/fias_lib_spec.rb +30 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3842bbc50514362b84e3a229f04b313aa21c68e
|
4
|
+
data.tar.gz: e43193a68071b6893357ad8aa03081d1280b9952
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04754e6087f7fd740302725a6e996817439568da7d7f93920bc21f1e0761522b5c34830c422324567e94bad4a4f181c2d39335147a880669d98c22a466c9f632
|
7
|
+
data.tar.gz: f75bfd06a9143b3110ea550fb06806c6787452b2771043a9a354fefafe4cae0ac77a71b226c83a59bf998f1ff99c475994d0341f94ef50007b10f92f756a95b6
|
data/README.md
CHANGED
@@ -37,42 +37,42 @@ gem 'st_tools'
|
|
37
37
|
Вы вызываете в любой момент StTools::Human.memory и узнаете текущий размер памяти, занимаемый приложением (процессом)
|
38
38
|
|
39
39
|
```ruby
|
40
|
-
StTools
|
41
|
-
StTools
|
42
|
-
StTools
|
40
|
+
StTools::Human.memory # => 14 кбайт
|
41
|
+
StTools::Human.memory # => 45,3 Мбайт
|
42
|
+
StTools::Human.memory # => 2,6 Гбайт
|
43
43
|
```
|
44
44
|
|
45
45
|
Вы вызываете StTools::Human.bytes и перевести любое значение в человеко-удобный вид. Метод можно использовать для показа размера файла
|
46
46
|
|
47
47
|
```ruby
|
48
|
-
StTools
|
49
|
-
StTools
|
50
|
-
StTools
|
48
|
+
StTools::Human.bytes(345) # => 345 байт
|
49
|
+
StTools::Human.bytes(14653) # => 14,5 кбайт
|
50
|
+
StTools::Human.bytes(23653763) # => 23,4 Мбайт
|
51
51
|
```
|
52
52
|
|
53
53
|
Вы вызываете StTools::Human.number для перевода любого значения в человеко-удобный вид.
|
54
54
|
Метод можно использовать для показа, например, суммы денег
|
55
55
|
|
56
56
|
```ruby
|
57
|
-
StTools
|
58
|
-
StTools
|
59
|
-
StTools
|
57
|
+
StTools::Human.number(345) # => 345
|
58
|
+
StTools::Human.number(14653) # => 14,6 тыс.
|
59
|
+
StTools::Human.number(23653763) # => 23,7 млн.
|
60
60
|
```
|
61
61
|
|
62
62
|
Вы имеете возможность узнать разницу между текущим временем и временем какого-либо события.
|
63
63
|
|
64
64
|
```ruby
|
65
65
|
StTools::Setup.setup(:ru)
|
66
|
-
StTools
|
67
|
-
StTools
|
68
|
-
StTools
|
66
|
+
StTools::Human.human_ago(DateTime.new(2014,12,31), true) # => 4 месяца 21 день назад
|
67
|
+
StTools::Human.human_ago(DateTime.new(2013,08,01), false) # => 1 год 8 месяца
|
68
|
+
StTools::Human.human_ago(Time.now - 15, true) # => 15 секунд назад
|
69
69
|
```
|
70
70
|
|
71
71
|
```ruby
|
72
72
|
StTools::Setup.setup(:en)
|
73
|
-
StTools
|
74
|
-
StTools
|
75
|
-
StTools
|
73
|
+
StTools::Human.human_ago(DateTime.new(2014,12,31), true) # => 4 months 21 days ago
|
74
|
+
StTools::Human.human_ago(DateTime.new(2013,08,01), false) # => 1 year 8 months
|
75
|
+
StTools::Human.human_ago(Time.now - 15, true) # => 15 seconds ago
|
76
76
|
```
|
77
77
|
|
78
78
|
Устанавливая флаг ```ago=true```, метод добавит слово "назад" или "ago" в конце фразы.
|
@@ -86,9 +86,9 @@ StTools.Human.human_ago(Time.now - 15, true) # => 15 seconds a
|
|
86
86
|
|
87
87
|
```ruby
|
88
88
|
StTools::Setup.setup(:ru)
|
89
|
-
.seconds_ago(DateTime.new(2014,12,31), true) # => 4 months 21 days ago
|
90
|
-
StTools
|
91
|
-
StTools
|
89
|
+
StTools::Human.seconds_ago(DateTime.new(2014,12,31), true) # => 4 months 21 days ago
|
90
|
+
StTools::Human.seconds_ago(DateTime.new(2013,08,01), false) # => 1 year 8 months
|
91
|
+
StTools::Human.seconds_ago(Time.now - 15, true) # => 15 seconds ago
|
92
92
|
```
|
93
93
|
|
94
94
|
|
@@ -96,22 +96,22 @@ StTools.Human.seconds_ago(Time.now - 15, true) # => 15 seconds
|
|
96
96
|
|
97
97
|
```ruby
|
98
98
|
StTools::Setup.setup(:ru)
|
99
|
-
StTools
|
100
|
-
StTools
|
101
|
-
StTools
|
102
|
-
StTools
|
103
|
-
StTools
|
104
|
-
StTools
|
99
|
+
StTools::Human.format_time(Time.now, :full, :full) # => 28 апреля 2015 г. 10:45:23
|
100
|
+
StTools::Human.format_time(Time.now, :date, :full) # => 28 апреля 2015 г.
|
101
|
+
StTools::Human.format_time(Time.now, :time, :full) # => 10:45:23
|
102
|
+
StTools::Human.format_time(Time.now, :full, :short) # => 28/04/2015 10:45
|
103
|
+
StTools::Human.format_time(Time.now, :date, :short) # => 28/04/2015
|
104
|
+
StTools::Human.format_time(Time.now, :time, :short) # => 10:45
|
105
105
|
```
|
106
106
|
|
107
107
|
```ruby
|
108
108
|
StTools::Setup.setup(:en)
|
109
|
-
StTools
|
110
|
-
StTools
|
111
|
-
StTools
|
112
|
-
StTools
|
113
|
-
StTools
|
114
|
-
StTools
|
109
|
+
StTools::Human.format_time(Time.now, :full, :full) # => April 28, 2015 09:45:23 am
|
110
|
+
StTools::Human.format_time(Time.now, :date, :full) # => April 28, 2015
|
111
|
+
StTools::Human.format_time(Time.now, :time, :full) # => 09:45:23 am
|
112
|
+
StTools::Human.format_time(Time.now, :full, :short) # => 04/28/2015 09:45 am
|
113
|
+
StTools::Human.format_time(Time.now, :date, :short) # => 04/28/2015
|
114
|
+
StTools::Human.format_time(Time.now, :time, :short) # => 09:45 am
|
115
115
|
```
|
116
116
|
|
117
117
|
Вы можете подмешать модуль `StTools::Module` в классы String, Integer, Time.
|
@@ -123,7 +123,7 @@ class String
|
|
123
123
|
include StTools::Module::String
|
124
124
|
end
|
125
125
|
|
126
|
-
(Time.now - 15)
|
126
|
+
(Time.now - 15)::Human_ago # => 15 секунд назад
|
127
127
|
Time.now.format_date # => 28 апреля 2015 г.
|
128
128
|
Time.now.format_date(:short) # => 28/04/2015
|
129
129
|
```
|
@@ -158,12 +158,17 @@ StTools::String.upcase('Москва') # => МОСКВА
|
|
158
158
|
#### normalize
|
159
159
|
|
160
160
|
Иногда надо нормализовать строку и привести ее к виду, удобному для машинной обработки.
|
161
|
-
Метод normalize последовательно делает: strip
|
161
|
+
Метод normalize последовательно делает: `strip`, `delat`, `downcase`. Кроме того, метод корректно заменит
|
162
|
+
на обычные пробелы "короткие" пробелы, получающиеся после преобразования тега HTML ` ` в пробел.
|
162
163
|
|
163
164
|
```ruby
|
164
165
|
StTools::String.normalize(' Москва ') # => "москва"
|
165
166
|
```
|
166
167
|
|
168
|
+
Внимание!!! Функцию следует использовать с осторожностью, и не забывать, что для ряда задач она не подходит.
|
169
|
+
В частности, выполнение `StTools::String.normalize('TRUE')` даст значение `true`, в котором буква `е` будет
|
170
|
+
русская (применена функция `delat`).
|
171
|
+
|
167
172
|
#### caps
|
168
173
|
|
169
174
|
Следующий метод приводит строку к нижнему регистру, но делает первую букву заглавной.
|
data/lib/st_tools/fias.rb
CHANGED
@@ -116,6 +116,43 @@ module StTools
|
|
116
116
|
return false
|
117
117
|
end
|
118
118
|
|
119
|
+
# Метод расчитывает расстояние в метрах между двумя географическими точками
|
120
|
+
#
|
121
|
+
# @param [Float] from_lat - широта первой точки
|
122
|
+
# @param [Float] from_long - долгота первой точки
|
123
|
+
# @param [Float] to_lat - широта второй точки
|
124
|
+
# @param [Float] to_long - долгота второй точки
|
125
|
+
# @return [Float] расстояние в метрах между двумя точками
|
126
|
+
# @example Примеры использования
|
127
|
+
# # Москва - Санкт-Петербург
|
128
|
+
# StTools::Fias.distance(55.75583, 37.61778, 59.95000, 30.31667) #=> 634 988 м (635 км)
|
129
|
+
# # Москва - Киев
|
130
|
+
# StTools::Fias.distance(55.75583, 37.61778, 50.450500, 30.523000) #=> 755 744 м (756 км)
|
131
|
+
# # Москва - Пермь
|
132
|
+
# StTools::Fias.distance(55.75583, 37.61778, 58.01389, 56.24889) #=> 1 155 328 м (1 155 км)
|
133
|
+
# # Москва - Сан-Франциско
|
134
|
+
# StTools::Fias.distance(55.75583, 37.61778, 37.76667, -122.43333) #=> 9 445 325 м (9 445 км)
|
135
|
+
def self.distance(from_lat, from_long, to_lat, to_long)
|
136
|
+
# coord - координата километровой отметки мкад
|
137
|
+
rad_per_deg = Math::PI/180 # PI / 180
|
138
|
+
rkm = 6371 # Earth radius in kilometers
|
139
|
+
rm = rkm * 1000 # Radius in meters
|
140
|
+
|
141
|
+
dlat_rad = (to_lat.to_f - from_lat.to_f) * rad_per_deg # Delta, converted to rad
|
142
|
+
dlon_rad = (to_long.to_f - from_long.to_f) * rad_per_deg
|
143
|
+
|
144
|
+
lat1_rad = from_lat.to_f * rad_per_deg
|
145
|
+
lon1_rad = from_long.to_f * rad_per_deg
|
146
|
+
|
147
|
+
lat2_rad = to_lat * rad_per_deg
|
148
|
+
lon2_rad = to_long * rad_per_deg
|
149
|
+
|
150
|
+
a = Math.sin(dlat_rad/2)**2 + Math.cos(lat1_rad) * Math.cos(lat2_rad) * Math.sin(dlon_rad/2)**2
|
151
|
+
c = 2 * Math::atan2(Math::sqrt(a), Math::sqrt(1-a))
|
152
|
+
|
153
|
+
(rm * c).to_i # Delta in meters
|
154
|
+
end
|
155
|
+
|
119
156
|
|
120
157
|
private
|
121
158
|
|
data/lib/st_tools/string.rb
CHANGED
@@ -73,7 +73,7 @@ module StTools
|
|
73
73
|
# StTools::String.normalize(" Ёлки- ПАЛКИ") #=> "елки- палки"
|
74
74
|
def self.normalize(text)
|
75
75
|
return nil if text.nil?
|
76
|
-
return self.downcase(self.delat(text)).strip.gsub(
|
76
|
+
return self.downcase(self.delat(text)).strip.gsub(/[\s\t\u00A0]{1,100}/, ' ')
|
77
77
|
end
|
78
78
|
|
79
79
|
# Метод позволяет показывать клиенту строку в неполном объеме, с закрытием части символов в строке звездочкой.
|
data/lib/st_tools/version.rb
CHANGED
data/test/fias_lib_spec.rb
CHANGED
@@ -109,4 +109,34 @@ describe 'Проверка методов StTool::Fias.*' do
|
|
109
109
|
test = ::StTools::Fias.federal?('0c5b2444-70a0-4932-980c-b4dc053f02b5')
|
110
110
|
expect(test).to eq false
|
111
111
|
end
|
112
|
+
|
113
|
+
#--------------------------------------------------------
|
114
|
+
#
|
115
|
+
# Тесты расчета расстояния между точками
|
116
|
+
#
|
117
|
+
#--------------------------------------------------------
|
118
|
+
it 'Москва - Санкт-Петербург' do
|
119
|
+
test = ::StTools::Fias.distance(55.75583, 37.61778, 59.95000, 30.31667)
|
120
|
+
expect(test).to be > 634000
|
121
|
+
expect(test).to be < 635000
|
122
|
+
end
|
123
|
+
|
124
|
+
it 'Москва - Киев' do
|
125
|
+
test = ::StTools::Fias.distance(55.75583, 37.61778, 50.450500, 30.523000)
|
126
|
+
expect(test).to be > 755000
|
127
|
+
expect(test).to be < 757000
|
128
|
+
end
|
129
|
+
|
130
|
+
it 'Москва - Пермь' do
|
131
|
+
test = ::StTools::Fias.distance(55.75583, 37.61778, 58.01389, 56.24889)
|
132
|
+
expect(test).to be > 1150000
|
133
|
+
expect(test).to be < 1160000
|
134
|
+
end
|
135
|
+
|
136
|
+
it 'Москва - Сан-Франциско' do
|
137
|
+
test = ::StTools::Fias.distance(55.75583, 37.61778, 37.76667, -122.43333)
|
138
|
+
expect(test).to be > 9440000
|
139
|
+
expect(test).to be < 9480000
|
140
|
+
end
|
141
|
+
|
112
142
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: st_tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stan Zhuravlev
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|