class Microstation::TextNode

Attributes

ole_obj[R]
original[R]

Public Instance Methods

=~(reg) click to toggle source
# File lib/microstation/text_node.rb, line 83
def =~(reg)
  @original =~ reg 
end
empty?() click to toggle source
# File lib/microstation/text_node.rb, line 13
def empty?
  ole_obj.TextLinesCount == 0
end
method_missing(meth,*args,&block) click to toggle source
# File lib/microstation/text_node.rb, line 99
def method_missing(meth,*args,&block)
  if meth =~ /^[A-Z]/
    ole_obj.send(meth,*args)
  else
    copy = @original.dup
    result = copy.send(meth,*args,&block)
    update(result) unless copy == @original
    result
  end
end
read_ole(ole) click to toggle source
# File lib/microstation/text_node.rb, line 26
def read_ole(ole)
  count = ole.TextLinesCount
  #    debugger if count > 0
  str_array = []
  1.upto(count) do |i|
    str_array << ole.TextLine(i)
  end
  str_array.join("\n")
end
render(h={}) click to toggle source
# File lib/microstation/text_node.rb, line 91
def render(h={})
  return self unless  template?
  template = Liquid::Template.parse(self.to_s)
  result = template.render(h)
  update(result) unless result == @original
  self
end
size() click to toggle source
# File lib/microstation/text_node.rb, line 21
def size
  ole_obj.TextLinesCount
end
template?() click to toggle source
# File lib/microstation/text_node.rb, line 87
def template?
  !!(@original =~ /{{.+}}/)
end
text?() click to toggle source
# File lib/microstation/text_node.rb, line 17
def text?
  false
end
to_regexp() click to toggle source
# File lib/microstation/text_node.rb, line 8
def to_regexp
  Regexp.new(original.to_s)
end
to_s() click to toggle source
# File lib/microstation/text_node.rb, line 79
def to_s
  @original.to_s
end
update_ole!(text) click to toggle source
# File lib/microstation/text_node.rb, line 70
def update_ole!(text)
  ole_obj.DeleteAllTextLines
  text.each_line do |line|
    ole_obj.AddTextLine(line)
  end
  ole_obj.Redraw Microstation::MSD::MsdDrawingModeNormal
  ole_obj.Rewrite
end
write_ole(text) click to toggle source

def _update(text)

update_ole!(text)
@original = text

end

# File lib/microstation/text_node.rb, line 41
def write_ole(text)
  if in_cell?
    write_ole_in_cell(text)
  else
    write_ole_regular(text)
  end
end
write_ole_in_cell(text) click to toggle source
# File lib/microstation/text_node.rb, line 56
def write_ole_in_cell(text)
  begin
    orig_ole = ole_obj
    new_text_ole = ole_obj.Clone
    new_text_ole.DeleteAllTextLines
    text.each_line do |line|
      new_text_ole.AddTextLine(line)
    end
    @ole_obj = new_text_ole
  rescue => e
    @ole_obj = orig_ole
  end
end
write_ole_regular(text) click to toggle source
# File lib/microstation/text_node.rb, line 49
def write_ole_regular(text)
  ole_obj.DeleteAllTextLines
  text.each_line do |line|
    ole_obj.AddTextLine(line)
  end
end