Class: Opencdd::Cddal::Serializer

Inherits:
Object
  • Object
show all
Defined in:
lib/opencdd/cddal/serializer.rb

Constant Summary collapse

UNQUOTED_VALUE_RE =

Matches exactly the values the CDDAL lexer can tokenize as a single non-string token: keywords, numbers, dates, IRDIs, local refs, and bare identifiers. Anything not matching must be emitted as a quoted string literal so the lexer can reparse it via scan_string_literal (which is UTF-8 aware via getch).

/\A(?:
  true|false|null|
  -?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?|
  \d{4}-\d{2}-\d{2}|
  [0-9]+\/[0-9]+\/\/\/[A-Za-z0-9_]+(?:_[0-9]+)?\#[A-Za-z0-9_]+|
  [A-Za-z_][A-Za-z0-9_]*\#[A-Za-z0-9_]+(?:\#\#[A-Za-z0-9_]+)?|
  [A-Za-z_][A-Za-z0-9_]*
)\z/x.freeze
HEADER =
<<~CDDAL
  # Generated by Opencdd::Cddal::Serializer
CDDAL

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(database) ⇒ Serializer

Returns a new instance of Serializer.



26
27
28
# File 'lib/opencdd/cddal/serializer.rb', line 26

def initialize(database)
  @database = database
end

Instance Attribute Details

#databaseObject (readonly)

Returns the value of attribute database.



24
25
26
# File 'lib/opencdd/cddal/serializer.rb', line 24

def database
  @database
end

Instance Method Details

#to_cddalObject



30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/opencdd/cddal/serializer.rb', line 30

def to_cddal
  lines = [HEADER.chomp]
  emit_default_aliases(lines)
  emit_value_lists(lines)
  emit_value_terms(lines)
  emit_units(lines)
  emit_class_tree(lines)
  emit_rooted_properties(lines)
  emit_relations(lines)
  emit_view_controls(lines)
  lines.join("\n") + "\n"
end