CapicuaGenMelchior 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +11 -11
- data/.rspec +2 -2
- data/.travis.yml +4 -4
- data/CODE_OF_CONDUCT.md +48 -48
- data/CapicuaGenMelchior.gemspec +65 -62
- data/Gemfile +4 -4
- data/Gemfile.lock +30 -30
- data/README.md +59 -41
- data/Rakefile +6 -6
- data/bin/console +14 -14
- data/bin/setup +8 -8
- data/lib/CapicuaGenMelchior/DataAccess/EntitySqlDataAccess/Source/entity_field_schema.rb +70 -70
- data/lib/CapicuaGenMelchior/DataAccess/EntitySqlDataAccess/Source/entity_schema.rb +63 -63
- data/lib/CapicuaGenMelchior/DataAccess/EntitySqlDataAccess/Source/sql_table_parser.rb +171 -171
- data/lib/CapicuaGenMelchior/version.rb +3 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7f76cc4a4517f92d6163e515526d220e891c6e21
|
4
|
+
data.tar.gz: def6610d1ea683624bc2f36e93036691d320aa0b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f99f3b750badb9fc9a89125f512e6830b70d18c818c41dfe024a699823d21df594276f6c53603eb2441d0d68793774b7af39db8bc9d3b73f870570aecbaf02e
|
7
|
+
data.tar.gz: f98138f01eb52cd4f1460aef316141184b984bd7ee9131ecf14793da9d1379c2d313c2222772f38bb25c0d6c88d554a7e78a18d3a1985f7be44138e03ea24a01
|
data/.gitignore
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
/.bundle/
|
2
|
-
/.yardoc
|
3
|
-
/Gemfile.lock
|
4
|
-
/_yardoc/
|
5
|
-
/coverage/
|
6
|
-
/doc/
|
7
|
-
/pkg/
|
8
|
-
/spec/reports/
|
9
|
-
/tmp/
|
10
|
-
/.idea
|
11
|
-
/*.gem
|
1
|
+
/.bundle/
|
2
|
+
/.yardoc
|
3
|
+
/Gemfile.lock
|
4
|
+
/_yardoc/
|
5
|
+
/coverage/
|
6
|
+
/doc/
|
7
|
+
/pkg/
|
8
|
+
/spec/reports/
|
9
|
+
/tmp/
|
10
|
+
/.idea
|
11
|
+
/*.gem
|
data/.rspec
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
--format documentation
|
2
|
-
--color
|
1
|
+
--format documentation
|
2
|
+
--color
|
data/.travis.yml
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
language: ruby
|
2
|
-
rvm:
|
3
|
-
- 2.2.3
|
4
|
-
before_install: gem install bundler -v 1.11.2
|
1
|
+
language: ruby
|
2
|
+
rvm:
|
3
|
+
- 2.2.3
|
4
|
+
before_install: gem install bundler -v 1.11.2
|
data/CODE_OF_CONDUCT.md
CHANGED
@@ -1,49 +1,49 @@
|
|
1
|
-
# Contributor Code of Conduct
|
2
|
-
|
3
|
-
As contributors and maintainers of this project, and in the interest of
|
4
|
-
fostering an open and welcoming community, we pledge to respect all people who
|
5
|
-
contribute through reporting issues, posting feature requests, updating
|
6
|
-
documentation, submitting pull requests or patches, and other activities.
|
7
|
-
|
8
|
-
We are committed to making participation in this project a harassment-free
|
9
|
-
experience for everyone, regardless of level of experience, gender, gender
|
10
|
-
identity and expression, sexual orientation, disability, personal appearance,
|
11
|
-
body size, race, ethnicity, age, religion, or nationality.
|
12
|
-
|
13
|
-
Examples of unacceptable behavior by participants include:
|
14
|
-
|
15
|
-
* The use of sexualized language or imagery
|
16
|
-
* Personal attacks
|
17
|
-
* Trolling or insulting/derogatory comments
|
18
|
-
* Public or private harassment
|
19
|
-
* Publishing other's private information, such as physical or electronic
|
20
|
-
addresses, without explicit permission
|
21
|
-
* Other unethical or unprofessional conduct
|
22
|
-
|
23
|
-
Project maintainers have the right and responsibility to remove, edit, or
|
24
|
-
reject comments, commits, code, wiki edits, issues, and other contributions
|
25
|
-
that are not aligned to this Code of Conduct, or to ban temporarily or
|
26
|
-
permanently any contributor for other behaviors that they deem inappropriate,
|
27
|
-
threatening, offensive, or harmful.
|
28
|
-
|
29
|
-
By adopting this Code of Conduct, project maintainers commit themselves to
|
30
|
-
fairly and consistently applying these principles to every aspect of managing
|
31
|
-
this project. Project maintainers who do not follow or enforce the Code of
|
32
|
-
Conduct may be permanently removed from the project team.
|
33
|
-
|
34
|
-
This code of conduct applies both within project spaces and in public spaces
|
35
|
-
when an individual is representing the project or its community.
|
36
|
-
|
37
|
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
38
|
-
reported by contacting a project maintainer at jbautista@bansi.com.mx. All
|
39
|
-
complaints will be reviewed and investigated and will result in a response that
|
40
|
-
is deemed necessary and appropriate to the circumstances. Maintainers are
|
41
|
-
obligated to maintain confidentiality with regard to the reporter of an
|
42
|
-
incident.
|
43
|
-
|
44
|
-
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
45
|
-
version 1.3.0, available at
|
46
|
-
[http://contributor-covenant.org/version/1/3/0/][version]
|
47
|
-
|
48
|
-
[homepage]: http://contributor-covenant.org
|
1
|
+
# Contributor Code of Conduct
|
2
|
+
|
3
|
+
As contributors and maintainers of this project, and in the interest of
|
4
|
+
fostering an open and welcoming community, we pledge to respect all people who
|
5
|
+
contribute through reporting issues, posting feature requests, updating
|
6
|
+
documentation, submitting pull requests or patches, and other activities.
|
7
|
+
|
8
|
+
We are committed to making participation in this project a harassment-free
|
9
|
+
experience for everyone, regardless of level of experience, gender, gender
|
10
|
+
identity and expression, sexual orientation, disability, personal appearance,
|
11
|
+
body size, race, ethnicity, age, religion, or nationality.
|
12
|
+
|
13
|
+
Examples of unacceptable behavior by participants include:
|
14
|
+
|
15
|
+
* The use of sexualized language or imagery
|
16
|
+
* Personal attacks
|
17
|
+
* Trolling or insulting/derogatory comments
|
18
|
+
* Public or private harassment
|
19
|
+
* Publishing other's private information, such as physical or electronic
|
20
|
+
addresses, without explicit permission
|
21
|
+
* Other unethical or unprofessional conduct
|
22
|
+
|
23
|
+
Project maintainers have the right and responsibility to remove, edit, or
|
24
|
+
reject comments, commits, code, wiki edits, issues, and other contributions
|
25
|
+
that are not aligned to this Code of Conduct, or to ban temporarily or
|
26
|
+
permanently any contributor for other behaviors that they deem inappropriate,
|
27
|
+
threatening, offensive, or harmful.
|
28
|
+
|
29
|
+
By adopting this Code of Conduct, project maintainers commit themselves to
|
30
|
+
fairly and consistently applying these principles to every aspect of managing
|
31
|
+
this project. Project maintainers who do not follow or enforce the Code of
|
32
|
+
Conduct may be permanently removed from the project team.
|
33
|
+
|
34
|
+
This code of conduct applies both within project spaces and in public spaces
|
35
|
+
when an individual is representing the project or its community.
|
36
|
+
|
37
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
38
|
+
reported by contacting a project maintainer at jbautista@bansi.com.mx. All
|
39
|
+
complaints will be reviewed and investigated and will result in a response that
|
40
|
+
is deemed necessary and appropriate to the circumstances. Maintainers are
|
41
|
+
obligated to maintain confidentiality with regard to the reporter of an
|
42
|
+
incident.
|
43
|
+
|
44
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
45
|
+
version 1.3.0, available at
|
46
|
+
[http://contributor-covenant.org/version/1/3/0/][version]
|
47
|
+
|
48
|
+
[homepage]: http://contributor-covenant.org
|
49
49
|
[version]: http://contributor-covenant.org/version/1/3/0/
|
data/CapicuaGenMelchior.gemspec
CHANGED
@@ -1,63 +1,66 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'CapicuaGenMelchior/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = "CapicuaGenMelchior"
|
8
|
-
spec.version = CapicuaGenMelchior::VERSION
|
9
|
-
spec.authors = ["José Luis Bautista Martín"]
|
10
|
-
spec.email = ["joseluisbautista@gmail.com"]
|
11
|
-
spec.date = Date.today.to_s
|
12
|
-
|
13
|
-
|
14
|
-
spec.summary = %q{CapicuaGen es un software que ayuda a la creación automática de
|
15
|
-
sistemas empresariales a través de la definición y ensamblado de
|
16
|
-
diversos generadores de características. Melchior es un conjunto de
|
17
|
-
generadores de caracteristicas de ejemplo pertenecientes a CapicuaGen
|
18
|
-
que se ocupa entre otras cosas de definir las clase para manejar entidades.
|
19
|
-
=end
|
20
|
-
}
|
21
|
-
spec.description = %q{CapicuaGen
|
22
|
-
|
23
|
-
CapicuaGen es un software que ayuda a la creación automática de
|
24
|
-
sistemas empresariales a través de la definición y ensamblado de
|
25
|
-
diversos generadores de características.
|
26
|
-
|
27
|
-
Melchior es un conjunto de generadores de caracteristicas de ejemplo pertenecientes a CapicuaGen
|
28
|
-
que se ocupa entre otras cosas de definir las clase para manejar entidades.
|
29
|
-
|
30
|
-
|
31
|
-
El proyecto fue iniciado por José Luis Bautista Martin, el 6 de enero
|
32
|
-
del 2016.
|
33
|
-
|
34
|
-
Puede modificar y distribuir este software, según le plazca, y usarlo
|
35
|
-
para cualquier fin ya sea comercial, personal, educativo, o de cualquier
|
36
|
-
índole, siempre y cuando incluya este mensaje, y se permita acceso el
|
37
|
-
código fuente.
|
38
|
-
|
39
|
-
Este software es código libre, y se licencia bajo LGPL.
|
40
|
-
|
41
|
-
Para más información consultar http://www.gnu.org/licenses/lgpl.html
|
42
|
-
}
|
43
|
-
|
44
|
-
spec.homepage = "http://desdelashorasextras.blogspot.mx/"
|
45
|
-
spec.licenses = ['LGPL']
|
46
|
-
|
47
|
-
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
|
48
|
-
# delete this section to allow pushing this gem to any host.
|
49
|
-
if spec.respond_to?(:metadata)
|
50
|
-
spec.metadata['allowed_push_host'] = "https://rubygems.org"
|
51
|
-
else
|
52
|
-
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
53
|
-
end
|
54
|
-
|
55
|
-
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|\.idea)/}) }
|
56
|
-
spec.bindir = "exe"
|
57
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
58
|
-
spec.require_paths = ["lib"]
|
59
|
-
|
60
|
-
spec.add_development_dependency "bundler", "~> 1.11"
|
61
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
62
|
-
spec.add_runtime_dependency 'CapicuaGen','>=0.0.1','~> 0.0'
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'CapicuaGenMelchior/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "CapicuaGenMelchior"
|
8
|
+
spec.version = CapicuaGenMelchior::VERSION
|
9
|
+
spec.authors = ["José Luis Bautista Martín"]
|
10
|
+
spec.email = ["joseluisbautista@gmail.com"]
|
11
|
+
spec.date = Date.today.to_s
|
12
|
+
|
13
|
+
|
14
|
+
spec.summary = %q{CapicuaGen es un software que ayuda a la creación automática de
|
15
|
+
sistemas empresariales a través de la definición y ensamblado de
|
16
|
+
diversos generadores de características. Melchior es un conjunto de
|
17
|
+
generadores de caracteristicas de ejemplo pertenecientes a CapicuaGen
|
18
|
+
que se ocupa entre otras cosas de definir las clase para manejar entidades.
|
19
|
+
=end
|
20
|
+
}
|
21
|
+
spec.description = %q{CapicuaGen
|
22
|
+
|
23
|
+
CapicuaGen es un software que ayuda a la creación automática de
|
24
|
+
sistemas empresariales a través de la definición y ensamblado de
|
25
|
+
diversos generadores de características.
|
26
|
+
|
27
|
+
Melchior es un conjunto de generadores de caracteristicas de ejemplo pertenecientes a CapicuaGen
|
28
|
+
que se ocupa entre otras cosas de definir las clase para manejar entidades.
|
29
|
+
|
30
|
+
|
31
|
+
El proyecto fue iniciado por José Luis Bautista Martin, el 6 de enero
|
32
|
+
del 2016.
|
33
|
+
|
34
|
+
Puede modificar y distribuir este software, según le plazca, y usarlo
|
35
|
+
para cualquier fin ya sea comercial, personal, educativo, o de cualquier
|
36
|
+
índole, siempre y cuando incluya este mensaje, y se permita acceso el
|
37
|
+
código fuente.
|
38
|
+
|
39
|
+
Este software es código libre, y se licencia bajo LGPL.
|
40
|
+
|
41
|
+
Para más información consultar http://www.gnu.org/licenses/lgpl.html
|
42
|
+
}
|
43
|
+
|
44
|
+
spec.homepage = "http://desdelashorasextras.blogspot.mx/"
|
45
|
+
spec.licenses = ['LGPL']
|
46
|
+
|
47
|
+
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
|
48
|
+
# delete this section to allow pushing this gem to any host.
|
49
|
+
if spec.respond_to?(:metadata)
|
50
|
+
spec.metadata['allowed_push_host'] = "https://rubygems.org"
|
51
|
+
else
|
52
|
+
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
53
|
+
end
|
54
|
+
|
55
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|\.idea)/}) }
|
56
|
+
spec.bindir = "exe"
|
57
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
58
|
+
spec.require_paths = ["lib"]
|
59
|
+
|
60
|
+
spec.add_development_dependency "bundler", "~> 1.11"
|
61
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
62
|
+
spec.add_runtime_dependency 'CapicuaGen','>=0.0.1','~> 0.0'
|
63
|
+
|
64
|
+
|
65
|
+
spec.required_ruby_version = '>= 2.0.0'
|
63
66
|
end
|
data/Gemfile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
source 'https://rubygems.org'
|
2
|
-
|
3
|
-
# Specify your gem's dependencies in CapicuaGenMelchior.gemspec
|
4
|
-
gemspec
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
# Specify your gem's dependencies in CapicuaGenMelchior.gemspec
|
4
|
+
gemspec
|
data/Gemfile.lock
CHANGED
@@ -1,30 +1,30 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
CapicuaGenMelchior (0.0.
|
5
|
-
CapicuaGen (~> 0.0, >= 0.0.1)
|
6
|
-
|
7
|
-
GEM
|
8
|
-
remote: https://rubygems.org/
|
9
|
-
specs:
|
10
|
-
CapicuaGen (0.0.
|
11
|
-
activesupport (~> 2.3, >= 2.3.18)
|
12
|
-
nokogiri (~> 1.6, >= 1.6.7)
|
13
|
-
uuidtools (~> 2.1, >= 2.1.5)
|
14
|
-
activesupport (2.3.18)
|
15
|
-
mini_portile2 (2.0.0)
|
16
|
-
nokogiri (1.6.7.2-x86-mingw32)
|
17
|
-
mini_portile2 (~> 2.0.0.rc2)
|
18
|
-
rake (10.4.2)
|
19
|
-
uuidtools (2.1.5)
|
20
|
-
|
21
|
-
PLATFORMS
|
22
|
-
x86-mingw32
|
23
|
-
|
24
|
-
DEPENDENCIES
|
25
|
-
CapicuaGenMelchior!
|
26
|
-
bundler (~> 1.11)
|
27
|
-
rake (~> 10.0)
|
28
|
-
|
29
|
-
BUNDLED WITH
|
30
|
-
1.11.2
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
CapicuaGenMelchior (0.0.4)
|
5
|
+
CapicuaGen (~> 0.0, >= 0.0.1)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
CapicuaGen (0.0.4)
|
11
|
+
activesupport (~> 2.3, >= 2.3.18)
|
12
|
+
nokogiri (~> 1.6, >= 1.6.7)
|
13
|
+
uuidtools (~> 2.1, >= 2.1.5)
|
14
|
+
activesupport (2.3.18)
|
15
|
+
mini_portile2 (2.0.0)
|
16
|
+
nokogiri (1.6.7.2-x86-mingw32)
|
17
|
+
mini_portile2 (~> 2.0.0.rc2)
|
18
|
+
rake (10.4.2)
|
19
|
+
uuidtools (2.1.5)
|
20
|
+
|
21
|
+
PLATFORMS
|
22
|
+
x86-mingw32
|
23
|
+
|
24
|
+
DEPENDENCIES
|
25
|
+
CapicuaGenMelchior!
|
26
|
+
bundler (~> 1.11)
|
27
|
+
rake (~> 10.0)
|
28
|
+
|
29
|
+
BUNDLED WITH
|
30
|
+
1.11.2
|
data/README.md
CHANGED
@@ -1,41 +1,59 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
1
|
+
# CapicuaGen
|
2
|
+
|
3
|
+
CapicuaGen es un software que ayuda a la creación automática de
|
4
|
+
sistemas empresariales a través de la definición y ensamblado de
|
5
|
+
diversos generadores de características. Melchior es un conjunto de
|
6
|
+
generadores de caracteristicas de ejemplo pertenecientes a CapicuaGen
|
7
|
+
que se ocupa entre otras cosas de definir las clase para manejar entidades.
|
8
|
+
|
9
|
+
El proyecto fue iniciado por José Luis Bautista Martin, el 6 de enero
|
10
|
+
del 2016.
|
11
|
+
|
12
|
+
Puede modificar y distribuir este software, según le plazca, y usarlo
|
13
|
+
para cualquier fin ya sea comercial, personal, educativo, o de cualquier
|
14
|
+
índole, siempre y cuando incluya este mensaje, y se permita acceso el
|
15
|
+
código fuente.
|
16
|
+
|
17
|
+
Este software es código libre, y se licencia bajo LGPL.
|
18
|
+
|
19
|
+
Para más información consultar http://www.gnu.org/licenses/lgpl.html
|
20
|
+
|
21
|
+
|
22
|
+
## Instalación
|
23
|
+
|
24
|
+
Agrege la siguiente linea al archuivo GemFile de tu aplicación
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
gem 'CapicuaGenMelchior'
|
28
|
+
```
|
29
|
+
|
30
|
+
y ejecute:
|
31
|
+
|
32
|
+
$ bundle
|
33
|
+
|
34
|
+
O instalela manualmente con el siguiente comando
|
35
|
+
|
36
|
+
$ gem install CapicuaGenMelchior
|
37
|
+
|
38
|
+
Para obtener un ambiente completamente funcionar de CapicuaGen, puede ejecutar el siguiente comando
|
39
|
+
|
40
|
+
$ gem install CapicuaGenEssential
|
41
|
+
|
42
|
+
## Uso
|
43
|
+
|
44
|
+
CapicuaGen permite comenzar a trabajar con él desde el mismo momento en que es instalado. Para obtener un ejemplo funcional simplemente ejecutamos el comando CapicuaGen con el parámetro example:
|
45
|
+
|
46
|
+
$ capicuagen example
|
47
|
+
|
48
|
+
Se crearan los siguientes archivos:
|
49
|
+
|
50
|
+
* generator.rb: Ejemplo de un generador de codigo
|
51
|
+
* GemFile: Archivo de configuración de depencias para bundler .
|
52
|
+
* instnwnd.sql: Ejemplo de base de datos NorthWind, para Microsoft SQL Server
|
53
|
+
|
54
|
+
Revise el archivo generator.rb para tener una introducción a CapicuaGen.
|
55
|
+
|
56
|
+
## Contribuir
|
57
|
+
|
58
|
+
Reporte de fallos y solicitudes de pull son bien recibidas en https://github.com/jbautistamartin/CapicuaGen
|
59
|
+
|
data/Rakefile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require "bundler/gem_tasks"
|
2
|
-
require "rspec/core/rake_task"
|
3
|
-
|
4
|
-
RSpec::Core::RakeTask.new(:spec)
|
5
|
-
|
6
|
-
task :default => :spec
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "rspec/core/rake_task"
|
3
|
+
|
4
|
+
RSpec::Core::RakeTask.new(:spec)
|
5
|
+
|
6
|
+
task :default => :spec
|
data/bin/console
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require "bundler/setup"
|
4
|
-
require "CapicuaGenMelchior/melchior"
|
5
|
-
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
8
|
-
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require "pry"
|
11
|
-
# Pry.start
|
12
|
-
|
13
|
-
require "irb"
|
14
|
-
IRB.start
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "CapicuaGenMelchior/melchior"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
#!/usr/bin/env bash
|
2
|
-
set -euo pipefail
|
3
|
-
IFS=$'\n\t'
|
4
|
-
set -vx
|
5
|
-
|
6
|
-
bundle install
|
7
|
-
|
8
|
-
# Do any other automated setup that you need to do here
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
set -euo pipefail
|
3
|
+
IFS=$'\n\t'
|
4
|
+
set -vx
|
5
|
+
|
6
|
+
bundle install
|
7
|
+
|
8
|
+
# Do any other automated setup that you need to do here
|
@@ -1,70 +1,70 @@
|
|
1
|
-
=begin
|
2
|
-
|
3
|
-
CapicuaGen
|
4
|
-
|
5
|
-
CapicuaGen es un software que ayuda a la creación automática de
|
6
|
-
sistemas empresariales a través de la definición y ensamblado de
|
7
|
-
diversos generadores de características.
|
8
|
-
|
9
|
-
El proyecto fue iniciado por José Luis Bautista Martin, el 6 de enero
|
10
|
-
del 2016.
|
11
|
-
|
12
|
-
Puede modificar y distribuir este software, según le plazca, y usarlo
|
13
|
-
para cualquier fin ya sea comercial, personal, educativo, o de cualquier
|
14
|
-
índole, siempre y cuando incluya este mensaje, y se permita acceso el
|
15
|
-
código fuente.
|
16
|
-
|
17
|
-
Este software es código libre, y se licencia bajo LGPL.
|
18
|
-
|
19
|
-
Para más información consultar http://www.gnu.org/licenses/lgpl.html
|
20
|
-
=end
|
21
|
-
|
22
|
-
require_relative '../../../melchior'
|
23
|
-
require 'active_support/core_ext/object/blank'
|
24
|
-
|
25
|
-
module CapicuaGen::Melchior
|
26
|
-
|
27
|
-
# Define una campo de una entidad, puede estar ligado a un campo sql
|
28
|
-
class EntityFieldSchema
|
29
|
-
|
30
|
-
attr_accessor :name, :type, :size, :allow_null, :default_value, :primary_key, :sql_type, :identity, :sql_name
|
31
|
-
|
32
|
-
def initialize (values= {})
|
33
|
-
|
34
|
-
@name = values[:name]
|
35
|
-
@sql_name = values[:sql_name]
|
36
|
-
@type = values[:type]
|
37
|
-
@size = values[:size]
|
38
|
-
@allow_null = false
|
39
|
-
@allow_null = values[:allow_null] if values[:allow_null]
|
40
|
-
@default_value= values[:default_value]
|
41
|
-
@primary_key = false
|
42
|
-
@allow_null = values[:allow_null] if values[:allow_null]
|
43
|
-
@sql_type = values[:sql_type]
|
44
|
-
@identity = false
|
45
|
-
@identity = values[:@identity] if values[:identity]
|
46
|
-
|
47
|
-
# Ajusto el tipo
|
48
|
-
@type = @sql_type unless @type
|
49
|
-
|
50
|
-
# correguir_nombre
|
51
|
-
fix_name
|
52
|
-
|
53
|
-
end
|
54
|
-
|
55
|
-
|
56
|
-
protected
|
57
|
-
# Ajusta el nombre
|
58
|
-
def fix_name
|
59
|
-
return if @name
|
60
|
-
return unless @sql_name
|
61
|
-
@name= @sql_name.clone
|
62
|
-
/\[[^\]]+\]\.\[([^\]]+)\]/.match (@sql_name) { @name= $1 }
|
63
|
-
@name.gsub!("\"", '')
|
64
|
-
@name.gsub!("''", '')
|
65
|
-
@name.gsub!(" ", '')
|
66
|
-
end
|
67
|
-
|
68
|
-
end
|
69
|
-
|
70
|
-
end
|
1
|
+
=begin
|
2
|
+
|
3
|
+
CapicuaGen
|
4
|
+
|
5
|
+
CapicuaGen es un software que ayuda a la creación automática de
|
6
|
+
sistemas empresariales a través de la definición y ensamblado de
|
7
|
+
diversos generadores de características.
|
8
|
+
|
9
|
+
El proyecto fue iniciado por José Luis Bautista Martin, el 6 de enero
|
10
|
+
del 2016.
|
11
|
+
|
12
|
+
Puede modificar y distribuir este software, según le plazca, y usarlo
|
13
|
+
para cualquier fin ya sea comercial, personal, educativo, o de cualquier
|
14
|
+
índole, siempre y cuando incluya este mensaje, y se permita acceso el
|
15
|
+
código fuente.
|
16
|
+
|
17
|
+
Este software es código libre, y se licencia bajo LGPL.
|
18
|
+
|
19
|
+
Para más información consultar http://www.gnu.org/licenses/lgpl.html
|
20
|
+
=end
|
21
|
+
|
22
|
+
require_relative '../../../melchior'
|
23
|
+
require 'active_support/core_ext/object/blank'
|
24
|
+
|
25
|
+
module CapicuaGen::Melchior
|
26
|
+
|
27
|
+
# Define una campo de una entidad, puede estar ligado a un campo sql
|
28
|
+
class EntityFieldSchema
|
29
|
+
|
30
|
+
attr_accessor :name, :type, :size, :allow_null, :default_value, :primary_key, :sql_type, :identity, :sql_name
|
31
|
+
|
32
|
+
def initialize (values= {})
|
33
|
+
|
34
|
+
@name = values[:name]
|
35
|
+
@sql_name = values[:sql_name]
|
36
|
+
@type = values[:type]
|
37
|
+
@size = values[:size]
|
38
|
+
@allow_null = false
|
39
|
+
@allow_null = values[:allow_null] if values[:allow_null]
|
40
|
+
@default_value= values[:default_value]
|
41
|
+
@primary_key = false
|
42
|
+
@allow_null = values[:allow_null] if values[:allow_null]
|
43
|
+
@sql_type = values[:sql_type]
|
44
|
+
@identity = false
|
45
|
+
@identity = values[:@identity] if values[:identity]
|
46
|
+
|
47
|
+
# Ajusto el tipo
|
48
|
+
@type = @sql_type unless @type
|
49
|
+
|
50
|
+
# correguir_nombre
|
51
|
+
fix_name
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
protected
|
57
|
+
# Ajusta el nombre
|
58
|
+
def fix_name
|
59
|
+
return if @name
|
60
|
+
return unless @sql_name
|
61
|
+
@name= @sql_name.clone
|
62
|
+
/\[[^\]]+\]\.\[([^\]]+)\]/.match (@sql_name) { @name= $1 }
|
63
|
+
@name.gsub!("\"", '')
|
64
|
+
@name.gsub!("''", '')
|
65
|
+
@name.gsub!(" ", '')
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
@@ -1,64 +1,64 @@
|
|
1
|
-
=begin
|
2
|
-
|
3
|
-
CapicuaGen
|
4
|
-
|
5
|
-
CapicuaGen es un software que ayuda a la creación automática de
|
6
|
-
sistemas empresariales a través de la definición y ensamblado de
|
7
|
-
diversos generadores de características.
|
8
|
-
|
9
|
-
El proyecto fue iniciado por José Luis Bautista Martin, el 6 de enero
|
10
|
-
del 2016.
|
11
|
-
|
12
|
-
Puede modificar y distribuir este software, según le plazca, y usarlo
|
13
|
-
para cualquier fin ya sea comercial, personal, educativo, o de cualquier
|
14
|
-
índole, siempre y cuando incluya este mensaje, y se permita acceso el
|
15
|
-
código fuente.
|
16
|
-
|
17
|
-
Este software es código libre, y se licencia bajo LGPL.
|
18
|
-
|
19
|
-
Para más información consultar http://www.gnu.org/licenses/lgpl.html
|
20
|
-
=end
|
21
|
-
|
22
|
-
module CapicuaGen::Melchior
|
23
|
-
|
24
|
-
|
25
|
-
# Clase para definir la estructura de una entidad, puede tener propiedades a su vez
|
26
|
-
class EntitySchema
|
27
|
-
|
28
|
-
attr_accessor :name, :fields, :sql_name
|
29
|
-
|
30
|
-
def initialize (values= {})
|
31
|
-
@name = values[:name]
|
32
|
-
@fields= values[:fields]
|
33
|
-
@fields= [] unless @fields
|
34
|
-
|
35
|
-
@sql_name= values[:sql_name]
|
36
|
-
|
37
|
-
# correguir_nombre
|
38
|
-
fix_name
|
39
|
-
end
|
40
|
-
|
41
|
-
# Deuelve los campos primarios
|
42
|
-
def primary_fields
|
43
|
-
return @fields.select { |field| field.primary_key }
|
44
|
-
end
|
45
|
-
|
46
|
-
def non_primary_fields
|
47
|
-
return @fields - primary_fields
|
48
|
-
end
|
49
|
-
|
50
|
-
|
51
|
-
protected
|
52
|
-
# Ajusta el nombre
|
53
|
-
def fix_name
|
54
|
-
return if @name
|
55
|
-
return unless @sql_name
|
56
|
-
@name= @sql_name.clone
|
57
|
-
/\[[^\]]+\]\.\[([^\]]+)\]/.match (@sql_name) { @name= $1 }
|
58
|
-
@name.gsub!("\"", '')
|
59
|
-
@name.gsub!("''", '')
|
60
|
-
@name.gsub!(" ", '')
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
1
|
+
=begin
|
2
|
+
|
3
|
+
CapicuaGen
|
4
|
+
|
5
|
+
CapicuaGen es un software que ayuda a la creación automática de
|
6
|
+
sistemas empresariales a través de la definición y ensamblado de
|
7
|
+
diversos generadores de características.
|
8
|
+
|
9
|
+
El proyecto fue iniciado por José Luis Bautista Martin, el 6 de enero
|
10
|
+
del 2016.
|
11
|
+
|
12
|
+
Puede modificar y distribuir este software, según le plazca, y usarlo
|
13
|
+
para cualquier fin ya sea comercial, personal, educativo, o de cualquier
|
14
|
+
índole, siempre y cuando incluya este mensaje, y se permita acceso el
|
15
|
+
código fuente.
|
16
|
+
|
17
|
+
Este software es código libre, y se licencia bajo LGPL.
|
18
|
+
|
19
|
+
Para más información consultar http://www.gnu.org/licenses/lgpl.html
|
20
|
+
=end
|
21
|
+
|
22
|
+
module CapicuaGen::Melchior
|
23
|
+
|
24
|
+
|
25
|
+
# Clase para definir la estructura de una entidad, puede tener propiedades a su vez
|
26
|
+
class EntitySchema
|
27
|
+
|
28
|
+
attr_accessor :name, :fields, :sql_name
|
29
|
+
|
30
|
+
def initialize (values= {})
|
31
|
+
@name = values[:name]
|
32
|
+
@fields= values[:fields]
|
33
|
+
@fields= [] unless @fields
|
34
|
+
|
35
|
+
@sql_name= values[:sql_name]
|
36
|
+
|
37
|
+
# correguir_nombre
|
38
|
+
fix_name
|
39
|
+
end
|
40
|
+
|
41
|
+
# Deuelve los campos primarios
|
42
|
+
def primary_fields
|
43
|
+
return @fields.select { |field| field.primary_key }
|
44
|
+
end
|
45
|
+
|
46
|
+
def non_primary_fields
|
47
|
+
return @fields - primary_fields
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
protected
|
52
|
+
# Ajusta el nombre
|
53
|
+
def fix_name
|
54
|
+
return if @name
|
55
|
+
return unless @sql_name
|
56
|
+
@name= @sql_name.clone
|
57
|
+
/\[[^\]]+\]\.\[([^\]]+)\]/.match (@sql_name) { @name= $1 }
|
58
|
+
@name.gsub!("\"", '')
|
59
|
+
@name.gsub!("''", '')
|
60
|
+
@name.gsub!(" ", '')
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
64
|
end
|
@@ -1,172 +1,172 @@
|
|
1
|
-
=begin
|
2
|
-
|
3
|
-
CapicuaGen
|
4
|
-
|
5
|
-
CapicuaGen es un software que ayuda a la creación automática de
|
6
|
-
sistemas empresariales a través de la definición y ensamblado de
|
7
|
-
diversos generadores de características.
|
8
|
-
|
9
|
-
El proyecto fue iniciado por José Luis Bautista Martin, el 6 de enero
|
10
|
-
del 2016.
|
11
|
-
|
12
|
-
Puede modificar y distribuir este software, según le plazca, y usarlo
|
13
|
-
para cualquier fin ya sea comercial, personal, educativo, o de cualquier
|
14
|
-
índole, siempre y cuando incluya este mensaje, y se permita acceso el
|
15
|
-
código fuente.
|
16
|
-
|
17
|
-
Este software es código libre, y se licencia bajo LGPL.
|
18
|
-
|
19
|
-
Para más información consultar http://www.gnu.org/licenses/lgpl.html
|
20
|
-
=end
|
21
|
-
|
22
|
-
require_relative '../../../melchior'
|
23
|
-
|
24
|
-
module CapicuaGen::Melchior
|
25
|
-
|
26
|
-
# Analizador de tabla SQL segun su archivo de creacio (DLL)
|
27
|
-
# en este caso se hace a traves de un script exportado directamente de SQL Server
|
28
|
-
# de momento no es posible parsear un script realizado a mano, solo los exportados por
|
29
|
-
# MS SQL Server
|
30
|
-
class SqlTableParse
|
31
|
-
|
32
|
-
public
|
33
|
-
def initialize
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
# Parsea el string y devuelve las tablas encontradas
|
38
|
-
def parse_string(*sql_strings)
|
39
|
-
|
40
|
-
create_table= /(CREATE\s+TABLE[^\(]+)/mi
|
41
|
-
|
42
|
-
tables= []
|
43
|
-
|
44
|
-
sql_strings.each do |s|
|
45
|
-
|
46
|
-
sql_string= s.clone
|
47
|
-
|
48
|
-
while (sql_string.length>0) do
|
49
|
-
|
50
|
-
# Busco la opcion de crear una tabla
|
51
|
-
index= sql_string.index(create_table)
|
52
|
-
|
53
|
-
# Salida
|
54
|
-
break unless index
|
55
|
-
|
56
|
-
# Elimino dentro lo que hay antes del CREATE TABLE
|
57
|
-
sql_string = sql_string[index..sql_string.length]
|
58
|
-
|
59
|
-
# Obtengo el create table completo
|
60
|
-
table_found= find_create_table sql_string
|
61
|
-
|
62
|
-
if table_found
|
63
|
-
table= create_table table_found
|
64
|
-
tables.push table
|
65
|
-
end
|
66
|
-
|
67
|
-
|
68
|
-
# Obtengo el resto de la cadena
|
69
|
-
sql_string= sql_string[table_found.length..sql_string.length]
|
70
|
-
end
|
71
|
-
|
72
|
-
return tables
|
73
|
-
|
74
|
-
|
75
|
-
end
|
76
|
-
|
77
|
-
end
|
78
|
-
|
79
|
-
# Parsea s archivos recibidos
|
80
|
-
def parse_file(*files)
|
81
|
-
|
82
|
-
# Resultado
|
83
|
-
tables_string= []
|
84
|
-
|
85
|
-
files.each do |f|
|
86
|
-
sql_string= File.open(f).read
|
87
|
-
tables_string << sql_string
|
88
|
-
end
|
89
|
-
|
90
|
-
return parse_string(*tables_string)
|
91
|
-
|
92
|
-
end
|
93
|
-
|
94
|
-
|
95
|
-
private
|
96
|
-
|
97
|
-
|
98
|
-
def find_create_table sql_string
|
99
|
-
resultado = ''
|
100
|
-
numero_parentesis= 1
|
101
|
-
|
102
|
-
indexBajo= sql_string.index("(")+1
|
103
|
-
resultado= sql_string[0..indexBajo]
|
104
|
-
|
105
|
-
for n in indexBajo+1..sql_string.length-1 do
|
106
|
-
caracter = sql_string[n]
|
107
|
-
numero_parentesis= numero_parentesis+1 if caracter=="("
|
108
|
-
numero_parentesis= numero_parentesis-1 if caracter==")"
|
109
|
-
resultado = resultado+caracter
|
110
|
-
break if numero_parentesis==0
|
111
|
-
end
|
112
|
-
|
113
|
-
return resultado
|
114
|
-
|
115
|
-
end
|
116
|
-
|
117
|
-
|
118
|
-
def create_table create_table
|
119
|
-
|
120
|
-
|
121
|
-
#obtengo el nombre del campo
|
122
|
-
expresion_tabla= /CREATE\s+TABLE([^\(]+)/mi
|
123
|
-
expresion_tabla.match(create_table)
|
124
|
-
# Nombre en crudo
|
125
|
-
sql_name= $1
|
126
|
-
sql_name.strip!.gsub!("\"", '')
|
127
|
-
|
128
|
-
# Creo la tabla
|
129
|
-
tabla= EntitySchema.new :sql_name => sql_name
|
130
|
-
|
131
|
-
expresion_campo = /\[?(\S+?)\]?\s+\[?(int|n?varchar|n?char|money|real|int|smallint|datetime|bit)\]?\s*(IDENTITY)?\s*(?:\(([^\)]+?)\))?\s*(NOT\s+NULL|NULL)\s*/mi
|
132
|
-
expresion_contraint_primary= /CONSTRAINT\s+\S+\s+PRIMARY[^\(]+?\(([^\)]+)\)/mi
|
133
|
-
|
134
|
-
|
135
|
-
expresion_contraint_primary.match(create_table)
|
136
|
-
llaves_primarias= $1
|
137
|
-
|
138
|
-
|
139
|
-
#obtengo todos los campos
|
140
|
-
create_table.scan (expresion_campo) do |nombre, tipo, identity, longitud, nulo|
|
141
|
-
|
142
|
-
nombre.gsub!('([', '')
|
143
|
-
|
144
|
-
campo= EntityFieldSchema.new :sql_name => nombre, :sql_type => tipo
|
145
|
-
|
146
|
-
case tipo.upcase
|
147
|
-
when "VARCHAR", "CHAR", "NVARCHAR", "NCHAR"
|
148
|
-
campo.size= longitud if longitud
|
149
|
-
end
|
150
|
-
|
151
|
-
campo.allow_null = true if /NULL/i.match(nulo)
|
152
|
-
campo.allow_null = false if /NOT/i.match(nulo)
|
153
|
-
|
154
|
-
#reviso a ver si es llave primaria
|
155
|
-
campo.primary_key= true if llaves_primarias and llaves_primarias.index(campo.name)
|
156
|
-
|
157
|
-
#Agrega información de indentidad.
|
158
|
-
campo.identity = true if identity
|
159
|
-
|
160
|
-
#agrego el campo
|
161
|
-
tabla.fields.push campo
|
162
|
-
end
|
163
|
-
|
164
|
-
|
165
|
-
return tabla
|
166
|
-
|
167
|
-
end
|
168
|
-
|
169
|
-
|
170
|
-
end
|
171
|
-
|
1
|
+
=begin
|
2
|
+
|
3
|
+
CapicuaGen
|
4
|
+
|
5
|
+
CapicuaGen es un software que ayuda a la creación automática de
|
6
|
+
sistemas empresariales a través de la definición y ensamblado de
|
7
|
+
diversos generadores de características.
|
8
|
+
|
9
|
+
El proyecto fue iniciado por José Luis Bautista Martin, el 6 de enero
|
10
|
+
del 2016.
|
11
|
+
|
12
|
+
Puede modificar y distribuir este software, según le plazca, y usarlo
|
13
|
+
para cualquier fin ya sea comercial, personal, educativo, o de cualquier
|
14
|
+
índole, siempre y cuando incluya este mensaje, y se permita acceso el
|
15
|
+
código fuente.
|
16
|
+
|
17
|
+
Este software es código libre, y se licencia bajo LGPL.
|
18
|
+
|
19
|
+
Para más información consultar http://www.gnu.org/licenses/lgpl.html
|
20
|
+
=end
|
21
|
+
|
22
|
+
require_relative '../../../melchior'
|
23
|
+
|
24
|
+
module CapicuaGen::Melchior
|
25
|
+
|
26
|
+
# Analizador de tabla SQL segun su archivo de creacio (DLL)
|
27
|
+
# en este caso se hace a traves de un script exportado directamente de SQL Server
|
28
|
+
# de momento no es posible parsear un script realizado a mano, solo los exportados por
|
29
|
+
# MS SQL Server
|
30
|
+
class SqlTableParse
|
31
|
+
|
32
|
+
public
|
33
|
+
def initialize
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
# Parsea el string y devuelve las tablas encontradas
|
38
|
+
def parse_string(*sql_strings)
|
39
|
+
|
40
|
+
create_table= /(CREATE\s+TABLE[^\(]+)/mi
|
41
|
+
|
42
|
+
tables= []
|
43
|
+
|
44
|
+
sql_strings.each do |s|
|
45
|
+
|
46
|
+
sql_string= s.clone
|
47
|
+
|
48
|
+
while (sql_string.length>0) do
|
49
|
+
|
50
|
+
# Busco la opcion de crear una tabla
|
51
|
+
index= sql_string.index(create_table)
|
52
|
+
|
53
|
+
# Salida
|
54
|
+
break unless index
|
55
|
+
|
56
|
+
# Elimino dentro lo que hay antes del CREATE TABLE
|
57
|
+
sql_string = sql_string[index..sql_string.length]
|
58
|
+
|
59
|
+
# Obtengo el create table completo
|
60
|
+
table_found= find_create_table sql_string
|
61
|
+
|
62
|
+
if table_found
|
63
|
+
table= create_table table_found
|
64
|
+
tables.push table
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
# Obtengo el resto de la cadena
|
69
|
+
sql_string= sql_string[table_found.length..sql_string.length]
|
70
|
+
end
|
71
|
+
|
72
|
+
return tables
|
73
|
+
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
# Parsea s archivos recibidos
|
80
|
+
def parse_file(*files)
|
81
|
+
|
82
|
+
# Resultado
|
83
|
+
tables_string= []
|
84
|
+
|
85
|
+
files.each do |f|
|
86
|
+
sql_string= File.open(f).read
|
87
|
+
tables_string << sql_string
|
88
|
+
end
|
89
|
+
|
90
|
+
return parse_string(*tables_string)
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
|
95
|
+
private
|
96
|
+
|
97
|
+
|
98
|
+
def find_create_table sql_string
|
99
|
+
resultado = ''
|
100
|
+
numero_parentesis= 1
|
101
|
+
|
102
|
+
indexBajo= sql_string.index("(")+1
|
103
|
+
resultado= sql_string[0..indexBajo]
|
104
|
+
|
105
|
+
for n in indexBajo+1..sql_string.length-1 do
|
106
|
+
caracter = sql_string[n]
|
107
|
+
numero_parentesis= numero_parentesis+1 if caracter=="("
|
108
|
+
numero_parentesis= numero_parentesis-1 if caracter==")"
|
109
|
+
resultado = resultado+caracter
|
110
|
+
break if numero_parentesis==0
|
111
|
+
end
|
112
|
+
|
113
|
+
return resultado
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
|
118
|
+
def create_table create_table
|
119
|
+
|
120
|
+
|
121
|
+
#obtengo el nombre del campo
|
122
|
+
expresion_tabla= /CREATE\s+TABLE([^\(]+)/mi
|
123
|
+
expresion_tabla.match(create_table)
|
124
|
+
# Nombre en crudo
|
125
|
+
sql_name= $1
|
126
|
+
sql_name.strip!.gsub!("\"", '')
|
127
|
+
|
128
|
+
# Creo la tabla
|
129
|
+
tabla= EntitySchema.new :sql_name => sql_name
|
130
|
+
|
131
|
+
expresion_campo = /\[?(\S+?)\]?\s+\[?(int|n?varchar|n?char|money|real|int|smallint|datetime|bit)\]?\s*(IDENTITY)?\s*(?:\(([^\)]+?)\))?\s*(NOT\s+NULL|NULL)\s*/mi
|
132
|
+
expresion_contraint_primary= /CONSTRAINT\s+\S+\s+PRIMARY[^\(]+?\(([^\)]+)\)/mi
|
133
|
+
|
134
|
+
|
135
|
+
expresion_contraint_primary.match(create_table)
|
136
|
+
llaves_primarias= $1
|
137
|
+
|
138
|
+
|
139
|
+
#obtengo todos los campos
|
140
|
+
create_table.scan (expresion_campo) do |nombre, tipo, identity, longitud, nulo|
|
141
|
+
|
142
|
+
nombre.gsub!('([', '')
|
143
|
+
|
144
|
+
campo= EntityFieldSchema.new :sql_name => nombre, :sql_type => tipo
|
145
|
+
|
146
|
+
case tipo.upcase
|
147
|
+
when "VARCHAR", "CHAR", "NVARCHAR", "NCHAR"
|
148
|
+
campo.size= longitud if longitud
|
149
|
+
end
|
150
|
+
|
151
|
+
campo.allow_null = true if /NULL/i.match(nulo)
|
152
|
+
campo.allow_null = false if /NOT/i.match(nulo)
|
153
|
+
|
154
|
+
#reviso a ver si es llave primaria
|
155
|
+
campo.primary_key= true if llaves_primarias and llaves_primarias.index(campo.name)
|
156
|
+
|
157
|
+
#Agrega información de indentidad.
|
158
|
+
campo.identity = true if identity
|
159
|
+
|
160
|
+
#agrego el campo
|
161
|
+
tabla.fields.push campo
|
162
|
+
end
|
163
|
+
|
164
|
+
|
165
|
+
return tabla
|
166
|
+
|
167
|
+
end
|
168
|
+
|
169
|
+
|
170
|
+
end
|
171
|
+
|
172
172
|
end
|
@@ -1,3 +1,3 @@
|
|
1
|
-
module CapicuaGenMelchior
|
2
|
-
VERSION = "0.0
|
3
|
-
end
|
1
|
+
module CapicuaGenMelchior
|
2
|
+
VERSION = "0.1.0"
|
3
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: CapicuaGenMelchior
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- José Luis Bautista Martín
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -118,7 +118,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
118
118
|
requirements:
|
119
119
|
- - ">="
|
120
120
|
- !ruby/object:Gem::Version
|
121
|
-
version:
|
121
|
+
version: 2.0.0
|
122
122
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
123
|
requirements:
|
124
124
|
- - ">="
|