okei 0.0.2 → 1.0.0.pre.rc
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +4 -0
- data/README.rdoc +6 -7
- data/Rakefile +4 -13
- data/app/controllers/okei/api/v1/responder.rb +15 -2
- data/app/controllers/okei/api/v1/units_controller.rb +4 -0
- data/app/models/okei/unit.rb +32 -5
- data/app/use_cases/okei/find_unit.rb +2 -12
- data/app/use_cases/okei/get_unit.rb +1 -1
- data/app/views/okei/api/v1/units/_unit.json.jbuilder +2 -4
- data/db/migrate/{20141004212500_create_okei_units.rb → 20141019072900_create_okei_units.rb} +0 -2
- data/db/migrate/20141019072901_populate_okei_units.rb +60 -0
- data/db/migrate/20141019072902_populate_okei_correctors.rb +50 -0
- data/db/seeds/phrases.json +199 -0
- data/db/seeds/prefixes.json +12 -0
- data/db/seeds/words.json +10 -216
- data/lib/okei.rb +2 -0
- data/lib/okei/version.rb +4 -2
- data/lib/tasks/okei_tasks.rake +47 -28
- data/spec/dummy/db/migrate/20141018085223_create_corrector_bases.corrector.rb +14 -0
- data/spec/dummy/db/migrate/20141018085226_create_uuids_uuids.uuids.rb +10 -0
- data/spec/dummy/db/schema.rb +22 -12
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +20296 -0
- data/spec/dummy/log/test.log +183148 -0
- data/spec/examples/json_schemas/unit.json +7 -2
- data/spec/factories/units.rb +0 -1
- data/spec/models/okei/unit_spec.rb +7 -26
- data/spec/requests/okei/api/v1/find_unit_spec.rb +8 -11
- data/spec/requests/okei/api/v1/get_unit_spec.rb +2 -3
- data/spec/requests/okei/api/v1/get_units_spec.rb +2 -2
- data/spec/support/initializers/factory_girl_rails.rb +4 -0
- data/spec/use_cases/okei/find_unit_spec.rb +7 -10
- metadata +43 -21
- data/app/models/okei/line.rb +0 -63
- data/app/models/okei/word.rb +0 -26
- data/app/models/okei/words.rb +0 -40
- data/db/migrate/20141004212501_populate_okei_units.rb +0 -14
- data/db/migrate/20141004212502_create_okei_words.rb +0 -11
- data/db/migrate/20141004212503_populate_okei_words.rb +0 -15
- data/spec/factories/words.rb +0 -7
- data/spec/models/okei/line_spec.rb +0 -61
- data/spec/models/okei/word_spec.rb +0 -75
- data/spec/models/okei/words_spec.rb +0 -64
- data/spec/support/initializers/factory_girl.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ddd375964fa07cfe8f6450efd1aa2220c7e1bb01
|
4
|
+
data.tar.gz: 5444557de9af279b0e68abce30fb2d5caa287f76
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9fa4897fc4012bea96202bcf27035135708d9665628ad9d137dfe4db7660e63c537aa6ef00ed2a7f88f8b0dcbfc1990cef8715302b30dd34f1678019b5aad4fa
|
7
|
+
data.tar.gz: 4a15da1279d9741fd99cf34fbab901cbf59ac744a16221d67d7b032c9da503159b40a1fabe4a05ab6e45a9d22812f6079f889dd4276a2647c1202feb9943a77c
|
data/.rubocop.yml
CHANGED
data/README.rdoc
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
= Единицы измерения
|
2
2
|
|
3
|
+
{<img src="http://img.shields.io/gem/v/okei.svg?style=flat" alt="Gem Version" />}[https://rubygems.org/gems/okei]
|
3
4
|
{<img src="http://img.shields.io/travis/nepalez/okei.svg?style=flat" alt="Bild Status" />}[https://travis-ci.org/nepalez/okei]
|
4
5
|
{<img src="http://img.shields.io/codeclimate/github/nepalez/okei.svg?style=flat" alt="Code Metrics" />}[https://codeclimate.com/github/nepalez/okei]
|
5
6
|
{<img src="http://img.shields.io/gemnasium/nepalez/okei.svg?style=flat" alt="Dependency Status" />}[https://gemnasium.com/nepalez/okei]
|
@@ -62,15 +63,13 @@ API содержит следующие маршруты для доступа
|
|
62
63
|
|
63
64
|
После установки выполните в командной строке:
|
64
65
|
|
65
|
-
|
66
|
+
=== При включении модуля в модуль Rails
|
67
|
+
|
68
|
+
$ rake app:okei:install
|
66
69
|
|
67
|
-
При
|
68
|
-
добавляющая адреса RESTful public API модуля. По умолчанию адреса добавляются
|
69
|
-
в поле имен <tt>/okei</tt>, т.ч. API становится доступен по адресам:
|
70
|
+
=== При включении модуля в приложение Rails
|
70
71
|
|
71
|
-
|
72
|
-
* <tt>GET {адрес вашего проекта}/okei/api/v1/units/{uuid}</tt>
|
73
|
-
* <tt>GET {адрес вашего проекта}/okei/api/v1/units/search</tt>
|
72
|
+
$ rake okei:install
|
74
73
|
|
75
74
|
== Contributing (en)
|
76
75
|
|
data/Rakefile
CHANGED
@@ -30,23 +30,14 @@ require "rspec/core/rake_task"
|
|
30
30
|
|
31
31
|
RSpec::Core::RakeTask.new :spec
|
32
32
|
|
33
|
-
task :
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
task default: [:migrate] do
|
38
|
-
sh "mkdir spec/dummy/tmp" do |*|
|
39
|
-
nunitSuccessFlag = false
|
40
|
-
end
|
41
|
-
sh "mkdir spec/dummy/tmp/cache" do |*|
|
42
|
-
nunitSuccessFlag = false
|
43
|
-
end
|
44
|
-
sh "bundle exec rspec spec"
|
33
|
+
task default: %w(app:okei:test:prepare) do
|
34
|
+
system "bundle exec rspec spec"
|
45
35
|
end
|
46
36
|
|
47
37
|
task :full do
|
48
38
|
sh "coveralls report"
|
49
39
|
sh "rubocop"
|
50
40
|
sh "metric_fu"
|
51
|
-
sh "inch"
|
41
|
+
sh "inch --pedantic"
|
42
|
+
sh "rails_best_practices"
|
52
43
|
end
|
@@ -7,19 +7,32 @@ module Okei
|
|
7
7
|
# Responds to client depending on use case results
|
8
8
|
class Responder < ::ApplicationController
|
9
9
|
|
10
|
-
# Renders list of units of measure.
|
10
|
+
# Renders a list of units of measure.
|
11
|
+
#
|
12
|
+
# Params:
|
13
|
+
# +units+:: a list of units found by use case
|
14
|
+
#
|
11
15
|
def on_success(units)
|
12
16
|
@units = units
|
13
17
|
render "index"
|
14
18
|
end
|
15
19
|
|
16
20
|
# Renders a unit of measure.
|
21
|
+
#
|
22
|
+
# Params:
|
23
|
+
# +unit+:: a unit of measure to be rendered and sent to a client.
|
24
|
+
#
|
17
25
|
def on_found(unit)
|
18
26
|
@unit = unit
|
19
27
|
render "show"
|
20
28
|
end
|
21
29
|
|
22
|
-
# Renders an error
|
30
|
+
# Renders an error messages.
|
31
|
+
#
|
32
|
+
# Params:
|
33
|
+
# +messages+:: a list of messages (<tt>Hexx::Message</tt> objects)
|
34
|
+
# to be shown to a client.
|
35
|
+
#
|
23
36
|
def on_not_found(messages)
|
24
37
|
@messages = messages
|
25
38
|
render "errors", status: 404
|
data/app/models/okei/unit.rb
CHANGED
@@ -2,16 +2,43 @@
|
|
2
2
|
|
3
3
|
module Okei
|
4
4
|
|
5
|
-
# Stores and validates units of measure
|
5
|
+
# Stores and validates units of measure.
|
6
|
+
#
|
7
|
+
# Attributes:
|
8
|
+
# +uuids+:: list of Units::Uuid objects assigned (referred to) the unit.
|
9
|
+
# +code+:: literal cyrillic code ("КМ/Ч").
|
10
|
+
# +name+:: name of the unit ("Километры в час").
|
11
|
+
# +num+:: numeric code of the unit following the OKEI ("007").
|
12
|
+
# +int_code+:: a literal international code of the unit ("KMH").
|
13
|
+
# +base+:: literal cyrillic code of the basic unit of measure ("М/С").
|
14
|
+
# +factor+:: float number of basic units in a current unit (0.28).
|
15
|
+
# +measure+:: the name of measurement ("СКОРОСТЬ") used for filtering units.
|
16
|
+
#
|
17
|
+
# Methods:
|
18
|
+
# <tt>#uuid</tt>:: returns value of the first +uuids+ assigned to the unit.
|
19
|
+
# <tt>.by_uuid(value)</tt>:: selects units by a given UUID.
|
20
|
+
#
|
21
|
+
# The first UUID can be set manually if necessary (when db populated from the
|
22
|
+
# outer list). Otherwise it will be assigned by default on the unit creation.
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
# unit = Unit.new(
|
26
|
+
# name: "Километры в час", code: "КМ/Ч", num: "007", int_code: "KMH",
|
27
|
+
# base: "М/С", factor: 0.28, measure: "СКОРОСТЬ"
|
28
|
+
# )
|
29
|
+
# # this can be skipped:
|
30
|
+
# unit.uuids.new value: "9ac7e74a-d51a-424c-8fcd-71b0b55f6658"
|
31
|
+
#
|
6
32
|
class Unit < ActiveRecord::Base
|
33
|
+
include Uuids::Base
|
7
34
|
|
8
|
-
|
35
|
+
# Format of OKEI numeric codes (three digits).
|
9
36
|
NUM_FORMAT = /\A\d{3}\z/
|
10
37
|
|
11
|
-
|
12
|
-
validates :
|
38
|
+
has_uuids
|
39
|
+
validates :code, :name, :base, :factor, :measure, presence: true
|
40
|
+
validates :code, :name, uniqueness: true, allow_nil: true
|
13
41
|
validates :factor, allow_nil: true, numericality: { greater_than: 0.0 }
|
14
42
|
validates :num, allow_nil: true, format: { with: NUM_FORMAT }
|
15
|
-
validates :uuid, allow_nil: true, format: { with: UUID_FORMAT }
|
16
43
|
end
|
17
44
|
end
|
@@ -38,22 +38,12 @@ module Okei
|
|
38
38
|
@text ||= params["text"]
|
39
39
|
end
|
40
40
|
|
41
|
-
def line
|
42
|
-
@line ||= Line.new text
|
43
|
-
end
|
44
|
-
|
45
|
-
def words
|
46
|
-
@words ||= Words.new(line).map { |word| Word.translate word }
|
47
|
-
end
|
48
|
-
|
49
41
|
def code
|
50
|
-
@code ||=
|
42
|
+
@code ||= Corrector::Parse.new text, scope: "okei"
|
51
43
|
end
|
52
44
|
|
53
45
|
def unit
|
54
|
-
@unit ||=
|
55
|
-
Unit.find_by_code(code)
|
56
|
-
end
|
46
|
+
@unit ||= Unit.where(code: code).first
|
57
47
|
end
|
58
48
|
|
59
49
|
def unit_found?
|
@@ -2,7 +2,6 @@
|
|
2
2
|
class CreateOkeiUnits < ActiveRecord::Migration
|
3
3
|
def change
|
4
4
|
create_table :okei_units do |t|
|
5
|
-
t.string :uuid, null: false, limit: 36
|
6
5
|
t.string :name, null: false
|
7
6
|
t.string :code, null: false
|
8
7
|
t.string :num, limit: 3
|
@@ -12,7 +11,6 @@ class CreateOkeiUnits < ActiveRecord::Migration
|
|
12
11
|
t.float :factor, null: false
|
13
12
|
end
|
14
13
|
|
15
|
-
add_index :okei_units, :uuid, unique: true
|
16
14
|
add_index :okei_units, :code, unique: true
|
17
15
|
add_index :okei_units, :base
|
18
16
|
add_index :okei_units, :measure
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# Populates db with units of measure.
|
2
|
+
class PopulateOkeiUnits < ActiveRecord::Migration
|
3
|
+
|
4
|
+
# reloads units and their uuids from db/seed/units.json
|
5
|
+
def up
|
6
|
+
return if Rails.env.test?
|
7
|
+
down
|
8
|
+
populate_units_from seed
|
9
|
+
end
|
10
|
+
|
11
|
+
# deletes all units with their uuids.
|
12
|
+
def down
|
13
|
+
return if Rails.env.test?
|
14
|
+
clear_uuids
|
15
|
+
clear_units
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
# Parses JSON from db/seed/units.json
|
21
|
+
def seed
|
22
|
+
@seed ||= begin
|
23
|
+
root = File.dirname File.dirname(Okei::Engine.called_from)
|
24
|
+
file = File.join(root, "db", "seeds", "units.json")
|
25
|
+
JSON.parse(File.read file)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# Deletes units' uuids.
|
30
|
+
def clear_uuids
|
31
|
+
list = Uuids::Uuid.where(record_type: "Okei::Unit")
|
32
|
+
say_with_time "Removing #{ list.count } uuids" do
|
33
|
+
list.delete_all
|
34
|
+
left = list.count
|
35
|
+
fail "#{ left } uuids left undeleted" if left > 0
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# Deletes units objects.
|
40
|
+
def clear_units
|
41
|
+
list = Okei::Unit.all
|
42
|
+
say_with_time "Removing #{ list.count } units" do
|
43
|
+
list.delete_all
|
44
|
+
left = list.count
|
45
|
+
fail "#{ left } units left undeleted" if left > 0
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# Populates units and their uuids from given JSON
|
50
|
+
def populate_units_from(json)
|
51
|
+
say_with_time "Adding #{ json.count } units" do
|
52
|
+
json.each do |item|
|
53
|
+
unit = Okei::Unit.new
|
54
|
+
unit.uuids.new value: item.delete("uuid")
|
55
|
+
unit.attributes = item
|
56
|
+
unit.save!
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# Populates db with units of measure.
|
2
|
+
class PopulateOkeiCorrectors < ActiveRecord::Migration
|
3
|
+
|
4
|
+
# reloads units and their uuids from db/seed/units.json
|
5
|
+
def up
|
6
|
+
return if Rails.env.test?
|
7
|
+
down
|
8
|
+
bases.each { |name, klass| populate name, klass }
|
9
|
+
end
|
10
|
+
|
11
|
+
# deletes all units with their uuids.
|
12
|
+
def down
|
13
|
+
return if Rails.env.test?
|
14
|
+
bases.each { |name, klass| clear name, klass }
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def clear(name, klass)
|
20
|
+
list = klass.by_scope("okei")
|
21
|
+
say_with_time "Removing #{ list.count } #{ name }" do
|
22
|
+
list.delete_all
|
23
|
+
left = list.count
|
24
|
+
fail "#{ left } #{ name } left undeleted" if left > 0
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def populate(name, klass)
|
29
|
+
list = JSON.parse(File.read File.join(seeds, "#{ name }.json"))
|
30
|
+
say_with_time "Adding #{ list.count } #{ name }" do
|
31
|
+
list.each { |from, to| klass.create! scope: "okei", from: from, to: to }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def bases
|
36
|
+
@bases ||= {
|
37
|
+
words: Corrector::Word,
|
38
|
+
phrases: Corrector::Phrase,
|
39
|
+
prefixes: Corrector::Prefix
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
43
|
+
# Returns json seeds folder
|
44
|
+
def seeds
|
45
|
+
@seeds ||= begin
|
46
|
+
root = File.dirname File.dirname(Okei::Engine.called_from)
|
47
|
+
File.join(root, "db", "seeds")
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,199 @@
|
|
1
|
+
{
|
2
|
+
"АВТО ДН МЕСТ": "АВТ МЕСТ ДН",
|
3
|
+
"АВТО ДН Т": "АВТ Т ДН",
|
4
|
+
"В А Р": "В-А Р",
|
5
|
+
"В А": "В-А",
|
6
|
+
"ВТ ЧАС": "ВТ-Ч",
|
7
|
+
"Г НА КВТ ЧАС": "Г/КВТ-Ч",
|
8
|
+
"Г/КВТ ЧАС": "Г/КВТ-Ч",
|
9
|
+
"ГИГАВТ ЧАС": "ГИГАВТ-Ч",
|
10
|
+
"ГИГАКАЛ В ЧАС": "ГИГАКАЛ/Ч",
|
11
|
+
"ГИГАКАЛ/ЧАС": "ГИГАКАЛ/Ч",
|
12
|
+
"ДМ КВ": "ДМ2",
|
13
|
+
"ДМ КУБ": "ДМ3",
|
14
|
+
"ДОМ ХОЗ": "ДОМХОЗ",
|
15
|
+
"ДЮЙМ КВ": "ДЮЙМ2",
|
16
|
+
"ДЮЙМ КУБ": "ДЮЙМ3",
|
17
|
+
"КАЛ В ЧАС": "КАЛ/Ч",
|
18
|
+
"КАЛ/ЧАС": "КАЛ/Ч",
|
19
|
+
"КВ А Р": "КВ-А Р",
|
20
|
+
"КВ А": "КВ-А",
|
21
|
+
"КВ А": "КВ-А",
|
22
|
+
"КВ ДМ": "ДМ2",
|
23
|
+
"КВ ДЮЙМ": "ДЮЙМ2",
|
24
|
+
"КВ КМ": "КМ2",
|
25
|
+
"КВ М ЖИЛ ПЛ": "М2 ЖИЛ ПЛ",
|
26
|
+
"КВ М ОБЩ ПЛ": "М2 ОБЩ ПЛ",
|
27
|
+
"КВ М УЧ ЛАБ ЗДАН": "М2 УЧ ЛАБ ЗДАН",
|
28
|
+
"КВ М": "М2",
|
29
|
+
"КВ МИЛЬ": "МИЛЬ2",
|
30
|
+
"КВ ММ": "ММ2",
|
31
|
+
"КВ ФУТ": "ФУТ2",
|
32
|
+
"КВТ ЧАС": "КВТ-Ч",
|
33
|
+
"КГ В С": "КГ/С",
|
34
|
+
"КГ НА ГИГАКАЛ": "КГ/ГИГАКАЛ",
|
35
|
+
"КГ НА КВ СМ": "КГ/СМ2",
|
36
|
+
"КГ НА КУБ М": "КГ/М3",
|
37
|
+
"КГ НА М КУБ": "КГ/М3",
|
38
|
+
"КГ НА М3": "КГ/М3",
|
39
|
+
"КГ НА СМ КВ": "КГ/СМ2",
|
40
|
+
"КГ НА СМ2": "КГ/СМ2",
|
41
|
+
"КГ/КВ СМ": "КГ/СМ2",
|
42
|
+
"КГ/КУБ М": "КГ/М3",
|
43
|
+
"КГ/М КУБ": "КГ/М3",
|
44
|
+
"КГ/СМ КВ": "КГ/СМ2",
|
45
|
+
"ККАЛ В ЧАС": "ККАЛ/Ч",
|
46
|
+
"ККАЛ/ЧАС": "ККАЛ/Ч",
|
47
|
+
"КЛ НА КГ": "КЛ/КГ",
|
48
|
+
"КМ В ЧАС": "КМ/Ч",
|
49
|
+
"КМ КВ": "КМ2",
|
50
|
+
"КМ/ЧАС": "КМ/Ч",
|
51
|
+
"КУБ ДМ": "ДМ3",
|
52
|
+
"КУБ ДЮЙМ": "ДЮЙМ3",
|
53
|
+
"КУБ М В С": "М3/С",
|
54
|
+
"КУБ М": "М3",
|
55
|
+
"КУБ ММ": "ММ3",
|
56
|
+
"КУБ ФУТ": "ФУТ3",
|
57
|
+
"ЛОШ СИЛ": "ЛС",
|
58
|
+
"М В КВ С": "М/С2",
|
59
|
+
"М В С КВ": "М/С2",
|
60
|
+
"М В С": "М/С",
|
61
|
+
"М В С2": "М/С2",
|
62
|
+
"М В ЧАС": "М/Ч",
|
63
|
+
"М КВ ЖИЛ ПЛ": "М2 ЖИЛ ПЛ",
|
64
|
+
"М КВ ОБЩ ПЛ": "М2 ОБЩ ПЛ",
|
65
|
+
"М КВ УЧ ЛАБ ЗДАН": "М2 УЧ ЛАБ ЗДАН",
|
66
|
+
"М КВ": "М2",
|
67
|
+
"М КУБ В С": "М3/С",
|
68
|
+
"М КУБ": "М3",
|
69
|
+
"М/КВ С": "М/С2",
|
70
|
+
"М/С КВ": "М/С2",
|
71
|
+
"М/ЧАС": "М/Ч",
|
72
|
+
"М2 В ЧАС": "М2/Ч",
|
73
|
+
"М2 УЧ ЛАБ ЗДАН": "М2 УЧ-ЛАБ ЗДАН",
|
74
|
+
"М2/ЧАС": "М2/Ч",
|
75
|
+
"М3 В С": "М3/С",
|
76
|
+
"М3 В ЧАС": "М3/Ч",
|
77
|
+
"М3/ЧАС": "М3/Ч",
|
78
|
+
"МЕГАБАЙТ": "МБАЙТ",
|
79
|
+
"МЕГАВ А": "МЕГАВ-А",
|
80
|
+
"МЕГАВТ ЧАС": "МЕГАВТ-Ч",
|
81
|
+
"МИЛЬ КВ": "МИЛЬ2",
|
82
|
+
"МЛН А ЧАС": "МЛН А-Ч",
|
83
|
+
"МЛН ГОЛ В ГОД": "МЛН ГОЛ/ГОД",
|
84
|
+
"МЛН ДМ КВ": "МЛН ДМ2",
|
85
|
+
"МЛН ЕД В ГОД": "МЛН ЕД/ГОД",
|
86
|
+
"МЛН КВ А": "МЛН КВ-А",
|
87
|
+
"МЛН КВ ДМ": "МЛН ДМ2",
|
88
|
+
"МЛН КВ М В2 ММ ИСЧ": "МЛН М2 2ММ ИСЧ",
|
89
|
+
"МЛН КВ М ЖИЛ ПЛ": "МЛН М2 ЖИЛ ПЛ",
|
90
|
+
"МЛН КВ М ОБЩ ПЛ": "МЛН М2 ОБЩ ПЛ",
|
91
|
+
"МЛН КВ М": "МЛН М2",
|
92
|
+
"МЛН КВ М2 ММ ИСЧ": "МЛН М2 2ММ ИСЧ",
|
93
|
+
"МЛН КВТ ЧАС": "МЛН КВТ-Ч",
|
94
|
+
"МЛН КУБ М ПЕРЕРАБ ГАЗА": "МЛН М3 ПЕРЕРАБ ГАЗА",
|
95
|
+
"МЛН КУБ М": "МЛН М3",
|
96
|
+
"МЛН ЛОШ СИЛ": "МЛН ЛС",
|
97
|
+
"МЛН М КВ В2 ММ ИСЧ": "МЛН М2 2ММ ИСЧ",
|
98
|
+
"МЛН М КВ ЖИЛ ПЛ": "МЛН М2 ЖИЛ ПЛ",
|
99
|
+
"МЛН М КВ ОБЩ ПЛ": "МЛН М2 ОБЩ ПЛ",
|
100
|
+
"МЛН М КВ": "МЛН М2",
|
101
|
+
"МЛН М КВ2 ММ ИСЧ": "МЛН М2 2ММ ИСЧ",
|
102
|
+
"МЛН М КУБ ПЕРЕРАБ ГАЗА": "МЛН М3 ПЕРЕРАБ ГАЗА",
|
103
|
+
"МЛН М КУБ": "МЛН М3",
|
104
|
+
"МЛН М2 2 ММ ИСЧ": "МЛН М2 2ММ ИСЧ",
|
105
|
+
"МЛН ПОЛЛ": "МЛН ПОЛ Л",
|
106
|
+
"МЛН ПТИЦЕ МЕСТ": "МЛН ПТИЦЕМЕСТ",
|
107
|
+
"МЛН Т В ГОД": "МЛН Т/ГОД",
|
108
|
+
"МЛН УСЛ КВ М": "МЛН УСЛ М2",
|
109
|
+
"МЛН УСЛ М КВ": "МЛН УСЛ М2",
|
110
|
+
"МЛРД КВТ ЧАС": "МЛРД КВТ-Ч",
|
111
|
+
"МЛРД КВТ ЧАС": "МЛРД КВТ-Ч",
|
112
|
+
"МЛРД КУБ М": "МЛРД М3",
|
113
|
+
"МЛРД М КУБ": "МЛРД М3",
|
114
|
+
"ММ КВ": "ММ2",
|
115
|
+
"ММ КУБ": "ММ3",
|
116
|
+
"МОЩН ЭФФ": "ЭФФ МОЩН",
|
117
|
+
"ОБ В МИН": "ОБ/МИН",
|
118
|
+
"ОБ В С": "ОБ/С",
|
119
|
+
"ОПЛАТ ТР": "ЗАРАБОТН ПЛАТ",
|
120
|
+
"ОПЛАТ ТРУДА": "ЗАРАБОТН ПЛАТ",
|
121
|
+
"ПАР В СМЕТ": "ПАР/СМЕН",
|
122
|
+
"ПАР В ЧАС": "ПАР/Ч",
|
123
|
+
"ПАР/ЧАС": "ПАР/Ч",
|
124
|
+
"ПЛОТН КУБ М": "ПЛОТН М3",
|
125
|
+
"ПЛОТН М КУБ": "ПЛОТН М3",
|
126
|
+
"ПОСЕЩ В СМЕН": "ПОСЕЩ/СМЕН",
|
127
|
+
"ПТИЦЕ МЕСТ": "ПТИЦЕМЕСТ",
|
128
|
+
"РЕГИСТР Т": "НЕТТ РЕГИСТР Т",
|
129
|
+
"РЕМ В ГОД": "РЕМ/ГОД",
|
130
|
+
"Т В СМЕН": "Т/СМЕН",
|
131
|
+
"Т В СУТ": "Т/СУТ",
|
132
|
+
"Т В ЧАС": "Т/Ч",
|
133
|
+
"Т ПЕРЕРАБ В СУТ": "Т ПЕРЕРАБ/СУТ",
|
134
|
+
"Т/ЧАС": "Т/Ч",
|
135
|
+
"ТЕХН АТМ": "АТТ",
|
136
|
+
"ТЫС А ЧАС": "ТЫС А-Ч",
|
137
|
+
"ТЫС ГИГАКАЛ В ЧАС": "ТЫС ГИГАКАЛ/Ч",
|
138
|
+
"ТЫС ГИГАКАЛ/ЧАС": "ТЫС ГИГАКАЛ/Ч",
|
139
|
+
"ТЫС ГОЛ В ГОД": "ТЫС ГОЛ/ГОД",
|
140
|
+
"ТЫС ДМ КВ": "ТЫС ДМ2",
|
141
|
+
"ТЫС КВ А Р": "ТЫС КВ-А Р",
|
142
|
+
"ТЫС КВ ДМ": "ТЫС ДМ2",
|
143
|
+
"ТЫС КВ М ЖИЛ ПЛ": "ТЫС М2 ЖИЛ ПЛ",
|
144
|
+
"ТЫС КВ М ОБЩ ПЛ": "ТЫС М2 ОБЩ ПЛ",
|
145
|
+
"ТЫС КВ М УЧ ЛАБ ЗДАН": "ТЫС М2 УЧ ЛАБ ЗДАН",
|
146
|
+
"ТЫС КВ М": "ТЫС М2",
|
147
|
+
"ТЫС КВТ ЧАС": "ТЫС КВТ-Ч",
|
148
|
+
"ТЫС КУБ М В СУТ": "ТЫС М3/СУТ",
|
149
|
+
"ТЫС КУБ М": "ТЫС М3",
|
150
|
+
"ТЫС КУБ М/СУТ": "ТЫС М3/СУТ",
|
151
|
+
"ТЫС ЛОШ СИЛ": "ТЫС ЛС",
|
152
|
+
"ТЫС М КВ ЖИЛ ПЛ": "ТЫС М2 ЖИЛ ПЛ",
|
153
|
+
"ТЫС М КВ ОБЩ ПЛ": "ТЫС М2 ОБЩ ПЛ",
|
154
|
+
"ТЫС М КВ УЧ ЛАБ ЗДАН": "ТЫС М2 УЧ ЛАБ ЗДАН",
|
155
|
+
"ТЫС М КВ": "ТЫС М2",
|
156
|
+
"ТЫС М КУБ В СУТ": "ТЫС М3/СУТ",
|
157
|
+
"ТЫС М КУБ": "ТЫС М3",
|
158
|
+
"ТЫС М КУБ/СУТ": "ТЫС М3/СУТ",
|
159
|
+
"ТЫС М": "КМ",
|
160
|
+
"ТЫС М3 В СУТ": "ТЫС М3/СУТ",
|
161
|
+
"ТЫС ПАР В СМЕН": "ТЫС ПАР/СМЕН",
|
162
|
+
"ТЫС ПЛОТН КУБ М": "ТЫС ПЛОТН М3",
|
163
|
+
"ТЫС ПЛОТН М КУБ": "ТЫС ПЛОТН М3",
|
164
|
+
"ТЫС ПОЛЛ": "ТЫС ПОЛ Л",
|
165
|
+
"ТЫС ПОСЕЩ В СМЕН": "ТЫС ПОСЕЩ/СМЕН",
|
166
|
+
"ТЫС ПОСЕЩ В СМЕН": "ТЫС ПОСЕЩ/СМЕН",
|
167
|
+
"ТЫС ПТИЦЕ МЕСТ": "ТЫС ПТИЦЕМЕСТ",
|
168
|
+
"ТЫС СТД УСЛ КИРП": "ТЫС СТАНД УСЛ КИРП",
|
169
|
+
"ТЫС Т В ГОД": "ТЫС Т/ГОД",
|
170
|
+
"ТЫС Т В СЕЗ": "ТЫС Т/СЕЗ",
|
171
|
+
"ТЫС Т ПАР В ЧАС": "ТЫС Т ПАР/Ч",
|
172
|
+
"ТЫС Т ПАР/ЧАС": "ТЫС Т ПАР/Ч",
|
173
|
+
"ТЫС Т ПЕРЕРАБ В СУТ": "ТЫС Т ПЕРЕРАБ/СУТ",
|
174
|
+
"ТЫС Т ПЕРЕРАБ В СУТ": "ТЫС Т ПЕРЕРАБ/СУТ",
|
175
|
+
"ТЫС УСЛ БАНК В СМЕН": "ТЫС УСЛ БАНК/СМЕН",
|
176
|
+
"ТЫС УСЛ КВ М": "ТЫС УСЛ М2",
|
177
|
+
"ТЫС УСЛ КУБ М": "ТЫС УСЛ М3",
|
178
|
+
"ТЫС УСЛ М КВ": "ТЫС УСЛ М2",
|
179
|
+
"ТЫС УСЛ М КУБ": "ТЫС УСЛ М3",
|
180
|
+
"ТЫС Ц ПЕРЕРАБ В СУТ": "ТЫС Ц ПЕРЕРАБ/СУТ",
|
181
|
+
"ТЫС ЧЕЛ ДН": "ТЫС ЧЕЛ-ДН",
|
182
|
+
"ТЫС ЧЕЛ ЧАС": "ТЫС ЧЕЛ-Ч",
|
183
|
+
"ФУТ КВ": "ФУТ2",
|
184
|
+
"ФУТ КУБ": "ФУТ3",
|
185
|
+
"Ц И": "Ц США",
|
186
|
+
"Ц ПЕРЕРАБ В СУТ": "Ц ПЕРЕРАБ/СУТ",
|
187
|
+
"ЧЕЛ ДН": "ЧЕЛ-ДН",
|
188
|
+
"ЧЕЛ НА КВ КМ": "ЧЕЛ/КМ2",
|
189
|
+
"ЧЕЛ НА КВ М": "ЧЕЛ/М2",
|
190
|
+
"ЧЕЛ НА КМ КВ": "ЧЕЛ/КМ2",
|
191
|
+
"ЧЕЛ НА КМ2": "ЧЕЛ/КМ2",
|
192
|
+
"ЧЕЛ НА М КВ": "ЧЕЛ/М2",
|
193
|
+
"ЧЕЛ НА М2": "ЧЕЛ/М2",
|
194
|
+
"ЧЕЛ ЧАС": "ЧЕЛ-ЧАС",
|
195
|
+
"ЧЕЛ/КВ КМ": "ЧЕЛ/КМ2",
|
196
|
+
"ЧЕЛ/КВ М": "ЧЕЛ/М2",
|
197
|
+
"ЧЕЛ/КМ КВ": "ЧЕЛ/КМ2",
|
198
|
+
"ЧЕЛ/М КВ": "ЧЕЛ/М2"
|
199
|
+
}
|