Class: Dyndoc::VarsScanner

Inherits:
Scanner
  • Object
show all
Defined in:
lib/dyndoc/base/scanner.rb

Instance Attribute Summary

Attributes inherited from Scanner

#scan

Instance Method Summary collapse

Methods inherited from Scanner

#clean_stack, #extract, #init_atom, #init_strange, #rebuild_after_filter, #token_stack, #tokenize

Constructor Details

#initialize(type = :vars, start = nil, stop = nil, mode = nil, escape = nil) ⇒ VarsScanner

Returns a new instance of VarsScanner.



813
814
815
# File 'lib/dyndoc/base/scanner.rb', line 813

def initialize(type=:vars,start=nil,stop=nil,mode=nil,escape=nil)
  super
end

Instance Method Details

#build_dyn_vars(res) ⇒ Object



832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
# File 'lib/dyndoc/base/scanner.rb', line 832

def build_dyn_vars(res)
#puts "res";p res
  is_arr=res.map{|k,v| k}.join("").empty?
  cpt=-1
  res2=[]
  res.each{|k,v|
#p k;p v
    key2=(k.empty? ? (is_arr ? "" : "key")+(cpt+=1).to_s : k)
    res0=((v.is_a? Array) ? build_dyn_vars(v) : [["",v]])
#puts "res0";p res0
    res2+=res0.map{|k0,v0| [key2+(k0.empty? ? "" : "." )+k0,v0]}
#puts "res2";p res2
  }
#puts "res2";p res2
  res2
end

#build_rb_vars(res) ⇒ Object



849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
# File 'lib/dyndoc/base/scanner.rb', line 849

def build_rb_vars(res)
#puts "res";p res
  is_arr=res.map{|k,v| k}.join("").empty?
  cpt=0
  res2=(is_arr ? [] : {})
  res.each{|k,v|
#p k;p v
    v2=((v.is_a? Array) ? build_rb_vars(v) : v)
    if is_arr
      res2 << v2
    else
      key2=(is_arr ? (cpt+=1) : (k.empty? ? "key"+(cpt+=1).to_s : k).to_sym)
      res2[key2]=v2
    end
  }
#puts "res2";p res2
  res2
end

#build_vars(txt, type = :dyn) ⇒ Object



869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
# File 'lib/dyndoc/base/scanner.rb', line 869

def build_vars(txt,type=:dyn)
#puts "txt";p txt
  return nil unless txt[0,2]=="<<"
  res=tokenize(txt)
  return nil if res[:inside].empty?
  res=make_vars(extract)
  case type
  when :dyn
#puts "res in build_vars";p res
    build_dyn_vars(res)
  when :rb
    build_rb_vars(res)
  when :r
  end
end

#make_vars(res) ⇒ Object



817
818
819
820
821
822
823
824
825
826
827
828
829
830
# File 'lib/dyndoc/base/scanner.rb', line 817

def make_vars(res)
  vars=[]
  start=0
  parts=res[:txt].split(@re_strange,-1).join("").strip
#puts "parts";p parts
#p res
#puts "inside";p res[:inside]
  res[:inside].map do |e|
    vars2= [e[:type][2..-1].strip,(e[:inside] ? make_vars(e) : e[:txt][(e[:type].bytesize+1)...-1] )] #instead of length
    vars << vars2
  end
#puts "vars";p vars
  vars
end