Class: Traduki::Generator
- Inherits:
-
Object
- Object
- Traduki::Generator
- Defined in:
- lib/traduki/generator.rb
Instance Attribute Summary collapse
-
#garbage ⇒ Object
readonly
Returns the value of attribute garbage.
-
#parser ⇒ Object
readonly
Returns the value of attribute parser.
Instance Method Summary collapse
- #clean ⇒ Object
- #clean_empty_dirs ⇒ Object
- #config?(path) ⇒ Boolean
- #empty?(dir) ⇒ Boolean
- #generate(clean = false) ⇒ Object
-
#initialize ⇒ Generator
constructor
A new instance of Generator.
- #multi_file_mode_scan ⇒ Object
- #need_clean? ⇒ Boolean
- #rmdir_r_empty(dir) ⇒ Object
-
#scan ⇒ Object
DANGEROUS!! MUST call ‘generate` before clean, or all files will be removed!.
- #scan_files_inside ⇒ Object
- #scan_files_outside ⇒ Object
- #single_file_mode_scan ⇒ Object
Constructor Details
Instance Attribute Details
#garbage ⇒ Object (readonly)
Returns the value of attribute garbage.
9 10 11 |
# File 'lib/traduki/generator.rb', line 9 def garbage @garbage end |
#parser ⇒ Object (readonly)
Returns the value of attribute parser.
8 9 10 |
# File 'lib/traduki/generator.rb', line 8 def parser @parser end |
Instance Method Details
#clean ⇒ Object
83 84 85 86 87 88 89 90 91 |
# File 'lib/traduki/generator.rb', line 83 def clean @translations.each do |t| t.clean t.save end @garbage.each { |f| FileUtils.rm_rf f } clean_empty_dirs true end |
#clean_empty_dirs ⇒ Object
66 67 68 69 70 |
# File 'lib/traduki/generator.rb', line 66 def clean_empty_dirs Dir[Traduki.config.langdir + '/*'] .select { |d| File.directory? d } \ .each { |d| rmdir_r_empty d } end |
#config?(path) ⇒ Boolean
93 94 95 96 97 |
# File 'lib/traduki/generator.rb', line 93 def config?(path) p = path.clone p.slice! Traduki.config.langdir p == '/traduki.json' end |
#empty?(dir) ⇒ Boolean
99 100 101 102 103 104 |
# File 'lib/traduki/generator.rb', line 99 def empty?(dir) entries = Dir.entries(dir) flag = true entries.map! { |c| flag = false unless c.start_with? '.' } flag || Dir.empty?(dir) end |
#generate(clean = false) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/traduki/generator.rb', line 17 def generate(clean = false) Traduki.config.languages.each do |lang| trans = Translation[lang] @parser.keys.each do |path, | .each do || trans.add([0], path, [1], [2]) end end trans.clean if clean trans.save end Traduki.config.create_internal_config unless @parser.keys.count.zero? end |
#multi_file_mode_scan ⇒ Object
46 47 48 49 |
# File 'lib/traduki/generator.rb', line 46 def multi_file_mode_scan scan_files_outside scan_files_inside end |
#need_clean? ⇒ Boolean
106 107 108 |
# File 'lib/traduki/generator.rb', line 106 def need_clean? @garbage.count > 0 end |
#rmdir_r_empty(dir) ⇒ Object
72 73 74 75 76 77 78 79 80 81 |
# File 'lib/traduki/generator.rb', line 72 def rmdir_r_empty(dir) if empty? dir FileUtils.rm_rf dir else Dir[dir + '/*'] .select { |d| File.directory? d } \ .each { |d| rmdir_r_empty d } FileUtils.rm_rf dir if empty? dir end end |
#scan ⇒ Object
DANGEROUS!! MUST call ‘generate` before clean, or all files will be removed!
32 33 34 |
# File 'lib/traduki/generator.rb', line 32 def scan single_file_mode_scan end |
#scan_files_inside ⇒ Object
51 52 53 54 55 56 57 58 59 60 |
# File 'lib/traduki/generator.rb', line 51 def scan_files_inside Traduki.config.languages.each do |lang| Dir[Traduki.config.langdir + "/#{lang}/**/*"].each do |path| next if File.directory? path key = path.clone key.slice!(Traduki.config.langdir + "/#{lang}/") @garbage.push path unless @parser.keys.key? key.path end end end |
#scan_files_outside ⇒ Object
62 63 64 |
# File 'lib/traduki/generator.rb', line 62 def scan_files_outside Dir[Traduki.config.langdir + '/*.*'].each { |p| @garbage.push p unless config? p } end |
#single_file_mode_scan ⇒ Object
36 37 38 39 40 41 42 43 44 |
# File 'lib/traduki/generator.rb', line 36 def single_file_mode_scan Dir[Traduki.config.langdir + '/**/*'].each do |path| next if !File.directory?(path) && ( Traduki.config.languages.include?(File.basename(path, '.json')) || File.basename(path, '.json') == 'metadata' ) @garbage.push path unless config? path end end |