Module: Pione::PNML::LabelExtractor
- Defined in:
- lib/pione/pnml/label-extractor.rb
Overview
LabelExtractor extracts PIONE string from node label.
Class Method Summary collapse
-
.extract_data_expr(label) ⇒ String
Extract a data expression.
-
.extract_data_from_param_sentence(label) ⇒ Hash
Extract key and value pairs from parameter set string.
-
.extract_data_from_param_set(label) ⇒ Hash
Extract key and value pairs from parameter set string.
-
.extract_feature(label) ⇒ String
Extract a feature.
-
.extract_feature_sentence(label) ⇒ String
Extract a feature sentence.
-
.extract_param_sentence(label) ⇒ String
Extract a param sentence.
-
.extract_param_set(label) ⇒ String
Extract a param set.
-
.extract_priority(label) ⇒ Integer
Extract priority.
-
.extract_rule_expr(label) ⇒ String
Extract a rule expression.
-
.extract_ticket(label) ⇒ String
Extract a ticket.
-
.extract_variable_binding(label) ⇒ String
Extract a variable binding sentence.
Class Method Details
.extract_data_expr(label) ⇒ String
Extract a data expression.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 |