Class: GEDCOM::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/gedcom_ruby.rb

Constant Summary collapse

ANY =
[:any]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ Parser

Returns a new instance of Parser.



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/gedcom_ruby.rb', line 32

def initialize(&block)
  @callbacks = {
    :before => {},
    :after  => {}
  }

  @context_stack = []
  @data_stack = []
  @current_level = -1

  @auto_concat = true

  instance_eval(&block) if block_given?

  after_initialize
end

Instance Attribute Details

#auto_concatObject

Returns the value of attribute auto_concat.



28
29
30
# File 'lib/gedcom_ruby.rb', line 28

def auto_concat
  @auto_concat
end

#callbacksObject (readonly)

Returns the value of attribute callbacks.



29
30
31
# File 'lib/gedcom_ruby.rb', line 29

def callbacks
  @callbacks
end

Instance Method Details

#after(tags, callback = nil, &block) ⇒ Object



61
62
63
64
65
66
67
# File 'lib/gedcom_ruby.rb', line 61

def after(tags, callback=nil, &block)
  tags = [tags].flatten
  callback = check_proc_or_block(callback, &block)

  @callbacks[:after][tags] = default_empty(@callbacks[:after][tags])
  @callbacks[:after][tags].push(callback)
end

#after_initializeObject



49
50
51
# File 'lib/gedcom_ruby.rb', line 49

def after_initialize
  # Template
end

#before(tags, callback = nil, &block) ⇒ Object



53
54
55
56
57
58
59
# File 'lib/gedcom_ruby.rb', line 53

def before(tags, callback=nil, &block)
  tags = [tags].flatten
  callback = check_proc_or_block(callback, &block)

  @callbacks[:before][tags] = default_empty(@callbacks[:before][tags])
  @callbacks[:before][tags].push(callback)
end

#contextObject



84
85
86
# File 'lib/gedcom_ruby.rb', line 84

def context
  @context_stack
end

#parse(file) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/gedcom_ruby.rb', line 69

def parse(file)
  case file
  when String
    if file =~ /\n/mo
      parse_string(file)
    else
      parse_file(file)
    end
  when IO
    parse_io(file)
  else
    raise ArgumentError.new("requires a String or IO")
  end
end