Class: BELParser::Language::Version1_0::Upgrades::ActivityTransformation

Inherits:
Object
  • Object
show all
Includes:
AST::Processor::Mixin, TermTransformation, Parsers::AST::Sexp
Defined in:
lib/bel_parser/language/version1_0/upgrades/activity_transformation.rb

Constant Summary

Constants included from TermTransformation

TermTransformation::ACTIVITIES, TermTransformation::PMODTYPES

Instance Method Summary collapse

Methods included from TermTransformation

#collapse, #on_argument, #on_nested_statement, #on_object, #on_observed_term, #on_simple_statement, #on_statement, #on_subject

Methods included from Parsers::AST::Sexp

#annotation_definition, #argument, #blank_line, build, #comment, #comment_line, #document_property, #domain, #function, #identifier, #keyword, #list, #list_item, #multi_identifier, #name, #namespace_definition, #nested_statement, #object, #observed_term, #parameter, #pattern, #prefix, #relationship, #set, #simple_statement, #statement, #string, #subject, #term, #unset, #uri, #url, #value

Methods included from AST::Processor::Mixin

#handler_missing, #process, #process_all

Instance Method Details

#add_molecular_activity(_activity_identifier) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/bel_parser/language/version1_0/upgrades/activity_transformation.rb', line 28

def add_molecular_activity(_activity_identifier)
  argument(
    term(
      function(
        identifier('molecularActivity')),
      argument(
        parameter(
          prefix(
            identifier('default')),
          value(
            identifier(_activity_identifier))))))
end

#on_function(function_node) ⇒ Object



41
42
43
# File 'lib/bel_parser/language/version1_0/upgrades/activity_transformation.rb', line 41

def on_function(function_node)
  function_node.updated([identifier('activity')])
end

#on_term(term_node) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/bel_parser/language/version1_0/upgrades/activity_transformation.rb', line 14

def on_term(term_node)
  if ACTIVITIES.keys.include?(term_node.function.identifier.string_literal)
    term_node.updated([
                        # activity function
                        process(term_node.function),
                        # original arguments
                        term_node.arguments.map! {|arg| argument(process(arg.child))},
                        # additional molecularActivity argument
                        add_molecular_activity(ACTIVITIES[term_node.function.identifier.string_literal])
                    ].flatten)

  end
end