Module: Onoma

Defined in:
lib/onoma/record/base.rb,
lib/onoma.rb,
lib/onoma/item.rb,
lib/onoma/version.rb,
lib/onoma/migrator.rb,
lib/onoma/relation.rb,
lib/onoma/reference.rb,
lib/onoma/models/sex.rb,
lib/onoma/models/tax.rb,
lib/onoma/reflection.rb,
lib/onoma/models/role.rb,
lib/onoma/models/unit.rb,
lib/onoma/nomenclature.rb,
lib/onoma/models/figure.rb,
lib/onoma/migration/base.rb,
lib/onoma/models/ability.rb,
lib/onoma/models/account.rb,
lib/onoma/models/country.rb,
lib/onoma/models/variety.rb,
lib/onoma/models/crop_set.rb,
lib/onoma/models/currency.rb,
lib/onoma/models/language.rb,
lib/onoma/models/molecule.rb,
lib/onoma/property_nature.rb,
lib/onoma/models/dimension.rb,
lib/onoma/models/indicator.rb,
lib/onoma/nomenclature_set.rb,
lib/onoma/models/tax_nature.rb,
lib/onoma/migrator/reference.rb,
lib/onoma/models/net_service.rb,
lib/onoma/models/soil_nature.rb,
lib/onoma/models/working_set.rb,
lib/onoma/models/event_nature.rb,
lib/onoma/models/guide_nature.rb,
lib/onoma/models/issue_nature.rb,
lib/onoma/models/running_cost.rb,
lib/onoma/migrator/translation.rb,
lib/onoma/models/delivery_mode.rb,
lib/onoma/models/procedure_role.rb,
lib/onoma/models/product_nature.rb,
lib/onoma/migration/actions/base.rb,
lib/onoma/models/activity_family.rb,
lib/onoma/models/analysis_nature.rb,
lib/onoma/models/document_nature.rb,
lib/onoma/models/fence_perimeter.rb,
lib/onoma/models/fiscal_position.rb,
lib/onoma/models/chemical_element.rb,
lib/onoma/models/plant_life_state.rb,
lib/onoma/models/procedure_action.rb,
lib/onoma/models/procedure_nature.rb,
lib/onoma/models/production_usage.rb,
lib/onoma/models/accounting_system.rb,
lib/onoma/models/animal_life_state.rb,
lib/onoma/models/document_category.rb,
lib/onoma/models/identifier_nature.rb,
lib/onoma/models/production_nature.rb,
lib/onoma/models/production_system.rb,
lib/onoma/models/entity_link_nature.rb,
lib/onoma/models/opportunity_origin.rb,
lib/onoma/models/procedure_category.rb,
lib/onoma/models/administrative_area.rb,
lib/onoma/models/plants_growth_level.rb,
lib/onoma/models/soil_cultural_state.rb,
lib/onoma/migration/actions/item_change.rb,
lib/onoma/models/product_nature_variant.rb,
lib/onoma/migration/actions/item_merging.rb,
lib/onoma/migration/actions/item_removal.rb,
lib/onoma/models/chemical_classification.rb,
lib/onoma/models/product_nature_category.rb,
lib/onoma/migration/actions/item_creation.rb,
lib/onoma/models/mammalia_birth_condition.rb,
lib/onoma/models/plant_reproduction_state.rb,
lib/onoma/models/spatial_reference_system.rb,
lib/onoma/models/production_support_nature.rb,
lib/onoma/migration/actions/property_change.rb,
lib/onoma/models/administrative_area_nature.rb,
lib/onoma/models/phosphorus_analysis_method.rb,
lib/onoma/models/residue_elimination_method.rb,
lib/onoma/models/mammalia_reproduction_state.rb,
lib/onoma/migration/actions/property_creation.rb,
lib/onoma/migration/actions/nomenclature_change.rb,
lib/onoma/migration/actions/nomenclature_removal.rb,
lib/onoma/migration/actions/nomenclature_creation.rb,
lib/onoma/models/cation_exchange_capacity_analysis_method.rb

Overview

rubocop:disable Style/MissingRespondToMissing

Defined Under Namespace

Modules: Migration, Migrator, Record Classes: Ability, Account, AccountingSystem, ActivityFamily, AdministrativeArea, AdministrativeAreaNature, AnalysisNature, AnimalLifeState, CationExchangeCapacityAnalysisMethod, ChemicalClassification, ChemicalElement, Country, CropSet, Currency, DeliveryMode, Dimension, DocumentCategory, DocumentNature, EntityLinkNature, Error, EventNature, FencePerimeter, Figure, FiscalPosition, GuideNature, IdentifierNature, Indicator, InvalidProperty, InvalidPropertyNature, IssueNature, Item, ItemNotFound, Language, MammaliaBirthCondition, MammaliaReproductionState, MissingChoices, MissingNomenclature, Molecule, NetService, Nomenclature, NomenclatureSet, OpportunityOrigin, PhosphorusAnalysisMethod, PlantLifeState, PlantReproductionState, PlantsGrowthLevel, ProcedureAction, ProcedureCategory, ProcedureNature, ProcedureRole, ProductNature, ProductNatureCategory, ProductNatureVariant, ProductionNature, ProductionSupportNature, ProductionSystem, ProductionUsage, PropertyNature, Reference, Reflection, Relation, ResidueEliminationMethod, Role, RunningCost, Sex, SoilCulturalState, SoilNature, SpatialReferenceSystem, Tax, TaxNature, Unit, Variety, WorkingSet

Constant Summary collapse

XMLNS =
'http://www.ekylibre.org/XML/2013/nomenclatures'.freeze
NS_SEPARATOR =
'-'.freeze
PROPERTY_TYPES =
i[boolean item item_list choice choice_list string_list date decimal integer nomenclature string symbol].freeze
VERSION =
'0.8.2'

Class Method Summary collapse

Class Method Details

.[](index) ⇒ Object

Give access to named nomenclatures delegate :[], to: :set



106
107
108
# File 'lib/onoma.rb', line 106

def [](index)
  set[index]
end

.allObject



100
101
102
# File 'lib/onoma.rb', line 100

def all
  set.nomenclatures
end

.database_pathObject



50
51
52
# File 'lib/onoma.rb', line 50

def database_path
  root.join('db')
end

.each(&block) ⇒ Object

Browse all nomenclatures



134
135
136
# File 'lib/onoma.rb', line 134

def each(&block)
  set.each(&block)
end

.escape_key(key) ⇒ Object



42
43
44
# File 'lib/onoma.rb', line 42

def escape_key(key)
  key.to_s.gsub('.', '-').to_sym
end

.find(*args) ⇒ Object

Give access to named nomenclatures



111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/onoma.rb', line 111

def find(*args)
  args.extract_options!
  name = args.shift
  nomenclature = find_or_initialize(name)
  if args.empty?
    return nomenclature
  elsif args.size == 1
    return nomenclature.find(args.shift) if nomenclature
  end

  nil
end

.find_or_initialize(name) ⇒ Object



124
125
126
# File 'lib/onoma.rb', line 124

def find_or_initialize(name)
  set[name] || set.load_data_from_xml(name)
end

.load!Object

Force loading of nomenclatures



129
130
131
# File 'lib/onoma.rb', line 129

def load!
  @@set = NomenclatureSet.load_file(reference_path)
end

.load_localesObject



142
143
144
# File 'lib/onoma.rb', line 142

def load_locales
  I18n.load_path.concat(Dir.glob(Onoma.root.join('config', 'locales', '*.yml')))
end

.migrationsObject

Returns list of Onoma::Migration



81
82
83
84
85
# File 'lib/onoma.rb', line 81

def migrations
  Dir.glob(migrations_path.join('*.xml')).sort.collect do |f|
    Onoma::Migration::Base.parse(Pathname.new(f))
  end
end

.migrations_pathObject



54
55
56
# File 'lib/onoma.rb', line 54

def migrations_path
  database_path.join('migrate')
end

.missing_migrationsObject

Returns list of migrations since last done



88
89
90
91
92
93
# File 'lib/onoma.rb', line 88

def missing_migrations
  last_version = reference_version
  migrations.select do |m|
    m.number > last_version
  end
end

.namesObject

Returns the names of the nomenclatures



96
97
98
# File 'lib/onoma.rb', line 96

def names
  set.nomenclature_names
end

.reference_documentObject



69
70
71
72
73
74
75
76
77
78
# File 'lib/onoma.rb', line 69

def reference_document
  unless @document
    f = File.open(reference_path, 'rb')
    @document = Nokogiri::XML(f) do |config|
      config.strict.nonet.noblanks.noent
    end
    f.close
  end
  @document
end

.reference_pathObject



58
59
60
# File 'lib/onoma.rb', line 58

def reference_path
  database_path.join('reference.xml')
end

.reference_versionObject

Returns version of DB



63
64
65
66
67
# File 'lib/onoma.rb', line 63

def reference_version
  return 0 unless reference_path.exist?

  reference_document.root['version'].to_i
end

.rootObject



46
47
48
# File 'lib/onoma.rb', line 46

def root
  Pathname.new(__FILE__).dirname.dirname
end

.setObject



138
139
140
# File 'lib/onoma.rb', line 138

def set
  @@set ||= NomenclatureSet.new
end