class StartupFramework::Generators::InstallGenerator

Public Instance Methods

add_assets() click to toggle source
# File lib/generators/startup_framework/install/install_generator.rb, line 89
def add_assets
  copy_file "startup_framework.js",   "app/assets/javascripts/startup_framework.js"
  copy_file "startup_framework.less", "app/assets/stylesheets/startup_framework.less"
                          if options[:flatui]
                                  copy_file "flatui.js", "app/assets/javascripts/flatui.js"
                          end
                          
                          # Handle JS Manifest
        js_manifest = "app/assets/javascripts/application.js"
        if File.exist?(js_manifest)
          content = File.read(js_manifest)
          unless content.match(/require\s+startup_framework/)
            insert_into_file js_manifest, "//= require startup_framework\n", :after => "twitter/bootstrap\n"
                                          if options[:flatui]
                                                  insert_into_file js_manifest, "//= require flatui\n", :after => "twitter/bootstrap\n"
                                          end
          end
          unless content.match(/require\s+jquery.ui.all/)
            unless content.match(/require\s+jquery.ui.effect/)
              insert_into_file js_manifest, "//= require jquery.ui.effect\n", :after => "jquery\n"
            end
            unless content.match(/require\s+jquery.ui.tooltip/)
              insert_into_file js_manifest, "//= require jquery.ui.tooltip\n", :after => "jquery\n"
            end
            unless content.match(/require\s+jquery.ui.spinner/)
              insert_into_file js_manifest, "//= require jquery.ui.spinner\n", :after => "jquery\n"
            end
            unless content.match(/require\s+jquery.ui.slider/)
              insert_into_file js_manifest, "//= require jquery.ui.slider\n", :after => "jquery\n"
            end
            unless content.match(/require\s+jquery.ui.datepicker/)
              insert_into_file js_manifest, "//= require jquery.ui.datepicker\n", :after => "jquery\n"
            end
            unless content.match(/require\s+jquery.ui.button/)
              insert_into_file js_manifest, "//= require jquery.ui.button\n", :after => "jquery\n"
            end
          end
        else
          copy_file "application.js", js_manifest
        end

        # Handle CSS Manifest
        css_manifest = "app/assets/stylesheets/application.css"
        if File.exist?(css_manifest)
          content = File.read(css_manifest)
          unless content.match(/require_tree\s+\./)
            style_require_block = " *= require startup_framework\n"
            insert_into_file css_manifest, style_require_block, :after => "require_self\n"
          end
        else
          copy_file "application.css", "app/assets/stylesheets/application.css"
        end
                          
end
copy_assets() click to toggle source
# File lib/generators/startup_framework/install/install_generator.rb, line 14
def copy_assets
  @gem_assets_dir = File.expand_path("../../../../../", __FILE__)
  @pro_dir = startup_dir
  
  @namespace = "startup-framework"
  @common_files = "common-files"
  @ui_kit = "ui-kit"
                          @flat_ui = "flat-ui"
  
  @fonts_dir = "fonts/#{@namespace}/#{@common_files}/fonts"
  @images_dir = "images/#{@namespace}/#{@common_files}"
  @icons_dir = "#{@images_dir}/icons"
  @img_dir = "#{@images_dir}/img"
  @less_dir = "less/#{@namespace}/#{@common_files}/less"
  @css_dir = "stylesheets/#{@namespace}/#{@common_files}/css"
  @js_dir = "javascripts/#{@namespace}/#{@common_files}/js"
  @target_ui_kit = "less/#{@namespace}/#{@ui_kit}"
  
  FileUtils.mkdir_p File.join(@gem_assets_dir,"app","assets",@fonts_dir)
  FileUtils.mkdir_p File.join(@gem_assets_dir,"app","assets",@images_dir)
  FileUtils.mkdir_p File.join(@gem_assets_dir,"app","assets",@js_dir)
  FileUtils.mkdir_p File.join(@gem_assets_dir,"app","assets",@css_dir)
  FileUtils.mkdir_p File.join(@gem_assets_dir,"app","assets",@less_dir)
  
  @gem_assets_dir = File.join(@gem_assets_dir,"app","assets")

  if File.directory?(File.join(@pro_dir, "Developer"))
    @pro_dir = File.join(@pro_dir, "Developer")
  end
  unless File.directory?(@pro_dir) && File.directory?(File.join(@pro_dir, @ui_kit))
    raise "Invalid Startup Framework directory"
  end

                          #Copy the fonts folder to the fonts dir
  directory File.join(@pro_dir, @common_files,"fonts"),   File.join(@gem_assets_dir, @fonts_dir)
  
                          #Copy the icons folder to the images dir
  directory File.join(@pro_dir, @common_files,"icons"),   File.join(@gem_assets_dir, @icons_dir)
  directory File.join(@pro_dir, @common_files,"img"),   File.join(@gem_assets_dir, @img_dir)
  FileUtils.cp File.join(@pro_dir, @common_files,"css/images/bx_loader.gif"),   File.join(@gem_assets_dir, "images")
  FileUtils.cp File.join(@pro_dir, @common_files,"css/images/controls.png"),   File.join(@gem_assets_dir, "images")
  
                          #Copy the js folder to the js dir
  directory File.join(@pro_dir, @common_files,"js"),   File.join(@gem_assets_dir, @js_dir)
  
                          #Copy the less folder to the less dir
  directory File.join(@pro_dir, @common_files,"less"),   File.join(@gem_assets_dir, @less_dir)
  
  #Copy the ui-kit folder to the gems asset dir
  directory File.join(@pro_dir, @ui_kit),     File.join(@gem_assets_dir, @target_ui_kit)
                          
                          #Copy demo assets
                          directory File.join(@pro_dir,"samples"), File.join(@gem_assets_dir, "demo")
                          
                          #Copy the flat ui directory
                          if options[:flatui]
                                  copy_flatui
                          end
  
  #Remove all non LESS files from ui-kit folder
  
  Dir.glob("#{@gem_assets_dir}/#{@target_ui_kit}/**/*.*") do |file|
    unless file =~ /\.less\Z/
      puts "Deleting file #{File.basename file}"
      FileUtils.rm file, force: true
    end
  end
                          
                          if options[:demo]
                                  copy_demo
                          end
  

end
patch_assets() click to toggle source
# File lib/generators/startup_framework/install/install_generator.rb, line 144
      def patch_assets
        @gem_assets_dir = File.expand_path("../../../../../app/assets/", __FILE__)

        #Replace fonts-path
        gsub_file File.join(@gem_assets_dir, @less_dir, "helper.less"), /\.\.\/fonts\//, "@{startup-basePath}common-files/fonts/"

        
        # replace all urls with asset urls with the exception of data urls
        Dir.glob("#{@gem_assets_dir}/#{@less_dir}/*.less") do |less_file|
          
          if less_file =~ /icon-font\.less\Z/
            gsub_file less_file, /url\((.+?)\)/, 'font-url(\\1)'
          else
            gsub_file less_file, /url\((.+?)\)/, 'image-url(\\1)'
          end
        end
        
        Dir.glob("#{@gem_assets_dir}/#{@target_ui_kit}/**/*.less") do |ui_kit_less_file|
          #replace all files with the exception of price-common.less
          unless ui_kit_less_file =~ /price-common\.less\Z/
            gsub_file ui_kit_less_file, /url\((.+?)\)/, 'image-url(\\1)'
          end
        end
                                
                                
                         Dir.glob("#{@gem_assets_dir}/demo/**/*.html") do |html_file|
                                 # gsub_file html_file, /<img src="img\/.+?>/ do |s|
#              match = /img\/(.+?)"/.match(s)
#              '<%= image_tag "' + match[1] + '" %>'
#           end
         
         gsub_file html_file, /src=\"img\//, "src=\"/assets/img/"
         gsub_file html_file, %r(src="../../), "src=\"/assets/startup-framework/"
                                 
                                 # Remove everything before <body> tag and after 'Load JS', inclusive
         new_file = File.open("#{html_file}.erb", "w")
                                 puts "Creating ERB files"
         include_line = false
         IO.foreach(html_file) do |line|
           include_line = false if line =~ /Placed at the end/

           new_file.write line if include_line

           include_line = true if line =~ /<body>/
         end
         new_file.close
                                 
                         end
                         
                         Dir.glob("#{@gem_assets_dir}/demo/**/*.less") do |less_file|
                                gsub_file less_file, %r(../../../), "/startup-framework/"
        
        insert_into_file less_file, "@import 'startup_framework';\n", :before => "/* header"
        
        f = File.new(less_file, 'r+')
        f.each_line do |line|
          if line.include? 'common-files' or line.include? 'flat-ui'
            # seek back to the beginning of the line.
            f.seek(-line.length, IO::SEEK_CUR)

            # overwrite line with spaces and add a newline char
            f.write(' ' * (line.length - 1))
            f.write("\n")
          end
        end
        f.close
      
                         end
        
                                
                                if options[:flatui]
                                        # switch.less
                # More involved patch because less-rails won't translate when inside ~""
                # Create LESS variable and interpolate into .mask(~"")
                switch_file = File.join(@gem_assets_dir, "less/modules", "switch.less")
                mask_image_url = "@mask-image-url: image-url('switch/mask.png');\n"
                insert_into_file switch_file, mask_image_url, :before => ".has-switch {\n"
                gsub_file switch_file, /url\('\.\.\/images\/.+?\)/, "@{mask-image-url}"
                                end
        # icon-font.less Do it for all less files in common-files/less and ui-kit folder
        #gsub_file File.join(@gem_assets_dir, @less_dir, "icon-font.less"), /url\((.+?)\)/, 'asset-url(\\1)'
      end

Private Instance Methods

copy_flatui() click to toggle source
# File lib/generators/startup_framework/install/install_generator.rb, line 230
def copy_flatui
        puts "Copying flat ui files"
        directory File.join(@pro_dir, @flat_ui,"fonts"),   File.join(@gem_assets_dir, "fonts")
        directory File.join(@pro_dir, @flat_ui,"images"),   File.join(@gem_assets_dir, "images")
        directory File.join(@pro_dir, @flat_ui,"js"),   File.join(@gem_assets_dir, "javascripts")
        directory File.join(@pro_dir, @flat_ui,"less"),   File.join(@gem_assets_dir, "less")
end
generate_demo() click to toggle source
# File lib/generators/startup_framework/install/install_generator.rb, line 238
def generate_demo
        
end