unidom-stapar 0.4 → 0.5

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
  SHA256:
3
- metadata.gz: 2a0e9dacdb2f6ac07c4f3dfd2c1ea51be5e0d5dabc8bba539c8c9dcacce49aae
4
- data.tar.gz: e779aa108d78407a7a20f0a9912f9aa5282246b4f77c15708738f4717575a44b
3
+ metadata.gz: dbfcbda29d967437d90d3d8578b33a801600a050ccb72f32ef81e801c2e101ce
4
+ data.tar.gz: e93dd8faf4d27b239fd6f4b1d3af472428875aab451b871ff0fd038831a31bc4
5
5
  SHA512:
6
- metadata.gz: 1aa287850f774552ab4b96306da2fce852970e00126332f0aa8be9b05e24fd0aaa72508ef98cbc2bb16058c15060955d23dfead5aea0fdc60b048992d5183aea
7
- data.tar.gz: ec65474ff75be570d78d892ebd595f1fb0024da6a90e75fd3ed7ef3537ab160b0894faf8a62f42245b08b1f1df179f0baa986016535979671359877ac00f743a
6
+ metadata.gz: 323b9e86fe4c642f7e3c4a58b5582bb772a546116b6f071fa3b6e69b920807e6d8c6b1f11257e3edff3f5d43d101ed426848a4811266558a9a5bc8dd859a5dcc
7
+ data.tar.gz: 80d4fd85e3f7a682b423a01d9da92b0814540f0d1d01aafca504c7e1ba35bea5951462ca5819b7be4441cc6011ebdf7956e1d272512fc7f28c477a55611e440b
@@ -14,7 +14,7 @@ module Unidom::Stapar
14
14
  validates :data_format_version, presence: true, numericality: { greater_than: 0, less_than_or_equal_to: Unidom::Common::MAXIMUM_AMOUNT, only_integer: true }
15
15
  validates :applied_species, presence: true, length: { in: 2..self.columns_hash['applied_species'].limit }
16
16
 
17
- #has_many :features
17
+ has_many :features, class_name: 'Unidom::Stapar::Feature'
18
18
 
19
19
  code :applied_field, Unidom::Stapar::AppliedField
20
20
 
@@ -1,27 +1,30 @@
1
1
  ##
2
2
  # As Feature 是特征的领域逻辑关注点。
3
3
 
4
- module Unidom::Stapar::Concerns::AsFeature
4
+ module Unidom::Stapar
5
+ module Concerns
6
+ module AsFeature
5
7
 
6
- extend ActiveSupport::Concern
8
+ extend ActiveSupport::Concern
7
9
 
8
- included do |includer|
10
+ included do |includer|
9
11
 
10
- validates :extracted_link, allow_blank: true, length: { in: 4..self.class.columns_hash[:extracted_link].limit }
11
- validates :feature_link, presence: true, length: { in: 4..self.class.columns_hash[:feature_link].limit }
12
+ belongs_to :sample, class_name: 'Unidom::Stapar::Sample'
13
+ belongs_to :classifier, class_name: 'Unidom::Stapar::Classifier'
12
14
 
13
- belongs_to :classifier, class_name: 'Unidom::Stapar::Classifier'
14
- belongs_to :sample, polymorphic: true
15
+ scope :classified_by, -> (classifier) { where classifier_id: to_id(classifier) }
16
+ scope :extracted_from, -> (sample) { where sample: sample }
15
17
 
16
- scope :classified_by, -> (classifier) { where classifier_id: to_id(classifier) }
17
- scope :extracted_from, -> (sample) { where sample: sample }
18
- scope :extracted_link_is, -> (extracted_link) { where extracted_link: extracted_link }
19
- scope :feature_link_is, -> (feature_link) { where feature_link: feature_link }
18
+ #def is_classified!(into: nil, per: nil, by: nil, at: Time.now)
19
+ # create! sample: self, classifier: by, extracted_link: per, feature_link: into, opened_at: at
20
+ #end
20
21
 
21
- end
22
+ end
22
23
 
23
- module ClassMethods
24
+ module ClassMethods
24
25
 
25
- end
26
+ end
26
27
 
28
+ end
29
+ end
27
30
  end
@@ -0,0 +1,23 @@
1
+ ##
2
+ # As Input Feature 是模式匹配中输入模式的逻辑关注点。
3
+
4
+ module Unidom::Stapar
5
+ module Concerns
6
+ module AsInputFeature
7
+
8
+ extend ActiveSupport::Concern
9
+
10
+ included do |includer|
11
+
12
+ has_many :matched_pattern_matchings, class_name: 'Unidom::Stapar::PatternMatching', as: :input
13
+ has_many :matched_patterns, through: :matched_pattern_matchings, source: :matched, source_type: 'Unidom::Stapar::Feature'
14
+
15
+ end
16
+
17
+ module ClassMethods
18
+
19
+ end
20
+
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,29 @@
1
+ ##
2
+ # As Input Sample 是模式匹配中输入样本的逻辑关注点。
3
+
4
+ module Unidom::Stapar
5
+ module Concerns
6
+ module AsInputSample
7
+
8
+ extend ActiveSupport::Concern
9
+ extend AsSample
10
+
11
+ included do |includer|
12
+
13
+ #includer.class_eval do
14
+ # include AsSample
15
+ #end
16
+
17
+ has_many :matched_pattern_matchings, through: :features, as: :input #, class_name: 'Unidom::Stapar::PatternMatching'
18
+ has_many :matched_patterns, through: :matched_pattern_matchings, source: :matched, source_type: 'Unidom::Stapar::Feature'
19
+ has_many :matched_samples, through: :matched_patterns, source: :sample
20
+
21
+ end
22
+
23
+ module ClassMethods
24
+
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,23 @@
1
+ ##
2
+ # As Matched Feature 是模式匹配中匹配模式的逻辑关注点。
3
+
4
+ module Unidom::Stapar
5
+ module Concerns
6
+ module AsMatchedFeature
7
+
8
+ extend ActiveSupport::Concern
9
+
10
+ included do |includer|
11
+
12
+ has_many :input_pattern_matchings, class_name: 'Unidom::Stapar::PatternMatching', as: :matched
13
+ has_many :input_patterns, through: :matched_pattern_matchings, source: :input, source_type: 'Unidom::Stapar::Feature'
14
+
15
+ end
16
+
17
+ module ClassMethods
18
+
19
+ end
20
+
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,29 @@
1
+ ##
2
+ # As Matched Sample 是模式匹配中匹配样本的逻辑关注点。
3
+
4
+ module Unidom::Stapar
5
+ module Concerns
6
+ module AsMatchedSample
7
+
8
+ extend ActiveSupport::Concern
9
+ extend AsSample
10
+
11
+ included do |includer|
12
+
13
+ #includer.class_eval do
14
+ # include AsSample
15
+ #end
16
+
17
+ has_many :input_pattern_matchings, through: :features, as: :matched #, class_name: 'Unidom::Stapar::PatternMatching'
18
+ has_many :input_patterns, through: :input_pattern_matchings, source: :input, source_type: 'Unidom::Stapar::Feature'
19
+ has_many :input_samples, through: :input_patterns, source: :sample
20
+
21
+ end
22
+
23
+ module ClassMethods
24
+
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,23 @@
1
+ ##
2
+ # As Pattern 是模式的领域逻辑关注点,主要与模式库交互。
3
+
4
+ module Unidom::Stapar
5
+ module Concerns
6
+ module AsPattern
7
+
8
+ extend ActiveSupport::Concern
9
+
10
+ included do |includer|
11
+
12
+ has_many :pattern_library_inclusions, class_name: 'Unidom::Stapar::PatternLibraryInclusion'
13
+ has_many :pattern_libraries, through: :pattern_library_inclusions
14
+
15
+ end
16
+
17
+ module ClassMethods
18
+
19
+ end
20
+
21
+ end
22
+ end
23
+ end
@@ -1,27 +1,24 @@
1
1
  ##
2
2
  # As Sample 是采样的领域逻辑关注点。
3
3
 
4
- module Unidom::Stapar::Concerns::AsSample
4
+ module Unidom::Stapar
5
+ module Concerns
6
+ module AsSample
5
7
 
6
- extend ActiveSupport::Concern
8
+ extend ActiveSupport::Concern
7
9
 
8
- included do |includer|
10
+ included do |includer|
9
11
 
10
- validates :raw_data_link, presence: true, length: { in: 4..self.class.columns_hash[:raw_data_link].limit }
11
- validates :sampled_at, presence: true
12
+ belongs_to :substance, polymorphic: true
13
+ has_many :features, class_name: 'Unidom::Stapar::Feature'
14
+ #has_many :pattern_library_inclusions, through: :features
15
+ #has_many :pattern_libraries, through: :pattern_library_inclusions
12
16
 
13
- has_many :features, polymorphic: true
17
+ end
14
18
 
15
- scope :raw_data_link_is, -> (raw_data_link) { where raw_data_link: raw_data_link }
19
+ module ClassMethods
20
+ end
16
21
 
17
- def is_classified!(into: nil, per: nil, by: nil, at: Time.now)
18
- create! sample: self, classifier: by, extracted_link: per, feature_link: into, opened_at: at
19
22
  end
20
-
21
23
  end
22
-
23
- module ClassMethods
24
-
25
- end
26
-
27
24
  end
@@ -0,0 +1,24 @@
1
+ ##
2
+ # As Substance 是被取样的客体的领域逻辑关注点。
3
+
4
+ module Unidom::Stapar
5
+ module Concerns
6
+ module AsSubstance
7
+
8
+ extend ActiveSupport::Concern
9
+
10
+ included do |includer|
11
+
12
+ has_many :samples, class_name: 'Unidom::Stapar::Sample'
13
+ # has_many :features, through: :samples
14
+ # has_many :classifiers, through: :features, distinct: true
15
+
16
+ end
17
+
18
+ module ClassMethods
19
+
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,27 @@
1
+ # Feature 表示特征记录。
2
+
3
+ module Unidom::Stapar
4
+ class Feature < ApplicationRecord
5
+
6
+ self.table_name = 'unidom_features'
7
+
8
+ include Unidom::Common::Concerns::ModelExtension
9
+ include ProgneTapera::EnumCode
10
+ include Unidom::Stapar::Concerns::AsFeature
11
+ include Unidom::Stapar::Concerns::AsPattern
12
+ include Unidom::Stapar::Concerns::AsInputFeature
13
+ include Unidom::Stapar::Concerns::AsMatchedFeature
14
+
15
+ validates :extracted_link, presence: true, length: { in: 4..self.columns_hash['extracted_link'].limit }
16
+ validates :extracted_mime_type, presence: true, length: { in: 4..self.columns_hash['extracted_mime_type'].limit }
17
+ validates :extracted_file_size, presence: true, numericality: { greater_than_or_equal_to: -1, less_than_or_equal_to: Unidom::Common::MAXIMUM_AMOUNT, only_integer: true }
18
+
19
+ validates :feature_link, presence: true, length: { in: 4..self.columns_hash['feature_link'].limit }
20
+ validates :feature_mime_type, presence: true, length: { in: 4..self.columns_hash['feature_mime_type'].limit }
21
+ validates :feature_file_size, presence: true, numericality: { greater_than_or_equal_to: -1, less_than_or_equal_to: Unidom::Common::MAXIMUM_AMOUNT, only_integer: true }
22
+
23
+ scope :extracted_link_is, -> (extracted_link) { where extracted_link: extracted_link }
24
+ scope :feature_link_is, -> (feature_link) { where feature_link: feature_link }
25
+
26
+ end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::Feature'
27
+ end
@@ -0,0 +1,23 @@
1
+ # Sample 表示采样记录。
2
+
3
+ module Unidom::Stapar
4
+ class Sample < ApplicationRecord
5
+
6
+ self.table_name = 'unidom_samples'
7
+
8
+ include Unidom::Common::Concerns::ModelExtension
9
+ include ProgneTapera::EnumCode
10
+ #include Unidom::Stapar::Concerns::AsSample
11
+ include Unidom::Stapar::Concerns::AsInputSample
12
+ include Unidom::Stapar::Concerns::AsMatchedSample
13
+
14
+ validates :raw_data_link, presence: true, length: { in: 4..self.columns_hash['raw_data_link'].limit }
15
+ validates :raw_data_mime_type, presence: true, length: { in: 4..self.columns_hash['raw_data_mime_type'].limit }
16
+ validates :raw_data_file_size, presence: true, numericality: { greater_than_or_equal_to: -1, less_than_or_equal_to: Unidom::Common::MAXIMUM_AMOUNT, only_integer: true }
17
+
18
+ validates :sampled_at, presence: true
19
+
20
+ scope :raw_data_link_is, -> (raw_data_link) { where raw_data_link: raw_data_link }
21
+
22
+ end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::Sample'
23
+ end
@@ -11,6 +11,7 @@ class CreateUnidomPatternMatchings < ActiveRecord::Migration[6.0]
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
14
+ t.integer :priority, null: false, default: 0
14
15
 
15
16
  t.text :instruction
16
17
  t.text :description
@@ -0,0 +1,32 @@
1
+ class CreateUnidomSamples < ActiveRecord::Migration[6.0]
2
+
3
+ def change
4
+
5
+ create_table :unidom_samples, id: :uuid do |t|
6
+
7
+ t.references :substance, type: :uuid, null: false,
8
+ polymorphic: { null: false, default: '', limit: 200 }, index: false
9
+
10
+ t.string :raw_data_link, null: false, default: '', limit: 200
11
+ t.string :raw_data_mime_type, null: false, default: '', limit: 200
12
+ t.integer :raw_data_file_size, null: false, default: 0
13
+ t.datetime :sampled_at, null: false, default: Unidom::Common::CLOSED_AT
14
+
15
+ t.text :instruction
16
+ t.text :description
17
+
18
+ t.column :state, 'char(1)', null: false, default: Unidom::Common::STATE
19
+ t.datetime :opened_at, null: false, default: Unidom::Common::OPENED_AT
20
+ t.datetime :closed_at, null: false, default: Unidom::Common::CLOSED_AT
21
+ t.boolean :defunct, null: false, default: false
22
+ t.jsonb :notation, null: false, default: {}
23
+
24
+ t.timestamps null: false
25
+
26
+ end
27
+
28
+ add_index :unidom_samples, :substance_id
29
+
30
+ end
31
+
32
+ end
@@ -0,0 +1,35 @@
1
+ class CreateUnidomFeatures < ActiveRecord::Migration[6.0]
2
+
3
+ def change
4
+
5
+ create_table :unidom_features, id: :uuid do |t|
6
+
7
+ t.references :sample, type: :uuid, null: false
8
+ t.references :classifier, type: :uuid, null: false
9
+
10
+ t.string :extracted_link, null: false, default: '', limit: 200
11
+ t.string :extracted_mime_type, null: false, default: '', limit: 200
12
+ t.integer :extracted_file_size, null: false, default: 0
13
+
14
+ t.string :feature_link, null: false, default: '', limit: 200
15
+ t.string :feature_mime_type, null: false, default: '', limit: 200
16
+ t.integer :feature_file_size, null: false, default: 0
17
+
18
+ t.integer :grade, null: false, default: 0
19
+
20
+ t.text :instruction
21
+ t.text :description
22
+
23
+ t.column :state, 'char(1)', null: false, default: Unidom::Common::STATE
24
+ t.datetime :opened_at, null: false, default: Unidom::Common::OPENED_AT
25
+ t.datetime :closed_at, null: false, default: Unidom::Common::CLOSED_AT
26
+ t.boolean :defunct, null: false, default: false
27
+ t.jsonb :notation, null: false, default: {}
28
+
29
+ t.timestamps null: false
30
+
31
+ end
32
+
33
+ end
34
+
35
+ end
@@ -8,6 +8,8 @@ class CreateUnidomPatternLibraryInclusions < ActiveRecord::Migration[6.0]
8
8
  t.references :pattern, type: :uuid, null: false,
9
9
  polymorphic: { null: false, default: '', limit: 200 }, index: false
10
10
 
11
+ t.integer :priority, null: false, default: 0
12
+
11
13
  t.text :instruction
12
14
  t.text :description
13
15
 
@@ -0,0 +1,60 @@
1
+ require 'rails_helper'
2
+
3
+ describe Unidom::Stapar::Feature, 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
+ substance = classifier
19
+
20
+ sample = Unidom::Stapar::Sample.first_or_create! substance_id: substance.id,
21
+ substance_type: substance.class.name,
22
+ raw_data_link: 'https://objectstore/{id}.jpg',
23
+ raw_data_mime_type: 'image/jpeg',
24
+ raw_data_file_size: 1.megabytes,
25
+ sampled_at: Time.now
26
+
27
+ model_attributes = {
28
+ sample_id: sample.id,
29
+ classifier_id: classifier.id,
30
+ extracted_link: 'https://objectstore/{id}/extracted/{sequence}.jpg',
31
+ extracted_mime_type: 'image/jpeg',
32
+ extracted_file_size: 64.kilobytes,
33
+ feature_link: 'https://objectstore/{id}/feature/{sequence}.bin',
34
+ feature_mime_type: 'application/octet-stream',
35
+ feature_file_size: 2.kilobytes,
36
+ grade: 60
37
+ }
38
+
39
+ it_behaves_like 'Unidom::Common::Concerns::ModelExtension', model_attributes
40
+
41
+ it_behaves_like 'validates text', model_attributes, :extracted_link,
42
+ length: 4..described_class.columns_hash['extracted_link'].limit
43
+ it_behaves_like 'validates text', model_attributes, :extracted_mime_type,
44
+ length: 4..described_class.columns_hash['extracted_mime_type'].limit
45
+ it_behaves_like 'validates numericality', model_attributes, :extracted_file_size,
46
+ range: -1..Unidom::Common::MAXIMUM_AMOUNT, minimum_inclusive: true, maximum_inclusive: true, only_integer: true
47
+
48
+ it_behaves_like 'validates text', model_attributes, :feature_link,
49
+ length: 4..described_class.columns_hash['feature_link'].limit
50
+ it_behaves_like 'validates text', model_attributes, :feature_mime_type,
51
+ length: 4..described_class.columns_hash['feature_mime_type'].limit
52
+ it_behaves_like 'validates numericality', model_attributes, :feature_file_size,
53
+ range: -1..Unidom::Common::MAXIMUM_AMOUNT, minimum_inclusive: true, maximum_inclusive: true, only_integer: true
54
+
55
+ #it_behaves_like 'validates numericality', model_attributes, :grade,
56
+ # range: 0..Unidom::Common::MAXIMUM_AMOUNT, minimum_inclusive: true, maximum_inclusive: true, only_integer: true
57
+
58
+ end
59
+
60
+ end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::Feature'
@@ -31,6 +31,8 @@ describe Unidom::Stapar::PatternMatching, type: :model do
31
31
  range: 0..100, minimum_inclusive: false, maximum_inclusive: true, only_integer: false
32
32
  it_behaves_like 'validates numericality', model_attributes, :valve_percentage,
33
33
  range: 0..100, minimum_inclusive: false, maximum_inclusive: true, only_integer: true
34
+ #it_behaves_like 'validates numericality', model_attributes, :priority,
35
+ # range: 0..100, minimum_inclusive: false, maximum_inclusive: true, only_integer: true
34
36
 
35
37
  end
36
38
 
@@ -0,0 +1,40 @@
1
+ require 'rails_helper'
2
+
3
+ describe Unidom::Stapar::Sample, 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
+ substance = classifier
19
+
20
+ model_attributes = {
21
+ substance_id: substance.id,
22
+ substance_type: substance.class.name,
23
+ raw_data_link: 'https://objectstore/{id}.jpg',
24
+ raw_data_mime_type: 'image/jpeg',
25
+ raw_data_file_size: 1.megabytes,
26
+ sampled_at: Time.now,
27
+ }
28
+
29
+ it_behaves_like 'Unidom::Common::Concerns::ModelExtension', model_attributes
30
+
31
+ it_behaves_like 'validates text', model_attributes, :raw_data_link,
32
+ length: 4..described_class.columns_hash['raw_data_link'].limit
33
+ it_behaves_like 'validates text', model_attributes, :raw_data_mime_type,
34
+ length: 4..described_class.columns_hash['raw_data_mime_type'].limit
35
+ it_behaves_like 'validates numericality', model_attributes, :raw_data_file_size,
36
+ range: -1..Unidom::Common::MAXIMUM_AMOUNT, minimum_inclusive: true, maximum_inclusive: true, only_integer: true
37
+
38
+ end
39
+
40
+ end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::Sample'
@@ -1,4 +1,6 @@
1
1
  require 'rspec/models/unidom/stapar/classifier_spec' unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::Classifier'
2
2
  require 'rspec/models/unidom/stapar/pattern_matching_spec' unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::PatternMatching'
3
+ require 'rspec/models/unidom/stapar/sample_spec' unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::Sample'
4
+ require 'rspec/models/unidom/stapar/feature_spec' unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::Feature'
3
5
  require 'rspec/models/unidom/stapar/pattern_library_spec' unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::PatternLibrary'
4
6
  require 'rspec/models/unidom/stapar/pattern_library_inclusion_spec' unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Stapar::PatternLibraryInclusion'
@@ -1,5 +1,5 @@
1
1
  module Unidom
2
2
  module Stapar
3
- VERSION = '0.4'
3
+ VERSION = '0.5'
4
4
  end
5
5
  end
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'
4
+ version: '0.5'
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-03 00:00:00.000000000 Z
11
+ date: 2020-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: unidom-common
@@ -45,11 +45,19 @@ 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_input_feature.rb
49
+ - app/models/unidom/stapar/concerns/as_input_sample.rb
50
+ - app/models/unidom/stapar/concerns/as_matched_feature.rb
48
51
  - app/models/unidom/stapar/concerns/as_matched_processor.rb
52
+ - app/models/unidom/stapar/concerns/as_matched_sample.rb
53
+ - app/models/unidom/stapar/concerns/as_pattern.rb
49
54
  - app/models/unidom/stapar/concerns/as_sample.rb
55
+ - app/models/unidom/stapar/concerns/as_substance.rb
56
+ - app/models/unidom/stapar/feature.rb
50
57
  - app/models/unidom/stapar/pattern_library.rb
51
58
  - app/models/unidom/stapar/pattern_library_inclusion.rb
52
59
  - app/models/unidom/stapar/pattern_matching.rb
60
+ - app/models/unidom/stapar/sample.rb
53
61
  - app/types/unidom/stapar/applied_field.rb
54
62
  - app/views/layouts/unidom/stapar/application.html.erb
55
63
  - config/enum.yml
@@ -57,14 +65,18 @@ files:
57
65
  - config/routes.rb
58
66
  - db/migrate/20060101000000_create_unidom_classifiers.rb
59
67
  - db/migrate/20060102000000_create_unidom_pattern_matchings.rb
68
+ - db/migrate/20060103000000_create_unidom_samples.rb
69
+ - db/migrate/20060104000000_create_unidom_features.rb
60
70
  - db/migrate/20060111000000_create_unidom_pattern_libraries.rb
61
71
  - db/migrate/20060112000000_create_unidom_pattern_library_inclusions.rb
62
72
  - lib/rspec/models/unidom/stapar/classifier_spec.rb
63
73
  - lib/rspec/models/unidom/stapar/concerns/as_feature_shared_examples.rb
64
74
  - lib/rspec/models/unidom/stapar/concerns/as_sample_shared_examples.rb
75
+ - lib/rspec/models/unidom/stapar/feature_spec.rb
65
76
  - lib/rspec/models/unidom/stapar/pattern_library_inclusion_spec.rb
66
77
  - lib/rspec/models/unidom/stapar/pattern_library_spec.rb
67
78
  - lib/rspec/models/unidom/stapar/pattern_matching_spec.rb
79
+ - lib/rspec/models/unidom/stapar/sample_spec.rb
68
80
  - lib/rspec/types/unidom/stapar/applied_field_spec.rb
69
81
  - lib/tasks/unidom/stapar_tasks.rake
70
82
  - lib/unidom/stapar.rb