format_data_converter 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,14 @@ require "format_data_converter/hasher"
|
|
4
4
|
|
5
5
|
class FDC
|
6
6
|
|
7
|
+
def self.detect_and_to_yaml s
|
8
|
+
Converter.to_yaml(Detector.detect s)
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.detect_and_to_csv s
|
12
|
+
Converter.to_csv(Detector.detect s)
|
13
|
+
end
|
14
|
+
|
7
15
|
def self.detect_and_to_json s
|
8
16
|
Converter.to_json(Detector.detect s)
|
9
17
|
end
|
@@ -15,6 +23,15 @@ class FDC
|
|
15
23
|
def self.detect_and_to_hash s
|
16
24
|
Converter.to_hash_symbols(Detector.detect s)
|
17
25
|
end
|
26
|
+
|
27
|
+
def self.detect_and_to_xml s
|
28
|
+
Converter.to_xml(Detector.detect s)
|
29
|
+
end
|
18
30
|
|
31
|
+
def self.detect_and_to_xls s
|
32
|
+
Converter.to_xls(Detector.detect s)
|
33
|
+
end
|
34
|
+
|
35
|
+
|
19
36
|
end
|
20
37
|
|
@@ -1,5 +1,76 @@
|
|
1
1
|
class Converter
|
2
2
|
|
3
|
+
def self.to_yaml s
|
4
|
+
"Feature not implemented yet!"
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.to_csv s
|
8
|
+
s=stringify(eval(s)).to_s
|
9
|
+
lines=[]
|
10
|
+
items=[]
|
11
|
+
vari1=""
|
12
|
+
vari2=""
|
13
|
+
s=stringify(eval(s)).to_s
|
14
|
+
s=s.gsub("\"",'')
|
15
|
+
s=s.gsub("[",'')
|
16
|
+
s=s.gsub("]",'')
|
17
|
+
s=s.gsub("}",'')
|
18
|
+
s=s.gsub("=>",',')
|
19
|
+
lines=s.split("{")
|
20
|
+
items=lines[1].split(",").map{|word| word+=","}
|
21
|
+
for i in 0..items.length/2-1
|
22
|
+
vari1+=items[i*2]
|
23
|
+
vari2+=items[i*2+1]
|
24
|
+
end
|
25
|
+
vari1=vari1[0..-2]
|
26
|
+
vari2=vari2[0..-2]
|
27
|
+
s=vari1+"\n"+vari2
|
28
|
+
vari1=""
|
29
|
+
for i in 2..lines.length-1
|
30
|
+
items=lines[i].split(",").map{|word| word+=","}
|
31
|
+
for j in 0..items.length/2-1
|
32
|
+
vari1+=items[j*2+1]
|
33
|
+
end
|
34
|
+
vari1=vari1[0..-2]
|
35
|
+
s+="\n"+vari1
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.to_xls s
|
40
|
+
s=stringify(eval(s)).to_s
|
41
|
+
lines=[]
|
42
|
+
columns=[]
|
43
|
+
cols=0
|
44
|
+
rows=0
|
45
|
+
s=s.gsub("\"",'')
|
46
|
+
s=s.gsub("[",'')
|
47
|
+
s=s.gsub("]",'')
|
48
|
+
s=s.gsub("}",'')
|
49
|
+
s=s.gsub("=>",',')
|
50
|
+
lines=s.split("{")
|
51
|
+
rows=lines.length
|
52
|
+
columns=lines[1].split(",")
|
53
|
+
cols=columns.length/2
|
54
|
+
s="<?xml version=\"1.0\"?><Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\"\nxmlns:o=\"urn:schemas-microsoft-com:office:office\"\nxmlns:x=\"urn:schemas-microsoft-com:office:excel\"\nxmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"\n xmlns:html=\"http://www.w3.org/TR/REC-html40\"><Worksheet ss:Name=\"Sheet 1\"><Table ss:ExpandedColumnCount=\""+cols.to_s+"\" ss:ExpandedRowCount=\""+rows.to_s+"\" x:FullColumns=\"1\" x:FullRows=\"1\"><Row>"
|
55
|
+
for i in 0..columns.length/2-1
|
56
|
+
s+="<Cell><Data ss:Type=\"String\">"+columns[i*2]+"</Data></Cell>"
|
57
|
+
end
|
58
|
+
s+="</Row><Row>"
|
59
|
+
for i in 0..columns.length/2-1
|
60
|
+
s+="<Cell><Data ss:Type=\"String\">"+columns[i*2+1]+"</Data></Cell>"
|
61
|
+
end
|
62
|
+
s+="</Row>"
|
63
|
+
for i in 2..lines.length-1
|
64
|
+
columns=lines[i].split(",")
|
65
|
+
s+="<Row>"
|
66
|
+
for j in 0..columns.length/2-1
|
67
|
+
s+="<Cell><Data ss:Type=\"String\">"+columns[j*2+1]+"</Data></Cell>"
|
68
|
+
end
|
69
|
+
s+="</Row></Table></Worksheet></Workbook>"
|
70
|
+
end
|
71
|
+
puts s
|
72
|
+
end
|
73
|
+
|
3
74
|
def self.to_xml s
|
4
75
|
s=stringify(eval(s)).to_s
|
5
76
|
n = 0
|
@@ -8,11 +8,24 @@ class Detector
|
|
8
8
|
Hasher.from_hash(s)
|
9
9
|
elsif detect_activerecord s
|
10
10
|
Hasher.from_activerecord(s)
|
11
|
+
elsif detect_csv
|
12
|
+
Hasher.from_csv(s)
|
11
13
|
else
|
12
14
|
"Type not supported or wrong input!"
|
13
15
|
end
|
14
16
|
end
|
15
17
|
|
18
|
+
def self.detect_csv s
|
19
|
+
str=s
|
20
|
+
lines=str.split("\n")
|
21
|
+
return false if lines.length < 2
|
22
|
+
counter=lines[0].split(",").length
|
23
|
+
for i in 1..lines.length-1
|
24
|
+
return false if lines[i].split(",").length != counter
|
25
|
+
end
|
26
|
+
true
|
27
|
+
end
|
28
|
+
|
16
29
|
def self.detect_xml s
|
17
30
|
if (s[0] == "<") then true
|
18
31
|
else
|
@@ -1,5 +1,25 @@
|
|
1
1
|
class Hasher
|
2
2
|
|
3
|
+
def self.from_csv s
|
4
|
+
lines=[]
|
5
|
+
cols=[]
|
6
|
+
items=[]
|
7
|
+
vari=""
|
8
|
+
s=s.gsub("\"",'')
|
9
|
+
puts s
|
10
|
+
lines=s.split("\n")
|
11
|
+
cols=lines[0].split(",").map{|word| word="\""+word+"\"=>"}
|
12
|
+
for i in 1..lines.length-1
|
13
|
+
items=lines[i].split(",").map{|word| word="\""+word+"\","}
|
14
|
+
var=items[-1]
|
15
|
+
items[-1]=var[0..-2]+"},{"
|
16
|
+
for j in 0..cols.length-1
|
17
|
+
vari+=cols[j]+items[j]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
s="[{"+vari[0..-3]+"]"
|
21
|
+
end
|
22
|
+
|
3
23
|
def self.from_xml s
|
4
24
|
shash = ""
|
5
25
|
arbre = []
|