Class: FileSorter

Inherits:
Object
  • Object
show all
Defined in:
lib/theme_importer_rails/file_sorter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(theme_orig) ⇒ FileSorter

Returns a new instance of FileSorter.



18
19
20
# File 'lib/theme_importer_rails/file_sorter.rb', line 18

def initialize(theme_orig)
  @theme_orig = theme_orig
end

Instance Attribute Details

#css_filesObject (readonly)

Returns the value of attribute css_files.



2
3
4
# File 'lib/theme_importer_rails/file_sorter.rb', line 2

def css_files
  @css_files
end

#font_filesObject (readonly)

Returns the value of attribute font_files.



4
5
6
# File 'lib/theme_importer_rails/file_sorter.rb', line 4

def font_files
  @font_files
end

#imagesObject (readonly)

Returns the value of attribute images.



5
6
7
# File 'lib/theme_importer_rails/file_sorter.rb', line 5

def images
  @images
end

#js_filesObject (readonly)

Returns the value of attribute js_files.



3
4
5
# File 'lib/theme_importer_rails/file_sorter.rb', line 3

def js_files
  @js_files
end

Instance Method Details

#compile_and_move_sassObject



125
126
127
128
129
130
131
132
133
# File 'lib/theme_importer_rails/file_sorter.rb', line 125

def compile_and_move_sass
  files_to_compile = []
  @sass_files.each do |sass_file|
    file_name = File.basename(sass_file, '.*')
    files_to_compile << [sass_file, "#{Rails.root}/vendor/assets/imported_theme/stylesheets/#{file_name}.css"]
  end
  Sass::Plugin.options[:cache] = false
  Sass::Plugin.update_stylesheets(files_to_compile)
end

#create_imported_theme_dirObject



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/theme_importer_rails/file_sorter.rb', line 45

def create_imported_theme_dir
  # vendor assets directory for css and js files
  unless Dir.exist?("#{Rails.root}/vendor/assets")
    Dir.mkdir("#{Rails.root}/vendor/assets")
  end

  unless Dir.exist?("#{Rails.root}/vendor/assets/imported_theme")
    Dir.mkdir("#{Rails.root}/vendor/assets/imported_theme")
  end

  #public assets directory for fonts and images
  unless Dir.exist?("#{Rails.root}/public/assets")
    Dir.mkdir("#{Rails.root}/public/assets")
  end

  unless Dir.exist?("#{Rails.root}/public/assets/imported_theme")
    Dir.mkdir("#{Rails.root}/public/assets/imported_theme")
  end
end

#find_cssObject



22
23
24
# File 'lib/theme_importer_rails/file_sorter.rb', line 22

def find_css
  @css_files = Dir.glob("#{@theme_orig}/**/*.css")
end

#find_font_filesObject



37
38
39
# File 'lib/theme_importer_rails/file_sorter.rb', line 37

def find_font_files
  @font_files = Dir.glob("#{@theme_orig}/**/*{#{FONT_EXTENSIONS.join(',')}}")
end

#find_imagesObject



41
42
43
# File 'lib/theme_importer_rails/file_sorter.rb', line 41

def find_images
  @images = Dir.glob("#{@theme_orig}/**/*{#{IMAGE_EXTENSIONS.join(',')}}")
end

#find_jsObject



33
34
35
# File 'lib/theme_importer_rails/file_sorter.rb', line 33

def find_js
  @js_files = Dir.glob("#{@theme_orig}/**/*{.js,.coffee}")
end

#find_sassObject



26
27
28
29
30
31
# File 'lib/theme_importer_rails/file_sorter.rb', line 26

def find_sass
  @sass_files = Dir.glob("#{@theme_orig}/**/*.scss")

  #ignore partials
  @sass_files.delete_if {|file| /^_.*/.match(File.basename(file))}
end

#generate_css_manifestObject



135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# File 'lib/theme_importer_rails/file_sorter.rb', line 135

def generate_css_manifest
  unless @css_files.nil?
    create_imported_theme_dir

    manifest_file = File.open("#{Rails.root}/vendor/assets/imported_theme/imported_theme.css", "w")
    manifest_file.puts("/*")
    @css_files.each do |css_file|
      css_file_name = File.basename(css_file)
      manifest_file.puts("*= require stylesheets/#{css_file_name}")
    end
    @sass_files.each do |sass_file|
      sass_file_name = File.basename(sass_file, '.*')
      manifest_file.puts("*= require stylesheets/#{sass_file_name}.css")
    end
    manifest_file.puts("*/")
    manifest_file.close
  end
end

#generate_js_manifestObject



154
155
156
157
158
159
160
161
162
163
164
165
# File 'lib/theme_importer_rails/file_sorter.rb', line 154

def generate_js_manifest
  unless @js_files.nil?
    create_imported_theme_dir

    manifest_file = File.open("#{Rails.root}/vendor/assets/imported_theme/imported_theme.js", "w")
    @js_files.each do |js_file|
      js_file_name = File.basename(js_file)
      manifest_file.puts("//= require javascripts/#{js_file_name}")
    end
    manifest_file.close
  end
end

#move_css_filesObject



65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/theme_importer_rails/file_sorter.rb', line 65

def move_css_files
  unless @css_files.nil?
    create_imported_theme_dir

    unless Dir.exist?("#{Rails.root}/vendor/assets/imported_theme/stylesheets")
      Dir.mkdir("#{Rails.root}/vendor/assets/imported_theme/stylesheets")
    end

    @css_files.each do |file|
      file_name = File.basename(file)
      FileUtils.cp(file, "#{Rails.root}/vendor/assets/imported_theme/stylesheets/#{file_name}")
    end
  end
end

#move_font_filesObject



95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/theme_importer_rails/file_sorter.rb', line 95

def move_font_files
  unless @font_files.nil?
    create_imported_theme_dir

    unless Dir.exist?("#{Rails.root}/public/assets/imported_theme/fonts")
      Dir.mkdir("#{Rails.root}/public/assets/imported_theme/fonts")
    end

    @font_files.each do |file|
      file_name = File.basename(file)
      FileUtils.cp(file, "#{Rails.root}/public/assets/imported_theme/fonts/#{file_name}")
    end
  end
end

#move_imagesObject



110
111
112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/theme_importer_rails/file_sorter.rb', line 110

def move_images
  unless @images.nil?
    create_imported_theme_dir

    unless Dir.exist?("#{Rails.root}/public/assets/imported_theme/images")
      Dir.mkdir("#{Rails.root}/public/assets/imported_theme/images")
    end

    @images.each do |file|
      file_name = File.basename(file)
      FileUtils.cp(file, "#{Rails.root}/public/assets/imported_theme/images/#{file_name}")
    end
  end
end

#move_js_filesObject



80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/theme_importer_rails/file_sorter.rb', line 80

def move_js_files
  unless @js_files.nil?
    create_imported_theme_dir

    unless Dir.exist?("#{Rails.root}/vendor/assets/imported_theme/javascripts")
      Dir.mkdir("#{Rails.root}/vendor/assets/imported_theme/javascripts")
    end

    @js_files.each do |file|
      file_name = File.basename(file)
      FileUtils.cp(file, "#{Rails.root}/vendor/assets/imported_theme/javascripts/#{file_name}")
    end
  end
end