class Dyndoc::VarsScanner

Public Class Methods

new(type=:vars,start=nil,stop=nil,mode=nil,escape=nil) click to toggle source
Calls superclass method Dyndoc::Scanner::new
# File lib/dyndoc/base/scanner.rb, line 814
def initialize(type=:vars,start=nil,stop=nil,mode=nil,escape=nil)
  super
end

Public Instance Methods

build_dyn_vars(res) click to toggle source
# File lib/dyndoc/base/scanner.rb, line 833
    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) click to toggle source
# File lib/dyndoc/base/scanner.rb, line 850
     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) click to toggle source
# File lib/dyndoc/base/scanner.rb, line 870
    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) click to toggle source
# File lib/dyndoc/base/scanner.rb, line 818
    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