import_everything 0.1.0 → 0.1.2
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.
- data/Gemfile +20 -0
- data/Gemfile.lock +51 -0
- data/Rakefile +81 -29
- data/VERSION +1 -1
- data/import_everything.gemspec +104 -0
- data/lib/import_everything/{parsers/determine_type.rb → determine_type.rb} +22 -1
- data/lib/import_everything/{parsers → parser}/line_parser.rb +0 -0
- data/lib/import_everything/{parsers → parser}/module_methods.rb +0 -0
- data/lib/import_everything/{parsers → parser}/parser.rb +35 -19
- data/lib/import_everything/parsers/csv_parser.rb +2 -0
- data/lib/import_everything/parsers/sql_parser.rb +1 -1
- data/lib/import_everything/parsers/sqlite_parser.rb +2 -6
- data/lib/import_everything/parsers/xml_parser.rb +2 -2
- data/lib/import_everything/{parsers/preview.rb → preview.rb} +1 -2
- data/lib/import_everything.rb +3 -2
- data/spec/helpers/test_db.rb +31 -0
- data/spec/spec_helper.rb +4 -4
- data/spec/sqlite_parser_spec.rb +1 -27
- data/spec/xml_parser_spec.rb +1 -1
- data/vol/filename_meth.rb +4 -0
- data/vol/test_db_test.rb +4 -0
- data/vol/web_test.rb +38 -0
- data/yard_ext.rb +18 -0
- metadata +199 -62
- data/.gitignore +0 -5
data/Gemfile
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
# Add dependencies required to use your gem here.
|
3
|
+
# Example:
|
4
|
+
# gem "activesupport", ">= 2.3.5"
|
5
|
+
|
6
|
+
# Add dependencies to develop your gem here.
|
7
|
+
# Include everything needed to run rake, tests, features, etc.
|
8
|
+
group :development do
|
9
|
+
gem "rspec", "~> 2.8.0"
|
10
|
+
gem "rdoc", "~> 3.12"
|
11
|
+
gem "bundler", "~> 1.2"
|
12
|
+
gem "jeweler", "~> 1.8.4"
|
13
|
+
gem "rcov", ">= 0"
|
14
|
+
end
|
15
|
+
|
16
|
+
gem "mharris_ext"
|
17
|
+
gem "activesupport"
|
18
|
+
gem 'hpricot'
|
19
|
+
gem 'sqlite3'
|
20
|
+
gem 'yard'
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
activesupport (3.2.9)
|
5
|
+
i18n (~> 0.6)
|
6
|
+
multi_json (~> 1.0)
|
7
|
+
diff-lcs (1.1.3)
|
8
|
+
facets (2.9.3)
|
9
|
+
fattr (2.2.1)
|
10
|
+
git (1.2.5)
|
11
|
+
hpricot (0.8.4)
|
12
|
+
i18n (0.6.1)
|
13
|
+
jeweler (1.8.4)
|
14
|
+
bundler (~> 1.0)
|
15
|
+
git (>= 1.2.5)
|
16
|
+
rake
|
17
|
+
rdoc
|
18
|
+
json (1.7.6)
|
19
|
+
mharris_ext (1.6.0)
|
20
|
+
facets
|
21
|
+
fattr
|
22
|
+
multi_json (1.5.0)
|
23
|
+
rake (10.0.3)
|
24
|
+
rcov (0.9.9)
|
25
|
+
rdoc (3.12)
|
26
|
+
json (~> 1.4)
|
27
|
+
rspec (2.8.0)
|
28
|
+
rspec-core (~> 2.8.0)
|
29
|
+
rspec-expectations (~> 2.8.0)
|
30
|
+
rspec-mocks (~> 2.8.0)
|
31
|
+
rspec-core (2.8.0)
|
32
|
+
rspec-expectations (2.8.0)
|
33
|
+
diff-lcs (~> 1.1.2)
|
34
|
+
rspec-mocks (2.8.0)
|
35
|
+
sqlite3 (1.3.6)
|
36
|
+
yard (0.8.3)
|
37
|
+
|
38
|
+
PLATFORMS
|
39
|
+
ruby
|
40
|
+
|
41
|
+
DEPENDENCIES
|
42
|
+
activesupport
|
43
|
+
bundler (~> 1.2)
|
44
|
+
hpricot
|
45
|
+
jeweler (~> 1.8.4)
|
46
|
+
mharris_ext
|
47
|
+
rcov
|
48
|
+
rdoc (~> 3.12)
|
49
|
+
rspec (~> 2.8.0)
|
50
|
+
sqlite3
|
51
|
+
yard
|
data/Rakefile
CHANGED
@@ -1,49 +1,101 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'rubygems'
|
4
|
+
require 'bundler'
|
5
|
+
begin
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
+
exit e.status_code
|
11
|
+
end
|
2
12
|
require 'rake'
|
3
13
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
end
|
16
|
-
Jeweler::GemcutterTasks.new
|
17
|
-
rescue LoadError
|
18
|
-
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
14
|
+
require 'jeweler'
|
15
|
+
Jeweler::Tasks.new do |gem|
|
16
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
+
gem.name = "import_everything"
|
18
|
+
gem.homepage = "http://github.com/mharris717/import_everything"
|
19
|
+
gem.license = "MIT"
|
20
|
+
gem.summary = %Q{import everything}
|
21
|
+
gem.description = %Q{import everything}
|
22
|
+
gem.email = "mharris717@gmail.com"
|
23
|
+
gem.authors = ["Mike Harris"]
|
24
|
+
# dependencies defined in Gemfile
|
19
25
|
end
|
26
|
+
Jeweler::RubygemsDotOrgTasks.new
|
20
27
|
|
21
|
-
require '
|
22
|
-
|
23
|
-
|
24
|
-
spec.
|
28
|
+
require 'rspec/core'
|
29
|
+
require 'rspec/core/rake_task'
|
30
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
31
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
25
32
|
end
|
26
33
|
|
27
|
-
|
28
|
-
spec.libs << 'lib' << 'spec'
|
34
|
+
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
29
35
|
spec.pattern = 'spec/**/*_spec.rb'
|
30
36
|
spec.rcov = true
|
31
37
|
end
|
32
38
|
|
33
|
-
task :spec => :check_dependencies
|
34
|
-
|
35
39
|
task :default => :spec
|
36
40
|
|
37
|
-
require '
|
41
|
+
require 'rdoc/task'
|
38
42
|
Rake::RDocTask.new do |rdoc|
|
39
|
-
|
40
|
-
version = File.read('VERSION')
|
41
|
-
else
|
42
|
-
version = ""
|
43
|
-
end
|
43
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
44
44
|
|
45
45
|
rdoc.rdoc_dir = 'rdoc'
|
46
46
|
rdoc.title = "import_everything #{version}"
|
47
47
|
rdoc.rdoc_files.include('README*')
|
48
48
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
49
49
|
end
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
require 'yard'
|
54
|
+
YARD::Rake::YardocTask.new do |t|
|
55
|
+
#t.files = ['lib/**/*.rb', OTHER_PATHS] # optional
|
56
|
+
#t.options = ['--any', '--extra', '--opts'] # optional
|
57
|
+
t.options = ["--reload"]
|
58
|
+
end
|
59
|
+
|
60
|
+
namespace :doc do
|
61
|
+
task :generate do
|
62
|
+
puts `yardoc -e yard_ext.rb`
|
63
|
+
end
|
64
|
+
task :server do
|
65
|
+
puts `yard server -e yard_ext.rb --reload`
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
if false
|
71
|
+
require 'pp'
|
72
|
+
File.open("test.txt","w") do |f|
|
73
|
+
f << "Statement\n"
|
74
|
+
PP.pp(statement,f)
|
75
|
+
f << "\n\n"
|
76
|
+
|
77
|
+
modname = statement[0].source
|
78
|
+
mod = register ModuleObject.new(namespace, modname)
|
79
|
+
parse_block(statement[1], :namespace => mod)
|
80
|
+
|
81
|
+
f << "modname\n"
|
82
|
+
PP.pp(modname,f)
|
83
|
+
f << "\n\n"
|
84
|
+
|
85
|
+
f << "namespace\n"
|
86
|
+
PP.pp(namespace,f)
|
87
|
+
f << "\n\n"
|
88
|
+
|
89
|
+
f << "Statement[0]\n"
|
90
|
+
PP.pp(statement[0],f)
|
91
|
+
f << "\n\n"
|
92
|
+
|
93
|
+
f << "Statement[1]\n"
|
94
|
+
PP.pp(statement[1],f)
|
95
|
+
f << "\n\n"
|
96
|
+
|
97
|
+
|
98
|
+
end
|
99
|
+
exit
|
100
|
+
end
|
101
|
+
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
@@ -0,0 +1,104 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "import_everything"
|
8
|
+
s.version = "0.1.2"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Mike Harris"]
|
12
|
+
s.date = "2013-01-08"
|
13
|
+
s.description = "import everything"
|
14
|
+
s.email = "mharris717@gmail.com"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
"Gemfile",
|
22
|
+
"Gemfile.lock",
|
23
|
+
"LICENSE",
|
24
|
+
"README.rdoc",
|
25
|
+
"Rakefile",
|
26
|
+
"VERSION",
|
27
|
+
"import_everything.gemspec",
|
28
|
+
"lib/import_everything.rb",
|
29
|
+
"lib/import_everything/determine_type.rb",
|
30
|
+
"lib/import_everything/ext.rb",
|
31
|
+
"lib/import_everything/parser/line_parser.rb",
|
32
|
+
"lib/import_everything/parser/module_methods.rb",
|
33
|
+
"lib/import_everything/parser/parser.rb",
|
34
|
+
"lib/import_everything/parsers/csv_parser.rb",
|
35
|
+
"lib/import_everything/parsers/sql_parser.rb",
|
36
|
+
"lib/import_everything/parsers/sqlite_parser.rb",
|
37
|
+
"lib/import_everything/parsers/table_parser.rb",
|
38
|
+
"lib/import_everything/parsers/xml_parser.rb",
|
39
|
+
"lib/import_everything/preview.rb",
|
40
|
+
"spec/bets.html",
|
41
|
+
"spec/csv_parser_spec.rb",
|
42
|
+
"spec/helpers/test_db.rb",
|
43
|
+
"spec/howard.html",
|
44
|
+
"spec/import_everything_spec.rb",
|
45
|
+
"spec/junk.rb",
|
46
|
+
"spec/players.csv",
|
47
|
+
"spec/players.sql",
|
48
|
+
"spec/players.xml",
|
49
|
+
"spec/preview_spec.rb",
|
50
|
+
"spec/spec_helper.rb",
|
51
|
+
"spec/sql_parser_spec.rb",
|
52
|
+
"spec/sqlite_parser_spec.rb",
|
53
|
+
"spec/xml_parser_spec.rb",
|
54
|
+
"vol/filename_meth.rb",
|
55
|
+
"vol/test_db_test.rb",
|
56
|
+
"vol/web_test.rb",
|
57
|
+
"yard_ext.rb"
|
58
|
+
]
|
59
|
+
s.homepage = "http://github.com/mharris717/import_everything"
|
60
|
+
s.licenses = ["MIT"]
|
61
|
+
s.require_paths = ["lib"]
|
62
|
+
s.rubygems_version = "1.8.23"
|
63
|
+
s.summary = "import everything"
|
64
|
+
|
65
|
+
if s.respond_to? :specification_version then
|
66
|
+
s.specification_version = 3
|
67
|
+
|
68
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
69
|
+
s.add_runtime_dependency(%q<mharris_ext>, [">= 0"])
|
70
|
+
s.add_runtime_dependency(%q<activesupport>, [">= 0"])
|
71
|
+
s.add_runtime_dependency(%q<hpricot>, [">= 0"])
|
72
|
+
s.add_runtime_dependency(%q<sqlite3>, [">= 0"])
|
73
|
+
s.add_runtime_dependency(%q<yard>, [">= 0"])
|
74
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
|
75
|
+
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
76
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.2"])
|
77
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
78
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
79
|
+
else
|
80
|
+
s.add_dependency(%q<mharris_ext>, [">= 0"])
|
81
|
+
s.add_dependency(%q<activesupport>, [">= 0"])
|
82
|
+
s.add_dependency(%q<hpricot>, [">= 0"])
|
83
|
+
s.add_dependency(%q<sqlite3>, [">= 0"])
|
84
|
+
s.add_dependency(%q<yard>, [">= 0"])
|
85
|
+
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
86
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
87
|
+
s.add_dependency(%q<bundler>, ["~> 1.2"])
|
88
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
89
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
90
|
+
end
|
91
|
+
else
|
92
|
+
s.add_dependency(%q<mharris_ext>, [">= 0"])
|
93
|
+
s.add_dependency(%q<activesupport>, [">= 0"])
|
94
|
+
s.add_dependency(%q<hpricot>, [">= 0"])
|
95
|
+
s.add_dependency(%q<sqlite3>, [">= 0"])
|
96
|
+
s.add_dependency(%q<yard>, [">= 0"])
|
97
|
+
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
98
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
99
|
+
s.add_dependency(%q<bundler>, ["~> 1.2"])
|
100
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
101
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
@@ -8,8 +8,13 @@ module ImportEverything
|
|
8
8
|
file.first_responding(:original_filename, :filename, :path, :name)
|
9
9
|
end
|
10
10
|
end
|
11
|
+
|
12
|
+
|
11
13
|
fattr(:filename) { self.class.get_filename(file) }
|
12
14
|
fattr(:file) { open(filename) }
|
15
|
+
|
16
|
+
# Get the file extension
|
17
|
+
# @return [String] file extension
|
13
18
|
fattr(:ext) { filename.split(".").last.downcase }
|
14
19
|
def method_missing(sym,*args,&b)
|
15
20
|
if sym.to_s[-1..-1] == '='
|
@@ -18,8 +23,12 @@ module ImportEverything
|
|
18
23
|
super
|
19
24
|
end
|
20
25
|
end
|
26
|
+
|
27
|
+
# Store addl ops
|
21
28
|
fattr(:addl_ops) { {} }
|
22
29
|
fattr(:parser_ops) { {:file => file}.merge(addl_ops) }
|
30
|
+
|
31
|
+
# Determines what parser class should be used for this file
|
23
32
|
def parser_class
|
24
33
|
h = {'sqlite' => SqliteParser, 'sqlite3' => SqliteParser, 'csv' => CsvParser, 'xml' => XmlParser, 'sql' => SqlInsertParser, 'dmp' => SqlInsertParser, 'html' => TableParser}
|
25
34
|
h[ext].tap { |x| return x if x }
|
@@ -28,9 +37,21 @@ module ImportEverything
|
|
28
37
|
end
|
29
38
|
raise "no parser found for #{ext}"
|
30
39
|
end
|
40
|
+
|
41
|
+
# Creates the parser
|
31
42
|
def parser
|
32
|
-
# puts "parser ops is #{parser_ops.inspect}"
|
33
43
|
parser_class.new(parser_ops)
|
34
44
|
end
|
45
|
+
|
46
|
+
module Include
|
47
|
+
fattr(:dt) do
|
48
|
+
DetermineType.new
|
49
|
+
end
|
50
|
+
|
51
|
+
%w(filename file).each do |m|
|
52
|
+
define_method(m) { dt.send(m) }
|
53
|
+
define_method("#{m}=") { |v| dt.send("#{m}=",v) }
|
54
|
+
end
|
55
|
+
end
|
35
56
|
end
|
36
57
|
end
|
File without changes
|
File without changes
|
@@ -10,22 +10,28 @@ module ImportEverything
|
|
10
10
|
{:table => row_hash[:table], :values => row_hash[:values].cleaned_hash_values}
|
11
11
|
end
|
12
12
|
end
|
13
|
-
|
14
|
-
fattr(:value_hashes) do
|
15
|
-
parsers.map { |x| x.value_hashes }.flatten
|
16
|
-
end
|
13
|
+
|
17
14
|
fattr(:row_hashes) do
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
15
|
+
value_hashes.map { |x| {:table => table, :values => x} }
|
16
|
+
end
|
17
|
+
|
18
|
+
def value_hashes
|
19
|
+
raise NotImplementedError.new("value_hashes in #{self.class}")
|
23
20
|
end
|
24
|
-
def line_parsers; parsers; end
|
25
|
-
fattr(:filename) { ImportEverything::DetermineType.get_filename(file) }
|
26
|
-
fattr(:file) { open(filename) }
|
27
|
-
fattr(:str) { file.read }
|
28
21
|
|
22
|
+
include DetermineType::Include
|
23
|
+
|
24
|
+
fattr(:str) { file.read }
|
25
|
+
end
|
26
|
+
module ParserPreviewMod
|
27
|
+
fattr(:addl_required_fields) do
|
28
|
+
required_fields.select do |x|
|
29
|
+
send(x).to_s.blank?
|
30
|
+
end
|
31
|
+
end
|
32
|
+
fattr(:required_fields) { [] }
|
33
|
+
end
|
34
|
+
module IterationHelpers
|
29
35
|
def each_row
|
30
36
|
each_table_and_rows do |table,rows|
|
31
37
|
rows.each { |row| yield(table,row) }
|
@@ -43,13 +49,23 @@ module ImportEverything
|
|
43
49
|
res
|
44
50
|
end
|
45
51
|
end
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
52
|
+
Parser.send(:include,ParserPreviewMod)
|
53
|
+
Parser.send(:include,IterationHelpers)
|
54
|
+
|
55
|
+
class Parser
|
56
|
+
class ImpParsers < Parser
|
57
|
+
# subclass must implement parsers or value_hashes
|
58
|
+
# if implemented, should return an array of line parsers
|
59
|
+
def parsers
|
60
|
+
raise NotImplementedError.new("parsers")
|
61
|
+
end
|
62
|
+
def line_parsers; parsers; end
|
63
|
+
fattr(:value_hashes) do
|
64
|
+
parsers.map { |x| x.value_hashes }.flatten
|
65
|
+
end
|
66
|
+
fattr(:row_hashes) do
|
67
|
+
parsers.map { |x| x.row_hashes }.flatten
|
50
68
|
end
|
51
69
|
end
|
52
|
-
fattr(:required_fields) { [] }
|
53
70
|
end
|
54
|
-
Parser.send(:include,ParserPreviewMod)
|
55
71
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module ImportEverything
|
2
|
-
class SqliteParser < Parser
|
2
|
+
class SqliteParser < Parser::ImpParsers
|
3
3
|
fattr(:filfename) do
|
4
4
|
f = Tempfile.new('somedb.sqlite3')
|
5
5
|
f.binmode
|
@@ -7,12 +7,8 @@ module ImportEverything
|
|
7
7
|
f.path
|
8
8
|
end
|
9
9
|
fattr(:db) do
|
10
|
-
gem 'sqlite3-ruby'
|
11
10
|
require 'sqlite3'
|
12
|
-
|
13
|
-
res = SQLite3::Database.new(filename)
|
14
|
-
#get_raw_tables(res)
|
15
|
-
#res
|
11
|
+
SQLite3::Database.new(filename)
|
16
12
|
end
|
17
13
|
def get_raw_tables(db)
|
18
14
|
sql = "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;"
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module ImportEverything
|
2
|
-
class XmlParser < Parser
|
2
|
+
class XmlParser < Parser::ImpParsers
|
3
3
|
attr_accessor :root_path, :table_paths, :xyz
|
4
4
|
#fattr(:table_paths) { [['players','player'],['cities','city']] }
|
5
5
|
#fattr(:root_path) { 'top' }
|
@@ -15,7 +15,7 @@ module ImportEverything
|
|
15
15
|
[:root_path,:table_paths]
|
16
16
|
end
|
17
17
|
|
18
|
-
class TableParser < Parser
|
18
|
+
class TableParser < Parser::ImpParsers
|
19
19
|
attr_accessor :doc, :table, :row_path
|
20
20
|
include FromHash
|
21
21
|
def row_docs
|
data/lib/import_everything.rb
CHANGED
@@ -5,5 +5,6 @@ require 'active_support'
|
|
5
5
|
this_path = File.expand_path(File.dirname(__FILE__))
|
6
6
|
require "#{this_path}/import_everything/ext"
|
7
7
|
paths = Dir["#{this_path}/import_everything/**/*.rb"]
|
8
|
-
paths = paths.make_first { |path| %w(parser.rb line_parser.rb).include?(File.basename(path)) }
|
9
|
-
paths.each { |x| require x }
|
8
|
+
paths = paths.make_first { |path| %w(determine_type.rb parser.rb line_parser.rb).include?(File.basename(path)) }
|
9
|
+
paths.each { |x| require x }
|
10
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
class TestDB
|
2
|
+
class << self
|
3
|
+
fattr(:instance) { new }
|
4
|
+
end
|
5
|
+
fattr(:filename) { "/Code/wheeeee.sqlite3" }
|
6
|
+
fattr(:db_inner) do
|
7
|
+
require 'sqlite3'
|
8
|
+
SQLite3::Database.new(filename)
|
9
|
+
#SQLite3::Database.new(open("http://localhost:3000/wheeeee.sqlite3") { |f| f.read })
|
10
|
+
end
|
11
|
+
fattr(:create) do
|
12
|
+
`rm -f #{filename}`
|
13
|
+
db = db_inner
|
14
|
+
db.execute("CREATE TABLE cities ( name varchar(255) )")
|
15
|
+
db.execute("CREATE TABLE players ( first varchar(255), last varchar(255), age integer)")
|
16
|
+
#raise db.execute("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;").inspect
|
17
|
+
db.execute("INSERT into players (first,last,age) VALUES ('Albert','Pujols',29)")
|
18
|
+
db.execute("INSERT into players (first,last,age) VALUES ('David','Wright',26)")
|
19
|
+
db.execute("INSERT into players (first,last,age) VALUES ('Hanley','Ramirez',27)")
|
20
|
+
db.execute("INSERT into cities (name) VALUES ('Madison')")
|
21
|
+
raise "foo" unless db.execute("select count(*) from players").flatten.first.to_i == 3
|
22
|
+
end
|
23
|
+
fattr(:db) do
|
24
|
+
create
|
25
|
+
db_inner
|
26
|
+
end
|
27
|
+
#def create; end
|
28
|
+
end
|
29
|
+
def create_test_db!
|
30
|
+
|
31
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
2
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
3
|
require 'import_everything'
|
4
|
-
require 'spec'
|
5
|
-
require 'spec/autorun'
|
4
|
+
#require 'spec'
|
5
|
+
#require 'spec/autorun'
|
6
6
|
|
7
|
-
|
7
|
+
RSpec.configure do |config|
|
8
8
|
|
9
9
|
end
|
10
10
|
|
@@ -14,7 +14,7 @@ def mit(name,&b)
|
|
14
14
|
it(name,&b) #if name == 'parses values'
|
15
15
|
end
|
16
16
|
|
17
|
-
|
17
|
+
RSpec::Matchers.define :size do |exp_size|
|
18
18
|
match do |arr|
|
19
19
|
arr.size == exp_size
|
20
20
|
end
|
data/spec/sqlite_parser_spec.rb
CHANGED
@@ -1,32 +1,6 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
2
|
|
3
|
-
|
4
|
-
class << self
|
5
|
-
fattr(:instance) { new }
|
6
|
-
end
|
7
|
-
fattr(:filename) { "/Code/wheeeee.sqlite3" }
|
8
|
-
fattr(:db) do
|
9
|
-
gem 'sqlite3-ruby'
|
10
|
-
require 'sqlite3'
|
11
|
-
SQLite3::Database.new(filename)
|
12
|
-
#SQLite3::Database.new(open("http://localhost:3000/wheeeee.sqlite3") { |f| f.read })
|
13
|
-
end
|
14
|
-
fattr(:crefate) do
|
15
|
-
`rm -f #{filename}`
|
16
|
-
db.execute("CREATE TABLE cities ( name varchar(255) )")
|
17
|
-
db.execute("CREATE TABLE players ( first varchar(255), last varchar(255), age integer)")
|
18
|
-
#raise db.execute("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;").inspect
|
19
|
-
db.execute("INSERT into players (first,last,age) VALUES ('Albert','Pujols',29)")
|
20
|
-
db.execute("INSERT into players (first,last,age) VALUES ('David','Wright',26)")
|
21
|
-
db.execute("INSERT into players (first,last,age) VALUES ('Hanley','Ramirez',27)")
|
22
|
-
db.execute("INSERT into cities (name) VALUES ('Madison')")
|
23
|
-
raise "foo" unless db.execute("select count(*) from players").flatten.first.to_i == 3
|
24
|
-
end
|
25
|
-
def create; end
|
26
|
-
end
|
27
|
-
def create_test_db!
|
28
|
-
|
29
|
-
end
|
3
|
+
load "spec/helpers/test_db.rb"
|
30
4
|
|
31
5
|
# raise TestDB.instance.db.execute2("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;").flatten.inspect
|
32
6
|
|
data/spec/xml_parser_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
3
3
|
describe "ImportEverything" do
|
4
4
|
describe XmlParser do
|
5
5
|
before do
|
6
|
-
@parser = XmlParser.new(:filename => "/Code/import_everything/spec/players.xml", :root_path => 'top', :table_paths => [['players','player'],['cities','city']])
|
6
|
+
@parser = XmlParser.new(:filename => "/Code/orig/import_everything_all/import_everything/spec/players.xml", :root_path => 'top', :table_paths => [['players','player'],['cities','city']])
|
7
7
|
#@parser.table_paths = nil
|
8
8
|
end
|
9
9
|
it 'smoke' do
|
data/vol/test_db_test.rb
ADDED
data/vol/web_test.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'pp'
|
3
|
+
require 'net/http'
|
4
|
+
load "lib/import_everything.rb"
|
5
|
+
|
6
|
+
csv = "a,b,c
|
7
|
+
1,2,3
|
8
|
+
4,5,6"
|
9
|
+
|
10
|
+
def get_parsed(body,filename=nil)
|
11
|
+
uri = URI('http://localhost:4000/get')
|
12
|
+
params = { :body => body, :filename => filename }
|
13
|
+
uri.query = URI.encode_www_form(params)
|
14
|
+
|
15
|
+
res = Net::HTTP.get_response(uri)
|
16
|
+
rows = JSON.parse(res.body)
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
rows = get_parsed csv
|
21
|
+
puts rows.class
|
22
|
+
pp rows
|
23
|
+
|
24
|
+
sql = "insert into widgets (color,price) values ('Black',10);"
|
25
|
+
sql = File.read("spec/players.sql")
|
26
|
+
|
27
|
+
rows = get_parsed sql, "widgets.sql"
|
28
|
+
pp rows
|
29
|
+
|
30
|
+
if false
|
31
|
+
|
32
|
+
|
33
|
+
parser = ImportEverything::SqlInsertParser::LineParser.new(:line => sql)
|
34
|
+
puts parser.value_hash.inspect
|
35
|
+
|
36
|
+
parser = ImportEverything::SqlInsertParser.new(:str => sql, :filename => "abc.sql", :file => nil)
|
37
|
+
puts parser.value_hashes.inspect
|
38
|
+
end
|
data/yard_ext.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'yard'
|
2
|
+
class FattrHandler < YARD::Handlers::Ruby::AttributeHandler
|
3
|
+
handles method_call(:fattr)
|
4
|
+
namespace_only
|
5
|
+
|
6
|
+
def process
|
7
|
+
name = statement.parameters.first.jump(:tstring_content, :ident).source
|
8
|
+
object = YARD::CodeObjects::MethodObject.new(namespace, name)
|
9
|
+
register(object)
|
10
|
+
parse_block(statement.last.last, :owner => object)
|
11
|
+
|
12
|
+
# modify the object
|
13
|
+
object.dynamic = true
|
14
|
+
|
15
|
+
# add custom metadata to the object
|
16
|
+
object['custom_field'] = 'Generated by Fattr'
|
17
|
+
end
|
18
|
+
end
|
metadata
CHANGED
@@ -1,64 +1,207 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: import_everything
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 1
|
8
|
-
- 0
|
9
|
-
version: 0.1.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.2
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Mike Harris
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
12
|
+
date: 2013-01-08 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: mharris_ext
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: activesupport
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: hpricot
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: sqlite3
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: yard
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
21
95
|
name: rspec
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 2.8.0
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 2.8.0
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: rdoc
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '3.12'
|
118
|
+
type: :development
|
22
119
|
prerelease: false
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '3.12'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: bundler
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ~>
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '1.2'
|
30
134
|
type: :development
|
31
|
-
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ~>
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '1.2'
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: jeweler
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ~>
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: 1.8.4
|
150
|
+
type: :development
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ~>
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: 1.8.4
|
158
|
+
- !ruby/object:Gem::Dependency
|
159
|
+
name: rcov
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
162
|
+
requirements:
|
163
|
+
- - ! '>='
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '0'
|
166
|
+
type: :development
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ! '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
32
174
|
description: import everything
|
33
175
|
email: mharris717@gmail.com
|
34
176
|
executables: []
|
35
|
-
|
36
177
|
extensions: []
|
37
|
-
|
38
|
-
extra_rdoc_files:
|
178
|
+
extra_rdoc_files:
|
39
179
|
- LICENSE
|
40
180
|
- README.rdoc
|
41
|
-
files:
|
181
|
+
files:
|
42
182
|
- .document
|
43
|
-
-
|
183
|
+
- Gemfile
|
184
|
+
- Gemfile.lock
|
44
185
|
- LICENSE
|
45
186
|
- README.rdoc
|
46
187
|
- Rakefile
|
47
188
|
- VERSION
|
189
|
+
- import_everything.gemspec
|
48
190
|
- lib/import_everything.rb
|
191
|
+
- lib/import_everything/determine_type.rb
|
49
192
|
- lib/import_everything/ext.rb
|
193
|
+
- lib/import_everything/parser/line_parser.rb
|
194
|
+
- lib/import_everything/parser/module_methods.rb
|
195
|
+
- lib/import_everything/parser/parser.rb
|
50
196
|
- lib/import_everything/parsers/csv_parser.rb
|
51
|
-
- lib/import_everything/parsers/determine_type.rb
|
52
|
-
- lib/import_everything/parsers/line_parser.rb
|
53
|
-
- lib/import_everything/parsers/module_methods.rb
|
54
|
-
- lib/import_everything/parsers/parser.rb
|
55
|
-
- lib/import_everything/parsers/preview.rb
|
56
197
|
- lib/import_everything/parsers/sql_parser.rb
|
57
198
|
- lib/import_everything/parsers/sqlite_parser.rb
|
58
199
|
- lib/import_everything/parsers/table_parser.rb
|
59
200
|
- lib/import_everything/parsers/xml_parser.rb
|
201
|
+
- lib/import_everything/preview.rb
|
60
202
|
- spec/bets.html
|
61
203
|
- spec/csv_parser_spec.rb
|
204
|
+
- spec/helpers/test_db.rb
|
62
205
|
- spec/howard.html
|
63
206
|
- spec/import_everything_spec.rb
|
64
207
|
- spec/junk.rb
|
@@ -70,42 +213,36 @@ files:
|
|
70
213
|
- spec/sql_parser_spec.rb
|
71
214
|
- spec/sqlite_parser_spec.rb
|
72
215
|
- spec/xml_parser_spec.rb
|
73
|
-
|
216
|
+
- vol/filename_meth.rb
|
217
|
+
- vol/test_db_test.rb
|
218
|
+
- vol/web_test.rb
|
219
|
+
- yard_ext.rb
|
74
220
|
homepage: http://github.com/mharris717/import_everything
|
75
|
-
licenses:
|
76
|
-
|
221
|
+
licenses:
|
222
|
+
- MIT
|
77
223
|
post_install_message:
|
78
|
-
rdoc_options:
|
79
|
-
|
80
|
-
require_paths:
|
224
|
+
rdoc_options: []
|
225
|
+
require_paths:
|
81
226
|
- lib
|
82
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
|
-
requirements:
|
91
|
-
- - ">="
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
segments:
|
227
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
228
|
+
none: false
|
229
|
+
requirements:
|
230
|
+
- - ! '>='
|
231
|
+
- !ruby/object:Gem::Version
|
232
|
+
version: '0'
|
233
|
+
segments:
|
94
234
|
- 0
|
95
|
-
|
235
|
+
hash: 4495039761905964226
|
236
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
237
|
+
none: false
|
238
|
+
requirements:
|
239
|
+
- - ! '>='
|
240
|
+
- !ruby/object:Gem::Version
|
241
|
+
version: '0'
|
96
242
|
requirements: []
|
97
|
-
|
98
243
|
rubyforge_project:
|
99
|
-
rubygems_version: 1.
|
244
|
+
rubygems_version: 1.8.23
|
100
245
|
signing_key:
|
101
246
|
specification_version: 3
|
102
247
|
summary: import everything
|
103
|
-
test_files:
|
104
|
-
- spec/csv_parser_spec.rb
|
105
|
-
- spec/import_everything_spec.rb
|
106
|
-
- spec/junk.rb
|
107
|
-
- spec/preview_spec.rb
|
108
|
-
- spec/spec_helper.rb
|
109
|
-
- spec/sql_parser_spec.rb
|
110
|
-
- spec/sqlite_parser_spec.rb
|
111
|
-
- spec/xml_parser_spec.rb
|
248
|
+
test_files: []
|