Skip to content

Commit

Permalink
changed over to requires
Browse files Browse the repository at this point in the history
  • Loading branch information
rippinrobr committed Feb 23, 2011
2 parents 48ad9fb + e1fd3c3 commit 094a8a5
Show file tree
Hide file tree
Showing 13 changed files with 80 additions and 81 deletions.
9 changes: 9 additions & 0 deletions features/url_source_to_create_code.feature
Expand Up @@ -16,8 +16,17 @@ Feature: Create Code from a URL Source

Scenarios: valid options
| url | language | service_class_name | model_file_name | model_output_dir | service_file_name | service_output_dir | model_output |
<<<<<<< HEAD
#| http://localhost:8098/riak/era_percentile/1979_AL | ruby | SeasonalEraPercentileService | seasonal_era_percentile.rb | /tmp | seasonal_era_percentile_service.rb | /tmp/ruby/service | src |
#| http://localhost:3000/percentiles/era_season/1979_AL | ruby | SeasonalEraPercentileService | seasonal_era_percentile.rb | /tmp | seasonal_era_percentile_service.rb | /tmp/ruby/service | src |
| http://localhost:3000/teams/2009_SFN | ruby | RosterService | roster.rb | /tmp | roster_service.rb | /tmp/ruby/service | src |
=======
| http://localhost:8098/riak/era_percentile/1979_AL | ruby | SeasonalEraPercentileService | seasonal_era_percentile.rb | /tmp | seasonal_era_percentile_service.rb | /tmp/ruby/service | src |
| http://localhost:3000/percentiles/era_season/1979_AL | ruby | SeasonalEraPercentileService | seasonal_era_percentile.rb | /tmp | seasonal_era_percentile_service.rb | /tmp/ruby/service | src |
| http://localhost:3000/teams/1979_SFN | ruby | RosterService | roster.rb | /tmp/roster | roster_service.rb | /tmp/roster | src |
| http://localhost:3000/seasons/2009 | ruby | SeasonService | season.rb | /tmp/season | season_service.rb | /tmp/season | src |
>>>>>>> release/v0.1.2
| http://localhost:8098/riak/era_percentile/1979_AL | c_sharp | SeasononalEraPercentileService | SeasonalEraPercentile.cs | /tmp | SeasonalEraPercentileService.cs | /tmp | src |
| http://localhost:3000/percentiles/era_season/1979_AL | c_sharp | SeasononalEraPercentileService | SeasonalEraPercentile.cs | /tmp | SeasonalEraPercentileService.cs | /tmp | src |
| http://localhost:3000/teams/1979_SFN | c_sharp | RosterService | Roster.cs | /tmp/roster | RosterService.cs | /tmp/roster | src |
| http://localhost:3000/seasons/2009 | c_sharp | SeasonService | Season.cs | /tmp/season | SeasonService.cs | /tmp/season | src |
2 changes: 1 addition & 1 deletion lib/generator/cmd_line.rb
Expand Up @@ -25,7 +25,7 @@ def run(args=[])
return
end
if(process_args(args))
require File.join(File.dirname(__FILE__), "sources/#{@options[:input_type]}/#{@options[:input_type]}_code_gen")
require "generator/sources/#{@options[:input_type]}/#{@options[:input_type]}_code_gen"

engine = Engine.new @options
engine.create_models unless @options[:model_output_dir].nil?
Expand Down
12 changes: 6 additions & 6 deletions lib/generator/languages/c_sharp/domain_generator.rb
@@ -1,9 +1,9 @@
require_relative '../file_mgr'
require_relative '../../utils/array'
require_relative '../../utils/string.rb'
require_relative 'helpers'
require_relative 'string'
require_relative 'language_settings'
require 'generator/languages/file_mgr'
require 'generator/utils/array'
require 'generator/utils/string.rb'
require 'generator/languages/c_sharp/helpers'
require 'generator/languages/c_sharp/string'
require 'generator/languages/c_sharp/language_settings'

require 'etc'
require 'erb'
Expand Down
2 changes: 1 addition & 1 deletion lib/generator/languages/domain_src_generator.rb
@@ -1,4 +1,4 @@
require_relative '../utils/string'
require 'generator/utils/string'

class GenericDomainSrcGenerator
def initialize(domain_src_settings)
Expand Down
4 changes: 2 additions & 2 deletions lib/generator/languages/file_mgr.rb
@@ -1,5 +1,5 @@
require_relative "../utils/string"
require_relative "../utils/os"
require "generator/utils/string"
require "generator/utils/os"

module FileMgr
def set_output_file_path(output_dir, class_name, file_ext)
Expand Down
2 changes: 1 addition & 1 deletion lib/generator/languages/model_generator.rb
@@ -1,6 +1,6 @@
require 'etc'
require 'erb'
require File.join(File.dirname(__FILE__), 'file_mgr')
require 'generator/languages/file_mgr'

class ModelGenerator
include FileMgr
Expand Down
10 changes: 5 additions & 5 deletions lib/generator/languages/ruby/domain_generator.rb
@@ -1,8 +1,8 @@
require_relative '../../utils/string'
require_relative '../file_mgr'
require_relative 'string'
require_relative 'helpers'
require_relative 'language_settings'
require 'generator/utils/string'
require 'generator/languages/file_mgr'
require 'generator/languages/ruby/string'
require 'generator/languages/ruby/helpers'
require 'generator/languages/ruby/language_settings'
require 'etc'
require 'erb'

Expand Down
6 changes: 3 additions & 3 deletions lib/generator/parsers/read_raw_input.rb
@@ -1,6 +1,6 @@
require_relative '../utils/string'
require File.dirname(__FILE__) + '/record_class'
require File.dirname(__FILE__) + '/property_info'
require 'generator/utils/string'
require 'generator/parsers/record_class'
require 'generator/parsers/property_info'
require 'pathname'

class ReadRawInput
Expand Down
11 changes: 11 additions & 0 deletions lib/generator/parsers/record_class.rb
Expand Up @@ -7,6 +7,17 @@ def initialize(name='')
@create_service_class = true
end

def check_for_classes_to_create
classes = []
@properties.each do |prop|
if prop.data_type == "class" || prop.data_type == "array"
classes << prop
end
end

classes
end

def to_s
["name: #{name}", "create_service_class: #{@create_service_class}"] | properties.each { |p| puts "\t#{p.to_s}" }
end
Expand Down
8 changes: 4 additions & 4 deletions lib/generator/sources/text/text_code_gen.rb
@@ -1,7 +1,7 @@
require_relative "../../models/domain_src_settings"
require_relative "../../parsers/read_raw_input"
require_relative "../../languages/model_generator"
require_relative "../../languages/domain_src_generator"
require "generator/models/domain_src_settings"
require "generator/parsers/read_raw_input"
require "generator/languages/model_generator"
require "generator/languages/domain_src_generator"

module Generator
class Engine
Expand Down
91 changes: 35 additions & 56 deletions lib/generator/sources/url/url_code_gen.rb
@@ -1,10 +1,10 @@
require_relative '../../utils/url_manager'
require_relative '../../parsers/record_class'
require_relative '../../parsers/property_info'
require_relative '../../utils/string'
require_relative '../../languages/model_generator'
require_relative '../../languages/domain_src_generator'
require_relative '../../models/domain_src_settings'
require 'generator/utils/url_manager'
require 'generator/parsers/record_class'
require 'generator/parsers/property_info'
require 'generator/utils/string'
require 'generator/languages/model_generator'
require 'generator/languages/domain_src_generator'
require 'generator/models/domain_src_settings'

module Generator
class Engine
Expand All @@ -16,32 +16,18 @@ def initialize(options, url_mgr = Generator::Utils::UrlManager.new() , output=ST
@output = output
@url_mgr = url_mgr
@model_gen = ModelGenerator.new
@class_definitions = []
@classes_to_create = []
@classes_queue = []

load_parser
end

def create_models
@classes_to_create = get_model_classes_to_create(@res.body)
more_classes_to_create = []
@classes_to_create.each do |cls|
cls.properties.each do |prop|
if prop.data_type == "class" && !@classes_to_create.include?(prop.name)
new_prop_class = RecordClass.new
new_prop_class.name = "#{prop.name}_model"
new_prop_class.create_service_class = false
more_classes_to_create << convert_hash_to_class(prop.unique_content[0], new_prop_class)
end
end
end
@classes_to_create = @classes_to_create | more_classes_to_create
ensure_all_classes_are_queued
@classes_to_create.each { |c| @model_gen.generate(c, @options) }
get_model_classes_to_create(@res.body, @options[:model_class_name])
@classes_queue.each { |q| @model_gen.generate(q, @options) }
end

def create_service_classes
@classes_to_create.each do |cls|
@classes_queue.each do |cls|
if cls.create_service_class
service_class_name = @options[:service_class_name]
service_class_name = cls.name if service_class_name.nil? || service_class_name == ''
Expand All @@ -59,36 +45,28 @@ def parser_name
end

private
def ensure_all_classes_are_queued
more_classes = []
@classes_to_create.each do |c|
c.properties.each do |p|
if p.data_type == "class"
need_to_create_a_class = true
@classes_to_create.each do |c2|
if c2.name == "#{p.name}_model"
need_to_create_a_class = false
break
end
end
if need_to_create_a_class
cls = RecordClass.new
cls.create_service_class = false
cls.name = "#{p.name}_model"
more_classes << convert_hash_to_class(p.unique_content[0], cls)
end
end
end
end

@classes_to_create = @classes_to_create | more_classes
end

def get_model_classes_to_create(data)
def get_model_classes_to_create(data, class_name = nil)
parsed_data = @parser.parse data.gsub(/\\|^\"|\"$/,'')

class_def = convert_hash_to_class parsed_data, RecordClass.new
class_def.name = @options[:model_class_name] unless @options[:model_class_name].nil? || @options[:model_class_name] == ''
class_def.name = class_name unless class_name.nil? || class_name == ''
class_def.create_service_class = @classes_queue.length == 0

check_data_types class_def
@classes_queue << class_def

class_def.check_for_classes_to_create().each do |cls|
cls_name = "#{cls.name}_model"
if cls.unique_content[0].is_a?(Hash)
get_model_classes_to_create(cls.unique_content[0].to_json, cls_name)
else
if !cls.unique_content[0].nil? && !cls.unique_content[0][0].nil?
get_model_classes_to_create(cls.unique_content[0][0].to_json, cls.array_class_name)
else
get_model_classes_to_create("{}", cls.array_class_name)
end
end
end
end

def load_parser
Expand Down Expand Up @@ -120,12 +98,9 @@ def convert_hash_to_class(data, class_def)
end

def check_data_types(class_def)

class_def.properties.each do |prop|
get_property_data_type prop
end

@class_definitions << class_def
end

def get_property_data_type(prop)
Expand All @@ -135,7 +110,7 @@ def get_property_data_type(prop)
prop.data_type = "array"
array_class_definition = create_array_record_class(prop.unique_content[0], "#{prop.name}_model".clean_name)
prop.array_class_name = array_class_definition.name
@class_definitions << array_class_definition
array_class_definition
end
end

Expand All @@ -148,8 +123,12 @@ def create_array_record_class(values, field_name="rec_class")
values[0].keys.each do |k|
vals = []
values.each { |rec| vals << rec[k] }
<<<<<<< HEAD
puts k
arr_rec_class_def.properties << PropertyInfo.new(k.dup.clean_name, k, determine_field_type(vals))
=======
arr_rec_class_def.properties << PropertyInfo.new(k.dup().clean_name, k, determine_field_type(vals))
>>>>>>> release/v0.1.2
end
end

Expand Down
2 changes: 1 addition & 1 deletion spec/generator/out/allstar_txt.rb
@@ -1,5 +1,5 @@
#---------------------------------------------------------------------
# Generated on 2011-02-21 11:42:00 -0500 by rob
# Generated on 2011-02-22 13:21:25 -0500 by rob
# Using Generator 0.1.1
#---------------------------------------------------------------------

Expand Down
2 changes: 1 addition & 1 deletion spec/generator/out/allstar_txt_service.rb
@@ -1,5 +1,5 @@
#---------------------------------------------------------------------
# Generated on 2011-02-21 11:42:00 -0500 by rob
# Generated on 2011-02-22 13:21:25 -0500 by rob
# Using Generator 0.1.1
#---------------------------------------------------------------------
require './allstar_txt'
Expand Down

0 comments on commit 094a8a5

Please sign in to comment.