Class: Dyndoc::VarsScanner
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)
is_arr=res.map{|k,v| k}.join("").empty?
cpt=-1
res2=[]
res.each{|k,v|
key2=(k.empty? ? (is_arr ? "" : "key")+(cpt+=1).to_s : k)
res0=((v.is_a? Array) ? build_dyn_vars(v) : [["",v]])
res2+=res0.map{|k0,v0| [key2+(k0.empty? ? "" : "." )+k0,v0]}
}
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)
is_arr=res.map{|k,v| k}.join("").empty?
cpt=0
res2=(is_arr ? [] : {})
res.each{|k,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
}
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)
return nil unless txt[0,2]=="<<"
res=tokenize(txt)
return nil if res[:inside].empty?
res=make_vars()
case type
when :dyn
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
res[:inside].map do |e|
vars2= [e[:type][2..-1].strip,(e[:inside] ? make_vars(e) : e[:txt][(e[:type].bytesize+1)...-1] )] vars << vars2
end
vars
end
|