class AtomicSass::SassGenerator
Public Class Methods
source_paths()
click to toggle source
# File lib/atomic_sass.rb, line 179 def self.source_paths [File.join(File.expand_path(File.dirname(__FILE__)), 'atomic_sass', 'templates')] end
source_root()
click to toggle source
# File lib/atomic_sass.rb, line 175 def self.source_root File.dirname(__FILE__) end
Public Instance Methods
_build_application_sass(entries)
click to toggle source
# File lib/atomic_sass.rb, line 99 def _build_application_sass(entries) ext = settings.sass_syntax create_file("#{settings.source_dir}/application.#{ext}") do entries.map do |entry| _sass_import("#{entry.pluralize}/#{entry}_manifest") end.join("\n") end end
_build_empty_dirs(entries)
click to toggle source
# File lib/atomic_sass.rb, line 108 def _build_empty_dirs(entries) entries.each do |entry| empty_directory("#{settings.source_dir}/#{entry.pluralize}") end end
_build_manifest_entries(entries)
click to toggle source
# File lib/atomic_sass.rb, line 120 def _build_manifest_entries(entries) ext = settings.sass_syntax entries.each do |entry| template("#{entry}_manifest.tt", "#{settings.source_dir}/#{entry.pluralize}/#{entry}_manifest.#{ext}") end end
_compile_sass(watch = false)
click to toggle source
# File lib/atomic_sass.rb, line 88 def _compile_sass(watch = false) ext = settings.sass_syntax if ext == 'sass' ::Sass::Exec::Sass.new(%W[ #{settings.source_dir}/application.#{ext}:#{settings.dest_dir}/application.css ]).parse ::Sass::Exec::Sass.new(%W[ #{settings.source_dir}/application.#{ext}:#{settings.dest_dir}/application.css ]).parse if watch else ::Sass::Exec::Scss.new(%W[ #{settings.source_dir}/application.#{ext}:#{settings.dest_dir}/application.css ]).parse ::Sass::Exec::Scss.new(%W[ #{settings.source_dir}/application.#{ext}:#{settings.dest_dir}/application.css ]).parse if watch end end
_escape_file_path(path)
click to toggle source
# File lib/atomic_sass.rb, line 127 def _escape_file_path(path) nesting_count = path.split('/').length if nesting_count == 0 return '' else return '../' * nesting_count end end
_extract_and_create_dirs(path, prefix)
click to toggle source
# File lib/atomic_sass.rb, line 114 def _extract_and_create_dirs(path, prefix) enclosing_dirs = File.dirname(path) if File.dirname(path) != '.' empty_directory("#{prefix}/#{enclosing_dirs}") if enclosing_dirs return [File.basename(path), enclosing_dirs ? "#{enclosing_dirs}/" : ''] end
_include_atoms(include_types, atoms)
click to toggle source
# File lib/atomic_sass.rb, line 136 def _include_atoms(include_types, atoms) ext = settings.sass_syntax include_types.each do |type, filenames| filenames.each do |filename| file_path, enclosing_dirs = _extract_and_create_dirs(filename, "#{settings.source_dir}/#{type.pluralize}") inject_into_file("#{settings.source_dir}/#{type.pluralize}/#{enclosing_dirs}_#{file_path}.#{ext}", before: "\n//--- END IMPORTS") do atoms.map do |atom| _sass_import("../#{_escape_file_path(enclosing_dirs)}atoms/#{atom}") end.join("\n").prepend("\n") end end end end
_only_file_options()
click to toggle source
# File lib/atomic_sass.rb, line 158 def _only_file_options options.reject { |key, value| key.match /include/ } end
_only_include_options()
click to toggle source
# File lib/atomic_sass.rb, line 162 def _only_include_options filtered_options = options.select { |key, value| key.match /include/ } if filtered_options.length > 0 normalized_hash = {} normalized_hash['molecule'] = filtered_options['include'] if filtered_options['include'] normalized_hash['quark'] = filtered_options['include-quark'] if filtered_options['include-quark'] return normalized_hash else return nil end end
_sass_import(file_path)
click to toggle source
# File lib/atomic_sass.rb, line 150 def _sass_import(file_path) if settings.sass_syntax == 'sass' return "@import #{file_path}" else return "@import \"#{file_path}\";" end end
append_to_manifest(manifest_type, generated_filenames)
click to toggle source
# File lib/atomic_sass.rb, line 67 def append_to_manifest(manifest_type, generated_filenames) ext = settings.sass_syntax unless manifest_type == 'atom' inject_into_file("#{settings.source_dir}/#{manifest_type.pluralize}/#{manifest_type}_manifest.#{ext}", before: "\n//--- END IMPORTS") do generated_filenames.map do |filename| _sass_import(filename) end.join("\n").prepend("\n") end end end
build()
click to toggle source
# File lib/atomic_sass.rb, line 20 def build build_base_structure end
build_base_structure()
click to toggle source
# File lib/atomic_sass.rb, line 78 def build_base_structure entries = %w[ utility quark molecule atom ] manifest_entries = entries.reject { |e| e == 'atom' } empty_directory(settings.source_dir) empty_directory(settings.dest_dir) _build_application_sass(manifest_entries) _build_empty_dirs(entries) _build_manifest_entries(manifest_entries) end
compile()
click to toggle source
# File lib/atomic_sass.rb, line 42 def compile if options[:watch] _compile_sass(true) else _compile_sass end end
create_sass_doc(path, key)
click to toggle source
# File lib/atomic_sass.rb, line 56 def create_sass_doc(path, key) ext = settings.sass_syntax if not key.match /molecule|quark/ create_file("#{path}.#{ext}") else create_file("#{path}.#{ext}") do ["//--- BEGIN IMPORTS", "//--- END IMPORTS", "\n"].join("\n") end end end
generate()
click to toggle source
# File lib/atomic_sass.rb, line 29 def generate _only_file_options.each do |key, values| values.each do |value| file_path, enclosing_dirs = _extract_and_create_dirs(value, "#{settings.source_dir}/#{key.pluralize}") create_sass_doc("#{settings.source_dir}/#{key.pluralize}/#{enclosing_dirs}_#{file_path}", key) end append_to_manifest(key, values) end _include_atoms(_only_include_options, options[:atom]) if _only_include_options && options[:atom] end
init()
click to toggle source
# File lib/atomic_sass.rb, line 15 def init template('settings.tt', '.atomic_sass.yml') end
settings()
click to toggle source
# File lib/atomic_sass.rb, line 52 def settings @settings ||= AtomicSass::Settings.new end