Module: Neruda::OrgFileClassMethods
- Included in:
- OrgFile
- Defined in:
- lib/neruda/org_file/class_methods.rb
Overview
This module holds class methods for the OrgFile class.
Instance Method Summary collapse
- #project_for_source(file_name) ⇒ Object
- #slug(title) ⇒ Object
- #source_for_target(file_name) ⇒ Object
- #target_for_source(file_name, project, with_public_folder: true) ⇒ Object
Instance Method Details
#project_for_source(file_name) ⇒ Object
43 44 45 46 47 48 49 50 |
# File 'lib/neruda/org_file/class_methods.rb', line 43 def project_for_source(file_name) # Look for match in each possible sources. The first found wins. Neruda::Config.sources.each do |project| project_relative_path = project['path'].sub(/^#{Dir.pwd}\//, '') return project if file_name.match?(/^#{project_relative_path}\//) end nil end |
#slug(title) ⇒ Object
52 53 54 55 56 |
# File 'lib/neruda/org_file/class_methods.rb', line 52 def slug(title) title.downcase.tr(' ', '-') .encode('ascii', fallback: ->(k) { translit(k) }) .gsub(/[^\w-]/, '').delete_suffix('-') end |
#source_for_target(file_name) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/neruda/org_file/class_methods.rb', line 6 def source_for_target(file_name) # file_name may be frozen... src = file_name.sub(/\.html\z/, '.org') pubfolder = Neruda::Config.settings['public_folder'] src.sub!(/^#{pubfolder}\//, '') # Look for match in each possible sources. The first found wins. Neruda::Config.sources.each do |project| if project['target'] == '.' origin = File.join(project['path'], src) else origin = File.join( project['path'], src.sub(/^#{project['target']}\//, '') ) end return origin if File.exist?(origin) end nil end |
#target_for_source(file_name, project, with_public_folder: true) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/neruda/org_file/class_methods.rb', line 25 def target_for_source(file_name, project, with_public_folder: true) return nil if file_name.nil? # file_name may be frozen... target = file_name.sub(/\.org\z/, '.html').sub(/^#{Dir.pwd}\//, '') if project.nil? subfolder = File.basename(File.dirname(target)) target = File.basename(target) target = "#{subfolder}/#{target}" if subfolder != '.' else project_relative_path = project['path'].sub(/^#{Dir.pwd}\//, '') target.sub!(/^#{project_relative_path}\//, '') target = "#{project['target']}/#{target}" if project['target'] != '.' end return target unless with_public_folder pubfolder = Neruda::Config.settings['public_folder'] "#{pubfolder}/#{target}" end |