unidom-stapar 0.3 → 0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/models/unidom/stapar/concerns/as_matched_processor.rb +24 -0
- data/app/models/unidom/stapar/pattern_library.rb +25 -0
- data/app/models/unidom/stapar/pattern_library_inclusion.rb +19 -0
- data/db/migrate/20060102000000_create_unidom_pattern_matchings.rb +2 -2
- data/db/migrate/20060111000000_create_unidom_pattern_libraries.rb +36 -0
- data/db/migrate/20060112000000_create_unidom_pattern_library_inclusions.rb +28 -0
- data/lib/rspec/models/unidom/stapar/pattern_library_inclusion_spec.rb +40 -0
- data/lib/rspec/models/unidom/stapar/pattern_library_spec.rb +43 -0
- data/lib/unidom/stapar/models_rspec.rb +4 -2
- data/lib/unidom/stapar/version.rb +1 -1
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a0e9dacdb2f6ac07c4f3dfd2c1ea51be5e0d5dabc8bba539c8c9dcacce49aae
|
4
|
+
data.tar.gz: e779aa108d78407a7a20f0a9912f9aa5282246b4f77c15708738f4717575a44b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1aa287850f774552ab4b96306da2fce852970e00126332f0aa8be9b05e24fd0aaa72508ef98cbc2bb16058c15060955d23dfead5aea0fdc60b048992d5183aea
|
7
|
+
data.tar.gz: ec65474ff75be570d78d892ebd595f1fb0024da6a90e75fd3ed7ef3537ab160b0894faf8a62f42245b08b1f1df179f0baa986016535979671359877ac00f743a
|
@@ -0,0 +1,24 @@
|
|
1
|
+
##
|
2
|
+
# As Matched 是模式匹配后处理器的领域逻辑关注点。
|
3
|
+
|
4
|
+
module Unidom::Stapar::Concerns::AsMatchedProcessor
|
5
|
+
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
included do |includer|
|
9
|
+
|
10
|
+
# has_many :processors
|
11
|
+
|
12
|
+
def matched_process
|
13
|
+
processors.each do |processor|
|
14
|
+
processor.matched_process self
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
module ClassMethods
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
##
|
2
|
+
# Pattern Library 表示模式库。
|
3
|
+
|
4
|
+
module Unidom::Stapar
|
5
|
+
class PatternLibrary < ApplicationRecord
|
6
|
+
|
7
|
+
self.table_name = 'unidom_pattern_libraries'
|
8
|
+
|
9
|
+
include Unidom::Common::Concerns::ModelExtension
|
10
|
+
include ProgneTapera::EnumCode
|
11
|
+
|
12
|
+
belongs_to :subject, polymorphic: true
|
13
|
+
belongs_to :matched_processor, polymorphic: true
|
14
|
+
|
15
|
+
validates :name, presence: true, length: { in: 2..self.columns_hash['name'].limit }
|
16
|
+
validates :valve_percentage, presence: true, numericality: { greater_than: 0, less_than_or_equal_to: 100, only_integer: true }
|
17
|
+
validates :applied_species, presence: true, length: { in: 2..self.columns_hash['applied_species'].limit }
|
18
|
+
|
19
|
+
code :applied_field, Unidom::Stapar::AppliedField
|
20
|
+
|
21
|
+
scope :subject_is, -> (subject) { where subject: subject }
|
22
|
+
scope :matched_processor_is, -> (matched_processor) { where matched_processor: matched_processor }
|
23
|
+
|
24
|
+
end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::PatternLibrary'
|
25
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
##
|
2
|
+
# Pattern Library Inclusion 表示模式库收录。
|
3
|
+
|
4
|
+
module Unidom::Stapar
|
5
|
+
class PatternLibraryInclusion < ApplicationRecord
|
6
|
+
|
7
|
+
self.table_name = 'unidom_pattern_library_inclusions'
|
8
|
+
|
9
|
+
include Unidom::Common::Concerns::ModelExtension
|
10
|
+
include ProgneTapera::EnumCode
|
11
|
+
|
12
|
+
belongs_to :pattern_library, class_name: 'Unidom::Stapar::PatternLibrary'
|
13
|
+
belongs_to :pattern, polymorphic: true
|
14
|
+
|
15
|
+
scope :pattern_library_is, -> (pattern_library) { where pattern_library: pattern_library }
|
16
|
+
scope :pattern_is, -> (pattern) { where pattern: pattern }
|
17
|
+
|
18
|
+
end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::PatternLibraryInclusion'
|
19
|
+
end
|
@@ -5,9 +5,9 @@ class CreateUnidomPatternMatchings < ActiveRecord::Migration[6.0]
|
|
5
5
|
create_table :unidom_pattern_matchings, id: :uuid do |t|
|
6
6
|
|
7
7
|
t.references :matched, type: :uuid, null: false,
|
8
|
-
polymorphic: { null: false, default: '', limit: 200 }
|
8
|
+
polymorphic: { null: false, default: '', limit: 200 }, index: false
|
9
9
|
t.references :input, type: :uuid, null: false,
|
10
|
-
polymorphic: { null: false, default: '', limit: 200 }
|
10
|
+
polymorphic: { null: false, default: '', limit: 200 }, index: false
|
11
11
|
|
12
12
|
t.decimal :similarity_percentage, null: false, default: 0.0, precision: 12, scale: 2
|
13
13
|
t.integer :valve_percentage, null: false, default: 0
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class CreateUnidomPatternLibraries < ActiveRecord::Migration[6.0]
|
2
|
+
|
3
|
+
def change
|
4
|
+
|
5
|
+
create_table :unidom_pattern_libraries, id: :uuid do |t|
|
6
|
+
|
7
|
+
t.references :subject, type: :uuid, null: false,
|
8
|
+
polymorphic: { null: false, default: '', limit: 200 }, index: false
|
9
|
+
t.references :matched_processor, type: :uuid, null: false,
|
10
|
+
polymorphic: { null: false, default: '', limit: 200 }, index: false
|
11
|
+
|
12
|
+
t.string :name, null: false, default: '', limit: 200
|
13
|
+
t.integer :valve_percentage, null: false, default: 0
|
14
|
+
|
15
|
+
t.string :applied_species, null: false, default: '', limit: 200
|
16
|
+
t.column :applied_field_code, 'char(4)', null: false, default: 'FACE'
|
17
|
+
|
18
|
+
t.text :instruction
|
19
|
+
t.text :description
|
20
|
+
|
21
|
+
t.column :state, 'char(1)', null: false, default: Unidom::Common::STATE
|
22
|
+
t.datetime :opened_at, null: false, default: Unidom::Common::OPENED_AT
|
23
|
+
t.datetime :closed_at, null: false, default: Unidom::Common::CLOSED_AT
|
24
|
+
t.boolean :defunct, null: false, default: false
|
25
|
+
t.jsonb :notation, null: false, default: {}
|
26
|
+
|
27
|
+
t.timestamps null: false
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
add_index :unidom_pattern_libraries, :subject_id
|
32
|
+
add_index :unidom_pattern_libraries, :matched_processor_id
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class CreateUnidomPatternLibraryInclusions < ActiveRecord::Migration[6.0]
|
2
|
+
|
3
|
+
def change
|
4
|
+
|
5
|
+
create_table :unidom_pattern_library_inclusions, id: :uuid do |t|
|
6
|
+
|
7
|
+
t.references :pattern_library, type: :uuid, null: false
|
8
|
+
t.references :pattern, type: :uuid, null: false,
|
9
|
+
polymorphic: { null: false, default: '', limit: 200 }, index: false
|
10
|
+
|
11
|
+
t.text :instruction
|
12
|
+
t.text :description
|
13
|
+
|
14
|
+
t.column :state, 'char(1)', null: false, default: Unidom::Common::STATE
|
15
|
+
t.datetime :opened_at, null: false, default: Unidom::Common::OPENED_AT
|
16
|
+
t.datetime :closed_at, null: false, default: Unidom::Common::CLOSED_AT
|
17
|
+
t.boolean :defunct, null: false, default: false
|
18
|
+
t.jsonb :notation, null: false, default: {}
|
19
|
+
|
20
|
+
t.timestamps null: false
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
add_index :unidom_pattern_library_inclusions, :pattern_id
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
describe Unidom::Stapar::PatternLibraryInclusion, type: :model do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
end
|
7
|
+
|
8
|
+
after :each do
|
9
|
+
end
|
10
|
+
|
11
|
+
context do
|
12
|
+
|
13
|
+
classifier = Unidom::Stapar::Classifier.first_or_create! supplier_name: 'Intelligent Works',
|
14
|
+
algorithm_name: 'FR Pro',
|
15
|
+
data_format_version: 1,
|
16
|
+
applied_species: 'Homo sapiens',
|
17
|
+
applied_field_code: 'FACE'
|
18
|
+
|
19
|
+
subject = classifier
|
20
|
+
matched_processor = classifier
|
21
|
+
|
22
|
+
pattern_library = Unidom::Stapar::PatternLibrary.first_or_create! subject: subject,
|
23
|
+
matched_processor: matched_processor,
|
24
|
+
name: 'Door Guard',
|
25
|
+
valve_percentage: 60,
|
26
|
+
applied_species: 'Homo sapiens',
|
27
|
+
applied_field_code: 'FACE'
|
28
|
+
|
29
|
+
pattern = classifier
|
30
|
+
|
31
|
+
model_attributes = {
|
32
|
+
pattern_library: pattern_library,
|
33
|
+
pattern: pattern
|
34
|
+
}
|
35
|
+
|
36
|
+
it_behaves_like 'Unidom::Common::Concerns::ModelExtension', model_attributes
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::PatternLibraryInclusion'
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
describe Unidom::Stapar::PatternLibrary, type: :model do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
end
|
7
|
+
|
8
|
+
after :each do
|
9
|
+
end
|
10
|
+
|
11
|
+
context do
|
12
|
+
|
13
|
+
classifier = Unidom::Stapar::Classifier.first_or_create! supplier_name: 'Intelligent Works',
|
14
|
+
algorithm_name: 'FR Pro',
|
15
|
+
data_format_version: 1,
|
16
|
+
applied_species: 'Homo sapiens',
|
17
|
+
applied_field_code: 'FACE'
|
18
|
+
subject = classifier
|
19
|
+
matched_processor = classifier
|
20
|
+
|
21
|
+
model_attributes = {
|
22
|
+
subject: subject,
|
23
|
+
matched_processor: matched_processor,
|
24
|
+
name: 'Door Guard',
|
25
|
+
valve_percentage: 60,
|
26
|
+
applied_species: 'Homo sapiens',
|
27
|
+
applied_field_code: 'FACE'
|
28
|
+
}
|
29
|
+
|
30
|
+
it_behaves_like 'Unidom::Common::Concerns::ModelExtension', model_attributes
|
31
|
+
|
32
|
+
it_behaves_like 'validates text', model_attributes, :name,
|
33
|
+
length: 2..described_class.columns_hash['name'].limit
|
34
|
+
it_behaves_like 'validates numericality', model_attributes, :valve_percentage,
|
35
|
+
range: 0..100, minimum_inclusive: false, maximum_inclusive: true, only_integer: true
|
36
|
+
it_behaves_like 'validates text', model_attributes, :applied_species,
|
37
|
+
length: 2..described_class.columns_hash['applied_species'].limit
|
38
|
+
|
39
|
+
it_behaves_like 'ProgneTapera::EnumCode', described_class.new(model_attributes), :applied_field, Unidom::Stapar::AppliedField
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::PatternLibrary'
|
@@ -1,2 +1,4 @@
|
|
1
|
-
require 'rspec/models/unidom/stapar/classifier_spec'
|
2
|
-
require 'rspec/models/unidom/stapar/pattern_matching_spec'
|
1
|
+
require 'rspec/models/unidom/stapar/classifier_spec' unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::Classifier'
|
2
|
+
require 'rspec/models/unidom/stapar/pattern_matching_spec' unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::PatternMatching'
|
3
|
+
require 'rspec/models/unidom/stapar/pattern_library_spec' unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::PatternLibrary'
|
4
|
+
require 'rspec/models/unidom/stapar/pattern_library_inclusion_spec' unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::PatternLibraryInclusion'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unidom-stapar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.4'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Topbit Du
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-05-
|
11
|
+
date: 2020-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: unidom-common
|
@@ -45,7 +45,10 @@ files:
|
|
45
45
|
- app/models/unidom/stapar/application_record.rb
|
46
46
|
- app/models/unidom/stapar/classifier.rb
|
47
47
|
- app/models/unidom/stapar/concerns/as_feature.rb
|
48
|
+
- app/models/unidom/stapar/concerns/as_matched_processor.rb
|
48
49
|
- app/models/unidom/stapar/concerns/as_sample.rb
|
50
|
+
- app/models/unidom/stapar/pattern_library.rb
|
51
|
+
- app/models/unidom/stapar/pattern_library_inclusion.rb
|
49
52
|
- app/models/unidom/stapar/pattern_matching.rb
|
50
53
|
- app/types/unidom/stapar/applied_field.rb
|
51
54
|
- app/views/layouts/unidom/stapar/application.html.erb
|
@@ -54,9 +57,13 @@ files:
|
|
54
57
|
- config/routes.rb
|
55
58
|
- db/migrate/20060101000000_create_unidom_classifiers.rb
|
56
59
|
- db/migrate/20060102000000_create_unidom_pattern_matchings.rb
|
60
|
+
- db/migrate/20060111000000_create_unidom_pattern_libraries.rb
|
61
|
+
- db/migrate/20060112000000_create_unidom_pattern_library_inclusions.rb
|
57
62
|
- lib/rspec/models/unidom/stapar/classifier_spec.rb
|
58
63
|
- lib/rspec/models/unidom/stapar/concerns/as_feature_shared_examples.rb
|
59
64
|
- lib/rspec/models/unidom/stapar/concerns/as_sample_shared_examples.rb
|
65
|
+
- lib/rspec/models/unidom/stapar/pattern_library_inclusion_spec.rb
|
66
|
+
- lib/rspec/models/unidom/stapar/pattern_library_spec.rb
|
60
67
|
- lib/rspec/models/unidom/stapar/pattern_matching_spec.rb
|
61
68
|
- lib/rspec/types/unidom/stapar/applied_field_spec.rb
|
62
69
|
- lib/tasks/unidom/stapar_tasks.rake
|