Class: Prosereflect::Transform::AddNodeMarkStep
- Defined in:
- lib/prosereflect/transform/mark_step.rb
Overview
Add mark to a specific node (not range-based)
Instance Attribute Summary collapse
-
#mark ⇒ Object
readonly
Returns the value of attribute mark.
-
#pos ⇒ Object
readonly
Returns the value of attribute pos.
Class Method Summary collapse
Instance Method Summary collapse
- #apply(doc) ⇒ Object
- #get_map ⇒ Object
-
#initialize(pos, mark) ⇒ AddNodeMarkStep
constructor
A new instance of AddNodeMarkStep.
- #invert(_doc) ⇒ Object
- #step_type ⇒ Object
- #to_json(*_args) ⇒ Object
Methods inherited from Step
Constructor Details
#initialize(pos, mark) ⇒ AddNodeMarkStep
Returns a new instance of AddNodeMarkStep.
149 150 151 152 153 |
# File 'lib/prosereflect/transform/mark_step.rb', line 149 def initialize(pos, mark) super() @pos = pos @mark = mark end |
Instance Attribute Details
#mark ⇒ Object (readonly)
Returns the value of attribute mark.
147 148 149 |
# File 'lib/prosereflect/transform/mark_step.rb', line 147 def mark @mark end |
#pos ⇒ Object (readonly)
Returns the value of attribute pos.
147 148 149 |
# File 'lib/prosereflect/transform/mark_step.rb', line 147 def pos @pos end |
Class Method Details
.from_json(_schema, json) ⇒ Object
185 186 187 188 |
# File 'lib/prosereflect/transform/mark_step.rb', line 185 def self.from_json(_schema, json) mark = Prosereflect::Mark.from_h(json["mark"]) new(json["pos"], mark) end |
Instance Method Details
#apply(doc) ⇒ Object
155 156 157 158 159 160 161 162 163 164 |
# File 'lib/prosereflect/transform/mark_step.rb', line 155 def apply(doc) return Result.fail("Invalid position") if @pos.negative? || @pos > doc.node_size begin new_doc = add_mark_to_node(doc) Result.ok(new_doc) rescue StandardError => e Result.fail(e.) end end |
#get_map ⇒ Object
166 167 168 |
# File 'lib/prosereflect/transform/mark_step.rb', line 166 def get_map StepMap.new end |
#invert(_doc) ⇒ Object
170 171 172 |
# File 'lib/prosereflect/transform/mark_step.rb', line 170 def invert(_doc) RemoveNodeMarkStep.new(@pos, @mark) end |
#step_type ⇒ Object
174 175 176 |
# File 'lib/prosereflect/transform/mark_step.rb', line 174 def step_type "addNodeMark" end |
#to_json(*_args) ⇒ Object
178 179 180 181 182 183 |
# File 'lib/prosereflect/transform/mark_step.rb', line 178 def to_json(*_args) json = super json["pos"] = @pos json["mark"] = @mark.to_h json end |