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