jenson 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -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
@@ -0,0 +1,5 @@
1
+ class <%= model.name %>
2
+
3
+ def
4
+
5
+ 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: []