Class: Prosereflect::Transform::RemoveNodeMarkStep

Inherits:
Step
  • Object
show all
Defined in:
lib/prosereflect/transform/mark_step.rb

Overview

Remove mark from a specific node

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Step

#merge, #to

Constructor Details

#initialize(pos, mark) ⇒ RemoveNodeMarkStep

Returns a new instance of RemoveNodeMarkStep.



211
212
213
214
215
# File 'lib/prosereflect/transform/mark_step.rb', line 211

def initialize(pos, mark)
  super()
  @pos = pos
  @mark = mark
end

Instance Attribute Details

#markObject (readonly)

Returns the value of attribute mark.



209
210
211
# File 'lib/prosereflect/transform/mark_step.rb', line 209

def mark
  @mark
end

#posObject (readonly)

Returns the value of attribute pos.



209
210
211
# File 'lib/prosereflect/transform/mark_step.rb', line 209

def pos
  @pos
end

Class Method Details

.from_json(_schema, json) ⇒ Object



247
248
249
250
# File 'lib/prosereflect/transform/mark_step.rb', line 247

def self.from_json(_schema, json)
  mark = Prosereflect::Mark.from_h(json["mark"])
  new(json["pos"], mark)
end

Instance Method Details

#apply(doc) ⇒ Object



217
218
219
220
221
222
223
224
225
226
# File 'lib/prosereflect/transform/mark_step.rb', line 217

def apply(doc)
  return Result.fail("Invalid position") if @pos.negative? || @pos > doc.node_size

  begin
    new_doc = remove_mark_from_node(doc)
    Result.ok(new_doc)
  rescue StandardError => e
    Result.fail(e.message)
  end
end

#get_mapObject



228
229
230
# File 'lib/prosereflect/transform/mark_step.rb', line 228

def get_map
  StepMap.new
end

#invert(_doc) ⇒ Object



232
233
234
# File 'lib/prosereflect/transform/mark_step.rb', line 232

def invert(_doc)
  AddNodeMarkStep.new(@pos, @mark)
end

#step_typeObject



236
237
238
# File 'lib/prosereflect/transform/mark_step.rb', line 236

def step_type
  "removeNodeMark"
end

#to_json(*_args) ⇒ Object



240
241
242
243
244
245
# File 'lib/prosereflect/transform/mark_step.rb', line 240

def to_json(*_args)
  json = super
  json["pos"] = @pos
  json["mark"] = @mark.to_h
  json
end