st_tools 0.3.10 → 0.3.11
Sign up to get free protection for your applications and to get access to all the features.
- 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
|