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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 10f93a2349223d5bd2a740ff842b74f9cee2430d
4
- data.tar.gz: ae363ce67f9587fde735756bfbbd5b6087afa74c
3
+ metadata.gz: e3842bbc50514362b84e3a229f04b313aa21c68e
4
+ data.tar.gz: e43193a68071b6893357ad8aa03081d1280b9952
5
5
  SHA512:
6
- metadata.gz: 86ba45333dd1dba115edac9cd691c5e14190f49588bf4433719e82f8f4470f12b200bfb86bd81705fe3f3715b6b70f8d45cd71eff9f895a1783dbdbafe69bcc5
7
- data.tar.gz: b7ae48dfb3505891d48e1753fd90a6ada5e5829afb12920face31dbd602cb601d031825e7f7e5e3b35927cabf1330f6d7d4d5963d161127534080016c951e9dd
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.Human.memory # => 14 кбайт
41
- StTools.Human.memory # => 45,3 Мбайт
42
- StTools.Human.memory # => 2,6 Гбайт
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.Human.bytes(345) # => 345 байт
49
- StTools.Human.bytes(14653) # => 14,5 кбайт
50
- StTools.Human.bytes(23653763) # => 23,4 Мбайт
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.Human.number(345) # => 345
58
- StTools.Human.number(14653) # => 14,6 тыс.
59
- StTools.Human.number(23653763) # => 23,7 млн.
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.Human.ago_in_words(DateTime.new(2014,12,31), true) # => 4 месяца 21 день назад
67
- StTools.Human.ago_in_words(DateTime.new(2013,08,01), false) # => 1 год 8 месяца
68
- StTools.Human.ago_in_words(Time.now - 15, true) # => 15 секунд назад
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.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
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.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
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.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
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.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
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).human_ago # => 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, delat, downcase
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
 
@@ -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(/\s{1,100}/, ' ')
76
+ return self.downcase(self.delat(text)).strip.gsub(/[\s\t\u00A0]{1,100}/, ' ')
77
77
  end
78
78
 
79
79
  # Метод позволяет показывать клиенту строку в неполном объеме, с закрытием части символов в строке звездочкой.
@@ -1,3 +1,3 @@
1
1
  module StTools
2
- VERSION = '0.3.10'
2
+ VERSION = '0.3.11'
3
3
  end
@@ -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.10
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-06-06 00:00:00.000000000 Z
11
+ date: 2015-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler