jenson 0.0.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.
- 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: []
|