Sha256: 42653a5e954a1e028c1ed8ea2a922ff0bb59bcb7ee8d61afc2a1e51e7138aa56

Contents?: true

Size: 1.25 KB

Versions: 2

Compression:

Stored size: 1.25 KB

Contents

module Xmvc
  module Generator
    class Model < Base
      def initialize(name, fields = [])
        super

        @fields = fields
        @gsubs['inst_name']   = name.downcase
        @gsubs['class_name']  = Extlib::Inflection.camelize(name)
        @gsubs['file_name']   = Extlib::Inflection.underscore(name)
        @gsubs['fields']      = fields.collect {|f| field_template(f[0], f[1])}.join(",\n")

        @model_filename = "app/models/#{@gsubs['file_name']}.js"
        @spec_filename  = "spec/models/#{@gsubs['file_name']}.spec.js"
      end

      def generate!
        ensure_no_overwrite! @model_filename, @spec_filename

        ensure_directories_present! "app",  "app/models"
        ensure_directories_present! "spec", "spec/models"
        
        template "Model.js",     @model_filename
        template "ModelSpec.js", @spec_filename
        
        #to_environment(:models, @gsubs["file_name"])
        Xmvc::Settings.add(:models, @gsubs["file_name"])
        
      end

      private
      def field_template(name, type)
        padding = longest_field_length - name.length
        "    {name: '#{name}', #{" " * padding}type: '#{type}'}"
      end

      def longest_field_length
        @fields.collect {|f| f[0].length}.max
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
xmvc-0.1.2 lib/xmvc/generators/model.rb
xmvc-0.1.1 lib/xmvc/generators/model.rb