jenson 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/jenson +36 -0
- data/lib/jenson/generator.rb +40 -0
- data/lib/jenson/model.rb +20 -0
- data/lib/jenson.rb +22 -0
- data/lib/templates/model.rb.erb +5 -0
- metadata +49 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d95eaa21977a5b51073ed963cb9c9ae7e8d3e85c
|
4
|
+
data.tar.gz: 9d982ecb29d6ed0b0ecb4d528bdf839ae294cb3a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 43ff97b221c02835ba56bbf25aed5835837760dcb4c9ca431130b39a916814be0384b51b5bd34bebc308559671e2e37b09bb191526185d7513449f74e378aafb
|
7
|
+
data.tar.gz: ff8f162f54d6bf2e6c5770a1469076c9db9c9ce1b58ae9e234842d996c45b16dde511b4855d670ac99f4710afc24bdf49f506fc4bc79c38ad385c263dc010f6b
|
data/bin/jenson
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'jenson'
|
3
|
+
require 'optparse'
|
4
|
+
options = {}
|
5
|
+
|
6
|
+
opt_parser = OptionParser.new do |opt|
|
7
|
+
opt.banner = "Usage: jenson model User first_name:string -l ruby"
|
8
|
+
opt.separator ""
|
9
|
+
opt.separator "Commands"
|
10
|
+
opt.separator " name: the name the sherpa should use when addressing you"
|
11
|
+
opt.separator ""
|
12
|
+
opt.separator "Options"
|
13
|
+
|
14
|
+
opt.on("-h","--help","help") do
|
15
|
+
puts opt_parser
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
opt_parser.parse!
|
20
|
+
|
21
|
+
# Parse args
|
22
|
+
generator = ARGV.shift.downcase
|
23
|
+
class_name = ARGV.shift.capitalize
|
24
|
+
fields = []
|
25
|
+
ARGV.each {|arg| fields << arg }
|
26
|
+
|
27
|
+
case generator
|
28
|
+
when 'model'
|
29
|
+
puts "Generating #{generator} : #{class_name}"
|
30
|
+
Jenson.new(generator, class_name, fields)
|
31
|
+
|
32
|
+
when 'controller'
|
33
|
+
puts "Generating #{generator} : #{class_name}"
|
34
|
+
else
|
35
|
+
puts opt_parser
|
36
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'erb'
|
2
|
+
|
3
|
+
class GeneratorFactory
|
4
|
+
def self.create_generator(generator)
|
5
|
+
if generator == 'model'
|
6
|
+
return ModelGenerator.new()
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
class Command
|
12
|
+
def execute(model)
|
13
|
+
end
|
14
|
+
def undo(model)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class ModelGenerator < Command
|
19
|
+
def initialize(gen_dir = 'gen/')
|
20
|
+
@gen_dir = gen_dir
|
21
|
+
f = File.expand_path(File.join(File.dirname(__FILE__), '../templates/model.rb.erb'))
|
22
|
+
@template = File.read(f)
|
23
|
+
end
|
24
|
+
|
25
|
+
def execute(model)
|
26
|
+
@model = model
|
27
|
+
model_file = File.new(self.output_path, 'w+')
|
28
|
+
model_file.write(ERB.new(@model_template).result)
|
29
|
+
end
|
30
|
+
|
31
|
+
def undo(model)
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def output_path
|
38
|
+
gen_dir + @model.name + '.rb'
|
39
|
+
end
|
40
|
+
end
|
data/lib/jenson/model.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
class ModelFactory
|
2
|
+
def self.create_model(generator, name, fields)
|
3
|
+
if generator == 'model'
|
4
|
+
return Model.new(name, fields)
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
class Model
|
10
|
+
|
11
|
+
attr_accessor :name
|
12
|
+
attr_accessor :fields
|
13
|
+
|
14
|
+
def initialize(name, fields)
|
15
|
+
if name.empty? || fields.empty?
|
16
|
+
return
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
data/lib/jenson.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'jenson/generator.rb'
|
4
|
+
require 'jenson/model.rb'
|
5
|
+
|
6
|
+
class Jenson
|
7
|
+
|
8
|
+
attr_accessor :model
|
9
|
+
attr_accessor :generator
|
10
|
+
|
11
|
+
def initialize(generator, class_name, fields)
|
12
|
+
fields = fields.map { |f| {name: f.split(':')[0], type: f.split(':')[-1]} }
|
13
|
+
@model = ModelFactory.create_model(generator, class_name, fields)
|
14
|
+
@generator = GeneratorFactory.create_generator(generator)
|
15
|
+
end
|
16
|
+
|
17
|
+
def generate()
|
18
|
+
puts "Model -> #{@model.class}"
|
19
|
+
puts "Factory built -> #{@generator.class}"
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jenson
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jeff Potter
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2010-09-01 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: ''
|
14
|
+
email: jeff.potter6@gmail.com
|
15
|
+
executables:
|
16
|
+
- jenson
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- bin/jenson
|
21
|
+
- lib/jenson.rb
|
22
|
+
- lib/jenson/generator.rb
|
23
|
+
- lib/jenson/model.rb
|
24
|
+
- lib/templates/model.rb.erb
|
25
|
+
homepage: http://rubygems.org/gems/jenson
|
26
|
+
licenses:
|
27
|
+
- MIT
|
28
|
+
metadata: {}
|
29
|
+
post_install_message:
|
30
|
+
rdoc_options: []
|
31
|
+
require_paths:
|
32
|
+
- lib
|
33
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
requirements: []
|
44
|
+
rubyforge_project:
|
45
|
+
rubygems_version: 2.4.5
|
46
|
+
signing_key:
|
47
|
+
specification_version: 4
|
48
|
+
summary: Code generator similar to rails
|
49
|
+
test_files: []
|