Module: Pione::PNML::LabelExtractor

Defined in:
lib/pione/pnml/label-extractor.rb

Overview

LabelExtractor extracts PIONE string from node label.

Class Method Summary collapse

Class Method Details

.extract_data_expr(label) ⇒ String

Extract a data expression.

Parameters:

  • label (String)

    node label

Returns:

  • (String)

    data expression without modifier and comment



22
23
24
# File 'lib/pione/pnml/label-extractor.rb', line 22

def extract_data_expr(label)
  extract_string(label, :data_place, :expr)
end

.extract_data_from_param_sentence(label) ⇒ Hash

Extract key and value pairs from parameter set string.

Parameters:

  • label (String)

    node label

Returns:

  • (Hash)

    key and value pairs



136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/pione/pnml/label-extractor.rb', line 136

def extract_data_from_param_sentence(label)
  param_sentence = LabelExtractor.extract_param_sentence(label)
  parsed = Parser.new.param_sentence.parse(param_sentence)

  # variable
  var = parsed[:param_sentence][:expr1][:expr][:variable][:name].to_s

  # value
  expr2 = parsed[:param_sentence][:expr2]
  expr2_offset = find_head_character_position(expr2)
  tail_offset = offset_of(parsed[:tail]) || label.size
  value = label[expr2_offset, tail_offset - expr2_offset]

  return {var => value}
end

.extract_data_from_param_set(label) ⇒ Hash

Extract key and value pairs from parameter set string.

Parameters:

  • label (String)

    node label

Returns:

  • (Hash)

    key and value pairs



105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/pione/pnml/label-extractor.rb', line 105

def extract_data_from_param_set(label)
  param_set = LabelExtractor.extract_param_set(label)

  parsed = Parser.new.expr_place.parse(param_set)
  tail_offset = parsed[:tail] ? parsed[:tail].offset : label.size

  keys = []
  values = []

  found = find_all_by_tree_names(parsed, [:key, :value, :separator, :footer])
  found.each_with_index do |item, index|
    if index % 3 == 0
      keys << item.to_s
    end

    if index % 3 == 1
      offset = find_head_character_position(item)
      separator_offset = found[index + 1] ? found[index + 1].offset : tail_offset
      values << label[offset, separator_offset - offset]
    end
  end

  return Hash[keys.zip(values)]
end

.extract_feature(label) ⇒ String

Extract a feature.

Parameters:

  • label (String)

    node label

Returns:

  • (String)

    feature string without modifier and comment



52
53
54
# File 'lib/pione/pnml/label-extractor.rb', line 52

def extract_feature(label)
  extract_string(label, :expr_place, :expr)
end

.extract_feature_sentence(label) ⇒ String

Extract a feature sentence.

Parameters:

  • label (String)

    node label

Returns:

  • (String)

    feature sentence string without modifier and comment



72
73
74
# File 'lib/pione/pnml/label-extractor.rb', line 72

def extract_feature_sentence(label)
  extract_string(label, :feature_sentence, :feature_sentence)
end

.extract_param_sentence(label) ⇒ String

Extract a param sentence.

Parameters:

  • label (String)

    node label

Returns:

  • (String)

    data expression without modifier and comment



62
63
64
# File 'lib/pione/pnml/label-extractor.rb', line 62

def extract_param_sentence(label)
  extract_string(label, :param_sentence, :param_sentence)
end

.extract_param_set(label) ⇒ String

Extract a param set.

Parameters:

  • name (String)

    node label

Returns:

  • (String)

    parameter set string without modifier and comment



32
33
34
# File 'lib/pione/pnml/label-extractor.rb', line 32

def extract_param_set(label)
  extract_string(label, :expr_place, :expr)
end

.extract_priority(label) ⇒ Integer

Extract priority.

Parameters:

  • label (String)

    node label

Returns:

  • (Integer)

    priority



92
93
94
95
96
97
# File 'lib/pione/pnml/label-extractor.rb', line 92

def extract_priority(label)
  matched = Parser.new.data_priority.parse(label)
  return matched[:priority].to_i
rescue Parslet::ParseFailed
  return nil
end

.extract_rule_expr(label) ⇒ String

Extract a rule expression.

Parameters:

  • label (String)

    node label

Returns:

  • (String)

    rule expression without modifier and comment



12
13
14
# File 'lib/pione/pnml/label-extractor.rb', line 12

def extract_rule_expr(label)
  extract_string(label, :rule_transition, :expr)
end

.extract_ticket(label) ⇒ String

Extract a ticket.

Parameters:

  • label (String)

    node label

Returns:

  • (String)

    ticket string without modifier and comment



42
43
44
# File 'lib/pione/pnml/label-extractor.rb', line 42

def extract_ticket(label)
  extract_string(label, :expr_place, :expr)
end

.extract_variable_binding(label) ⇒ String

Extract a variable binding sentence.

Parameters:

  • label (String)

    node label

Returns:

  • (String)

    variable binding sentence string without modifier and comment



82
83
84
# File 'lib/pione/pnml/label-extractor.rb', line 82

def extract_variable_binding(label)
  extract_string(label, :variable_binding_sentence, :variable_binding_sentence)
end